This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GNU LD fails to generate correct ARM Thumb veneer
- From: "Aaron P. D'Souza" <adsouzp at netscape dot net>
- To: Nick Clifton <nickc at redhat dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 08 Jul 2008 22:34:53 +0530
- Subject: Re: GNU LD fails to generate correct ARM Thumb veneer
- References: <48723B4C.9060102@netscape.net> <48725572.4090303@redhat.com>
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}