This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: ARM/Thumb Interwork
- From: "Bhattacharya, Soubhik" <soubhik_bhattacharya at mentorg dot com>
- To: Richard dot Earnshaw at arm dot com
- Cc: "Bhattacharya, Soubhik" <soubhik_bhattacharya at mentor dot com>, crossgcc at sources dot redhat dot com, binutils at sources dot redhat dot com
- Date: Wed, 29 Oct 2003 16:22:52 +0530
- Subject: Re: ARM/Thumb Interwork
- Organization: Mentor Graphics
- References: <200310291026.h9TAQiE20521@pc960.cambridge.arm.com>
what about the functions that have a mix of arm/thumb? is there a
general rule to distinguish between arm/thumb code within such functions?
examples of such functions are
1. a function compiled with -mcallee-super-interworking
2. __<arm_func>_from_thumb
is there any other kind of function that can have mix of arm/thumb?
in case of 1, the function is marked as arm, and the thumb code begins
with a label of the form '.real_start_of<funcname>'.
in case of 2, the function is marked as thumb, and arm code begins with
a label of the form '__<arm_function_to_be_called>_change_to_arm'.
both the labels have type STT_NOTYPE in symtab. so is it the label name
that is being used to distinguish between arm/thumb? if yes, is there
any other label name that is used for this purpose?
the numeric value of STT_THUMB_FUNC is 13, right?
soubhik.
Richard Earnshaw wrote:
hi all,
i'm working on a tool that reads and analyzes arm/thumb elf files
produced by gcc. to do this i need to be able to distinguish between arm
and thumb code fragments.
arm eabi 2.0 extends generic elf standard to specify how to distinguish
between arm and thumb code fragments. however, it seems that the cross
gcc that i have does not follow arm eabi 2.0. so what is the convention
that gcc follows and how to learn about it?
with the help of 'objdump', i cud see that calls to arm functions from
thumb code and vice versa is supported thru special wrapper functions
(__<func>_from_thumb and __<func>_from_arm). this technique will not
work for a function having a mix of arm and thumb code. are such
functions supported? what happens if a relocatable object is generated
with -mcallee-super-interworking?
GNU tools currently mark Thumb function symbols with type STT_THUMB_FUNC.
I'm hoping that we will be able to migrate the GNU tools over to the new
ARM ABI specs, but it's going to be a fair amount of work.
R.
--
-0-1-2-3-4-5-6-7-8-9-0-1-2-3-4-5-6-7
Soubhik Bhattacharya
Member Technical Staff
Mentor Graphics
Hyderabad, India.
-0-1-2-3-4-5-6-7-8-9-0-1-2-3-4-5-6-7