This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ARM thumb-interwork libgcc asm functions have no bx
- To: Giuliano dot Procida at red-m dot com
- Subject: Re: ARM thumb-interwork libgcc asm functions have no bx
- From: Nick Clifton <nickc at cygnus dot com>
- Date: Fri, 4 Aug 2000 15:16:41 -0700
- CC: gcc at gcc dot gnu dot org, Simon dot Gooch at red-m dot com
Hi Giuliano,
: Some of the gcc/libgcc/interwork/*.o use BX, some don't (rm-elf-objdump -d
: $i | grep -q bx && echo $i). The ones that do not use BX seem to all come
: from:
:
: ../egcs-20000619/gcc/config/arm/lib1funcs.asm
It sounds like you have a broken build of libgcc.a.
All the functions in lib1funcs.asm come in two varieties, an ARM
encoded version and a Thumb encoded version. The versions in your
gcc/libgcc/interwork/*.o should all be the Thumb encoded versions not
the ARM encoded ones. (And hence there should be no need for the
linker to generate interworking stubs to switch into ARM mode to call
the _udivsi3 function).
The building of the Thumb version of the lib1funcs.asm functions is
controlled by the presence of the __thumb__ define when the library is
built. I would guess that this value is not being defined for some
reason.
The definition of __thumb__ is normally controlled by the
CPP_ISA_SPEC macro in gcc/config/arm/arm.h which gets added into the
EXTRA_SPECS macro. I would check your spec strings to see if this is
being defined properly.
I hope that this help syou to track down your problem.
Cheers
Nick