Message ID | 4D964B36.3050008@gjlay.de |
---|---|
State | New |
Headers | show |
> -----Original Message----- > From: Georg-Johann Lay [mailto:avr@gjlay.de] > Sent: Friday, April 01, 2011 4:01 PM > To: Georg-Johann Lay > Cc: gcc-patches@gcc.gnu.org; Denis Chertykov; Anatoly Sokolov; Weddington, > Eric > Subject: Re: [Patch,AVR]: Fix PR45263 > > This is a better fix that does not need push/pop and does not increase > numer of instructions. > > r16 takes the role of r20, and the value formerly in r16, > i.e. hh8(__dtors_end resp. __ctors_start) is recreated as needed. > Hi Johann, Have you tested this patch against the test case in bug #45263? Eric
Weddington, Eric schrieb: > >> -----Original Message----- >> From: Georg-Johann Lay [mailto:avr@gjlay.de] >> Sent: Friday, April 01, 2011 4:01 PM >> To: Georg-Johann Lay >> Cc: gcc-patches@gcc.gnu.org; Denis Chertykov; Anatoly Sokolov; Weddington, >> Eric >> Subject: Re: [Patch,AVR]: Fix PR45263 >> >> This is a better fix that does not need push/pop and does not increase >> numer of instructions. >> >> r16 takes the role of r20, and the value formerly in r16, >> i.e. hh8(__dtors_end resp. __ctors_start) is recreated as needed. >> > > Hi Johann, > > Have you tested this patch against the test case in bug #45263? avr-gcc still aborts on building avr-libc as of http://gcc.gnu.org/ml/gcc/2011-04/msg00008.html Using avr-gdb-7.2 to debug with stubs runs on errors and doesn't show me any code... no assembly with "A syntax error in expression, near `0x29c'" in assembly window. Trying to compile with avr-gcc and dwarf crashes avr-gcc. __do_copy_data fails to initialize var1 and var2 (are 0x0). Too much is broken... giving up. Johann
Georg-Johann Lay schrieb: > Weddington, Eric schrieb: >>> -----Original Message----- >>> From: Georg-Johann Lay [mailto:avr@gjlay.de] >>> Sent: Friday, April 01, 2011 4:01 PM >>> To: Georg-Johann Lay >>> Cc: gcc-patches@gcc.gnu.org; Denis Chertykov; Anatoly Sokolov; Weddington, >>> Eric >>> Subject: Re: [Patch,AVR]: Fix PR45263 >>> >>> This is a better fix that does not need push/pop and does not increase >>> numer of instructions. >>> >>> r16 takes the role of r20, and the value formerly in r16, >>> i.e. hh8(__dtors_end resp. __ctors_start) is recreated as needed. >>> >> Hi Johann, >> >> Have you tested this patch against the test case in bug #45263? Tested patch v2 from 2010-04-02 now for atmega2560 on avrtest simulator. In main, var1 and var2 are initialized as expected and anObject.getVal() is 30. Without patch the program hangs. > Using avr-gdb-7.2 to debug with stubs runs on errors and doesn't show > me any code... no assembly with "A syntax error in expression, near > `0x29c'" in assembly window. > Trying to compile with avr-gcc and dwarf crashes avr-gcc. > > __do_copy_data fails to initialize var1 and var2 (are 0x0). Seems atmega2560 is not supported in avr-gdb-7.2 simulator? Same elf fails to initialize .data. Do you know for which targets avr-gdb is supposed to work? Johann
Index: libgcc.S =================================================================== --- libgcc.S (Revision 171857) +++ libgcc.S (Arbeitskopie) @@ -791,22 +791,22 @@ #if defined(__AVR_HAVE_RAMPZ__) __do_global_ctors: ldi r17, hi8(__ctors_start) - ldi r16, hh8(__ctors_start) ldi r28, lo8(__ctors_end) ldi r29, hi8(__ctors_end) - ldi r20, hh8(__ctors_end) + ldi r16, hh8(__ctors_end) rjmp .L__do_global_ctors_start .L__do_global_ctors_loop: sbiw r28, 2 - sbc r20, __zero_reg__ + sbc r16, __zero_reg__ mov_h r31, r29 mov_l r30, r28 - out __RAMPZ__, r20 + out __RAMPZ__, r16 XCALL __tablejump_elpm__ .L__do_global_ctors_start: cpi r28, lo8(__ctors_start) cpc r29, r17 - cpc r20, r16 + ldi r24, hh8(__ctors_start) + cpc r16, r24 brne .L__do_global_ctors_loop #else __do_global_ctors: @@ -832,22 +832,22 @@ #if defined(__AVR_HAVE_RAMPZ__) __do_global_dtors: ldi r17, hi8(__dtors_end) - ldi r16, hh8(__dtors_end) ldi r28, lo8(__dtors_start) ldi r29, hi8(__dtors_start) - ldi r20, hh8(__dtors_start) + ldi r16, hh8(__dtors_start) rjmp .L__do_global_dtors_start .L__do_global_dtors_loop: sbiw r28, 2 - sbc r20, __zero_reg__ + sbc r16, __zero_reg__ mov_h r31, r29 mov_l r30, r28 - out __RAMPZ__, r20 + out __RAMPZ__, r16 XCALL __tablejump_elpm__ .L__do_global_dtors_start: cpi r28, lo8(__dtors_end) cpc r29, r17 - cpc r20, r16 + ldi r24, hh8(__dtors_end) + cpc r16, r24 brne .L__do_global_dtors_loop #else __do_global_dtors: