This is the mail archive of the crossgcc@sourceware.cygnus.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more infromation.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi Kai, : Trying again, now the binutils-20000116, for arm-elf showed that the : linker still doesn't produce executables which could run under GDB : and the simulator... Can you explain further about what is going wrong here ? : My test executables will become about two times bigger than those : produced with a working linker (990426) Hmm, Have you determined what is getting bigger ? Is it the code, the debug information or something else ? : and the 'readelf -a' shows about them something like : : : So the 'OS/ABI' is a '<unknown: 61>' in the new unworking 'arm-elf' : executables etc. Oops - this was a bug in readelf. I have now checked in a patch to fix this. : Could someone please give some explanation into this? The problem was that older versions of the GNU linker did not correctly implement some of the arm-elf relocs. In particular the old linker had built in knowledge about the length of the execution pipleine on the ARM chips, which was a bad thing. In order to fix this, we had to change the linker and also change the relocs being produced by the assembler, which made binaries produced by the fixed toolchain incompatible with binaries produced by the old toolchain. Since people were (and are) still using the old toolchain we could not just arbitrarily switch over to the new relocs without proving some form of backward compatability. We provided this compatability in two ways. The first was code in BFD to automatically detect binaries produced by the fixed toolchain and so behave correctly. (See the comment in bfd/elf32-arm.h starting at line 1225). This code relies upon using the OSABI field of the ELF e_ident[] array to detect old binaries (value = 0) and new binaries (value = 0x61). The second method was to provide a new, arm-elf specific switch to the linker, -p or --no-pipeline-knowledge, which can be used to specifically tell the linker that it should be using the fixed versions of the relocs. Cheers Nick ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |