This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: ARM thumb-interwork libgcc asm functions have no bx


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]