(This is a reply to http://lists.nongnu.org/archive/html/simulavr-devel/2011-07/msg00006.html. Savannah's no-name mailinglist browser does not handle references across month boundary.)
> On my System > > avr-objdump --all-headers --disassemble --source --debugging > --syms > experiment.elf > > yields: > > > 00000000 <__vectors>: > 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> > 2: 17 c0 rjmp .+46 ; 0x32 <__bad_interrupt> > 4: 16 c0 rjmp .+44 ; 0x32 <__bad_interrupt> > . > . > . > > 00000026 <__ctors_end>: > 26: 11 24 eor r1, r1 > 28: 1f be out 0x3f, r1 ; 63 > 2a: cf ed ldi r28, 0xDF ; 223 > 2c: cd bf out 0x3d, r28 ; 61 > 2e: 05 d0 rcall .+10 ; 0x3a <main> > 30: 08 c0 rjmp .+16 ; 0x42 <_exit> > > > It looks at least similar, to your output. Moreover the > '<__do_copy_data>' section is missing. > This bugfix is useful for understanding why you have no __do_copy_data routine: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18145 The copying code seems to reside in http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/avr/libgcc.S and appears to be used only if `avr_need_copy_data_p==true' in http://gcc.gnu.org/viewcvs/trunk/gcc/config/avr/avr.c. (The libgcc.S is not rebuild for each project.) I do not know the structure of compiler/assembler. I guess the code gcc/config/avr/avr.c resides in compiler and maybe the compiler is not involved in your asm-only project, therefore the copying code is not added. You might workaround this by copying and implementing your own __do_copy_data: http://www.mail-archive.com/[email protected]/msg02390.html > So, according to you, the problem is, that the linker doesn't copy any > instructions in the binary-file, that initialize the data in the SRAM!? > Is this correct? Correct. > Maybe you have a tip, where to pose this question, to get an answer!? I think people on avr-gcc-list will know better. -- Petr Hluzin _______________________________________________ Simulavr-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/simulavr-devel
