gcc 4.4.0 arm/thumb interwork _from_arm bad stub generation
Miguel Angel
miguelangel@ajo.es
Sat Jun 13 21:02:00 GMT 2009
Hello, I hope I'm writting to the right list,
I'm having a problem with gcc 4.4.0 cross compiler from IA32 to
ARM7TDMI in embedded
environments (newlib) with ARM/THUMB interworking.
Everything has worked fine in my tests until I tried to make use
of the libc, after
doing that, some parts of the "_from_arm" generated stubs for
interworking got broken/
overwritten/ ?? at linking time. Also the function attributes change
from "thunk" to "noreturn".
But it doesn't happen to all of the _from_arm stubs, only some of them.
If you have any hints about where to look to solve this it or whom
to ask , that would be great.
Thanks in advance,
Miguel Angel
Correctly generated (from main.elf)
.text:00003CA4 ; =============== S U B R O U T I N E
=======================================
.text:00003CA4
.text:00003CA4 ; Attributes: thunk
.text:00003CA4
.text:00003CA4 __memcpy_from_arm ;
CODE XREF: HandleClassRequest+38 p
.text:00003CA4 00 C0 9F E5 LDR R12, =(memcpy+1)
.text:00003CA8 1C FF 2F E1 BX R12
.text:00003CA8 ;
---------------------------------------------------------------------------
.text:00003CAC 25 3C 00 00 off_3CAC DCD memcpy+1 ;
DATA XREF: __memcpy_from_arm r
.text:00003CAC ; End of function __memcpy_from_arm
.text:00003CAC
.text:00003CB0
.text:00003CB0 ; =============== S U B R O U T I N E
=======================================
.text:00003CB0
.text:00003CB0 ; Attributes: thunk
.text:00003CB0
.text:00003CB0 ____umodsi3_from_arm ;
CODE XREF: print_integer:loc_383C p
.text:00003CB0 00 C0 9F E5 LDR R12, =(__umodsi3+1)
.text:00003CB4 1C FF 2F E1 BX R12
.text:00003CB4 ;
---------------------------------------------------------------------------
.text:00003CB8 59 3B 00 00 off_3CB8 DCD __umodsi3+1 ;
DATA XREF: ____umodsi3_from_arm r
.text:00003CB8 ; End of function ____umodsi3_from_arm
.text:00003CB8
.text:00003CBC
.text:00003CBC ; =============== S U B R O U T I N E
=======================================
.text:00003CBC
.text:00003CBC ; Attributes: thunk
.text:00003CBC
.text:00003CBC ____udivsi3_from_arm ;
CODE XREF: print_integer+AC p
.text:00003CBC 00 C0 9F E5 LDR R12, =(__udivsi3+1)
.text:00003CC0 1C FF 2F E1 BX R12
.text:00003CC0 ;
---------------------------------------------------------------------------
.text:00003CC4 CD 3A 00 00 off_3CC4 DCD __udivsi3+1 ;
DATA XREF: ____udivsi3_from_arm r
.text:00003CC4 ; End of function ____udivsi3_from_arm
.text:00003CC4
Incorrectly generated (from main.elf)
.text:0000514C ; =============== S U B R O U T I N E
=======================================
.text:0000514C
.text:0000514C ; Attributes: noreturn
.text:0000514C
.text:0000514C __memcpy_from_arm ;
CODE XREF: HandleClassRequest+38 p
.text:0000514C 07 00 A0 01 MOVEQ R0, R7
.text:00005150 0A 20 A0 03 MOVEQ R2, #0xA
.text:00005154 01 30 A0 03 MOVEQ R3, #1
.text:00005154 ; End of function __memcpy_from_arm
.text:00005154
.text:00005158
.text:00005158 ; =============== S U B R O U T I N E
=======================================
.text:00005158
.text:00005158 ; Attributes: noreturn
.text:00005158
.text:00005158 ____umodsi3_from_arm ;
CODE XREF: print_integer:loc_4CE4 p
.text:00005158 15 00 00 0A BEQ 0x51B4
.text:0000515C 78 00 53 E3 CMP R3, #0x78
.text:00005160 04 10 96 04 LDREQ R1, [R6],#4
.text:00005160 ; End of function ____umodsi3_from_arm
.text:00005160
.text:00005164
.text:00005164 ; =============== S U B R O U T I N E
=======================================
.text:00005164
.text:00005164 ; Attributes: noreturn
.text:00005164
.text:00005164 ____udivsi3_from_arm ;
CODE XREF: print_integer+AC p
.text:00005164 07 00 A0 01 MOVEQ R0, R7
.text:00005168 10 20 A0 03 MOVEQ R2, #0x10
.text:0000516C 0F 00 00 0A BEQ 0x51B0
.text:0000516C ; End of function ____udivsi3_from_arm
--
Miguel Angel Ajo Pelayo
http://www.nbee.es
+34 91 120 1798
+34 636 52 25 69
skype: ajoajoajo
--
Miguel Angel Ajo Pelayo
http://www.nbee.es
+34 91 120 1798
+34 636 52 25 69
skype: ajoajoajo
More information about the Gcc-help
mailing list