That's because .initX sections *are* located after .progmem etc. You want to have a look at the default linker scripts, and probably want to place your experimental stuff into .vectors (which would probably be sort of obvious if you had a look at the original vectors table source in gcrt1.S).
JW ----- Original Message --------------- >In the case where a size-limited program is only using one interrupt >(this is "usbtiny" on an ATtiny2313, and avr-gcc 4.3.2), is there a >good way to get an "abbreviated" vector table instead of having >vectors for everything? > >Assuming not, I figured I'd supress the normal gcc init files >(-nostdlib -nostartfiles) and create my own vector table: >extern void __vector_1(void); >void myinit(void) __attribute__((naked)) __attribute__ ((section (".init1"))); >void myinit(void) >{ > asm volatile( > " rjmp main\n" > " rjmp __vector_1"); >} > >This seems to work OK, except that data defined with PROGMEM seems to >get put in my .elf file ahead of the .init1 code. >How come? Any way around that? I tired used a section .init9 >attribute on the data instead of PROGMEM, but that doesn't seem to do >what I want either (leaves it in the data section...) > >Thanks >Bill W > >(short program that shows the problem attached. Compile with "avr-gcc >-nostdlib -g -mmcu=attiny2313 -nostartfiles -o foo.elf foo.c" >(Yes, I know that this isn't a correct program as-is. That's not the >question.)) _______________________________________________ AVR-libc-dev mailing list AVR-libc-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/avr-libc-dev