From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Clifton To: MNShukla Cc: gcc Subject: Re: Query... Date: Thu, 19 Apr 2001 05:51:00 -0000 Message-id: References: <3ADEBD3D.EE537BDA@cirrus.stpp.soft.net> X-SW-Source: 2001-04/msg00919.html 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