Query...
Nick Clifton
nickc@cambridge.redhat.com
Thu Apr 19 05:51:00 GMT 2001
Hi Shukla,
> I am generating obj files by using ARM-gcc, gcc-for-PC(intel) and
> ARM-ADS. I am getting difference in the ELF-header, the values of
> EI_PAD of e_ident[] is as follows--
>
> EI_PAD = 0x61 for ARM-gcc and
> EI_PAD = 0x00 for ARM-ADS and PC-gcc.
>
> Can somebody point me what does it signify?
You are looking at an old version of the ELF spec. That field
(e_ident[7]) is now called EI_OSABI, and the EI_PAD field is now two
bytes further on.
The EI_OSABI field is used to distinguish binaries for the same
architecture but which target different Operating Systems and/or
different Application Binary Interfaces. A value of 0 means "default"
or "uninitialised". A value of 0x61 (or 97 in decimal) is defined in
the spec as:
#define ELFOSABI_ARM 97 /* ARM */
In the case of GCC this field is being used to distinguish between
binaries built by old versions of gcc (which set the field to 0)
and new(er) versions of gcc. The older versions did not implement the
ARM ELF ABI correctly, and so the linker has to work around this
problem, provided that it can detect the old binaries.
> Now, if I want to link obj's generated by ARM-ADS with obj generated
> by ARM-gcc, it is not able to link and says format different.
What, precisely, is the error message that you are receiving ?
Cheers
Nick
More information about the Gcc
mailing list