GNU LD fails to generate correct ARM Thumb veneer

Aaron P. D'Souza adsouzp@netscape.net
Tue Jul 8 17:12:00 GMT 2008


good morning Nick:

> You try to isolate whether this really is a linker bug.  (It
> certainly sounds like it is).  If you can reproduce the problem
> just using assembler source files then please file a bug report
> with the binutils project (at http://sourceware.org/bugzilla).
> Including a *small* test case will really help.

did some research this morning and was able to finalize all the
information. reports have been filed with GCC Bugzilla,
Mikrocontroller Forum, and Comp.Arch.Embedded.

basically, i found a new error that masks the original error and
that prevents you from finding the original error of zero Interworking
code.

i created sample, simple assembly code for these online reports.

pls see these links for more information:
- GCC Bugzilla Bug 6726
   http://sourceware.org/bugzilla/show_bug.cgi?id=6726

- GCC Bugzilla Bug 6727
   http://sourceware.org/bugzilla/show_bug.cgi?id=6727

- Mikrocontroller.net Forum
   http://en.mikrocontroller.net/topic/158791#699646

- Comp.Arch.Embedded
   http://www.embeddedrelated.com/usenet/embedded/show/96927-1.php

GLOBAL CONDITIONS
if:
- you enable --gc-sections
- you enable Thumb Interworking

PROBLEM 1
- if you do not define program entry point:
   you get the ldlang.c 4275 error

SOLUTION 1
- simply define entry point _start or whatever using --entry if
   required

PROBLEM
- you position another section using --section-start before .text
   using -Ttext: you get ZERO interworking code

SOLUTION
- position .data/other section AFTER .text. place -Ttext before
--section-start
   or -Tdata.

i hope that this is helpful to you.

Aaron
-- 
{tel: +91-20-6526-7076; cell: +91-9970-591-079; fax: +1-800-450-5419}



More information about the Gcc mailing list