This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: section attribute of compound literals


On 09/10/2018 10:46 PM, Jason A. Donenfeld wrote:
Hello,

I'd like to have a compound literal exist inside a certain linker
section. However, it doesn't appear to work as I'd like:

#define __stuffdata __attribute__((__section__("stuff")))
const u8 works[] __stuffdata = { 0x1, 0x2, 0x3, 0x4 };
const u8 *breaks = (const u8[] __stuffdata){ 0x1, 0x2, 0x3, 0x4 };

Attribute section applies to symbols not to types, so you can't use it in a cast. In order to access data in another section, we need an address for it, and symbols have an address, but types do not. The compound literal could have an address, but we don't have a way to attach attributes to compound literals.

Since your testcase already has a symbol in the right section, you could just use that to initialize breaks.
const u8 *breaks = works;
This means defining a bunch of extra symbols, but is a potential solution to your problem.

Jim


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]