Re: Array size depending on symbol address
- From: usenet@xxxxxxx
- Date: 29 Nov 2005 21:30:24 GMT
Skarmander <invalid@xxxxxxxxxxxxxx> wrote:
> usenet@xxxxxxx wrote:
>> Hello,
>>
>> I am running my code on an embedded platform without OS. I have defined some
>> data in a section called .eeprom. The section is defined by the linker
>> script and starts at address zero. The symbol __eeprom_end is defined by the
>> linker script as well, and lies at the end of this section. The address of
>> __eeprom_end is thus equal to the number of bytes in the .eeprom section.
>>
>> My problem : I want to declare an array in .bss with the same size of this
>> section. My naive approch was :
>>
>> extern void *_eeprom;
>> char eeprom_shadow[(int)&_eeprom_end];
>>
>> This fails miserably, ofcourse : the compiler doesn't know the address of
>> __eeprom before the linker is done, so it can not declare the array.
>>
>> Is there a trick to allocate the memory for this array at compile time ?
>
> Your identifiers are all over each other. Is _eeprom the address of the
> section .eeprom? Is _eeprom_end a typo or intended to be the same as
> __eeprom_end? What is __eeprom with two underscores?
Yes, definitely all over eachother, very confusing, I'm sorry. It should
read '__eeprom_end' everywhere.
> Any reason why you can't have the linker declare a section .eeprom_shadow of
> equal size and use the address of that? Indexing would work the same; the
> only restriction is that you still don't know the size at compile time, but
> that shouldn't be too much of a problem, since you'd have __eeprom_end (or
> _eeprom_end) available at runtime.
Yes, having the linker create another section should work ofcourse, thanks
for the hint,
--
:wq
^X^Cy^K^X^C^C^C^C
.
- References:
- Array size depending on symbol address
- From: usenet
- Re: Array size depending on symbol address
- From: Skarmander
- Array size depending on symbol address
- Prev by Date: Re: sizeof a union
- Next by Date: Re: More questions on realloc - Thanks
- Previous by thread: Re: Array size depending on symbol address
- Next by thread: C Interpreter and sizeof operator
- Index(es):
Relevant Pages
|