This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I edited the gcc/config/arm/t-arm-elf file. While it does activate the multilib generation process, it also raises an issue : GAS and GCC have different default behaviours, which causes objects to have improper flag set. I use : GNU assembler 031031 20031031 arm-elf-gcc (GCC) 3.3.2 For example, running arm-elf-gcc with no option generates soft floating point code, but as it passes no option to the assembler so the object is flagged as using Hardware FP and the link against such an object / library fails. To overcome this issue, I patched the gcc source to have its default generation option match those of gas. Here is the patch that leads to a full working multilib : diff -urpN gcc-3.3.2/gcc/config/arm/elf.h gcc-3.3.2.patch/gcc/config/arm/elf.h --- gcc-3.3.2/gcc/config/arm/elf.h 2002-11-21 22:29:24.000000000 +0100 +++ gcc-3.3.2.patch/gcc/config/arm/elf.h 2003-12-27 11:54:50.000000000 +0100 @@ -111,7 +111,7 @@ Boston, MA 02111-1307, USA. */ #ifndef MULTILIB_DEFAULTS #define MULTILIB_DEFAULTS \ - { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } + { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } #endif diff -urpN gcc-3.3.2/gcc/config/arm/t-arm-elf gcc-3.3.2.patch/gcc/config/arm/t-arm-elf --- gcc-3.3.2/gcc/config/arm/t-arm-elf 2002-05-08 17:01:13.000000000 +0200 +++ gcc-3.3.2.patch/gcc/config/arm/t-arm-elf 2003-12-27 11:55:26.000000000 +0100 @@ -25,23 +25,23 @@ MULTILIB_OPTIONS = marm/mthumb MULTILIB_DIRNAMES = arm thumb MULTILIB_EXCEPTIONS = -# MULTILIB_OPTIONS += mlittle-endian/mbig-endian -# MULTILIB_DIRNAMES += le be -# MULTILIB_EXCEPTIONS = -# MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle -# -# MULTILIB_OPTIONS += mhard-float/msoft-float -# MULTILIB_DIRNAMES += fpu soft -# MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* -# +MULTILIB_OPTIONS += mlittle-endian/mbig-endian +MULTILIB_DIRNAMES += le be +MULTILIB_EXCEPTIONS = +MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle + +MULTILIB_OPTIONS += mhard-float/msoft-float +MULTILIB_DIRNAMES += fpu soft +MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* + # MULTILIB_OPTIONS += mapcs-32/mapcs-26 # MULTILIB_DIRNAMES += 32bit 26bit # MULTILIB_EXCEPTIONS += *mthumb/*mapcs-26* -# -# MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork -# MULTILIB_DIRNAMES += normal interwork -# MULTILIB_EXCEPTIONS += *mapcs-26/*mthumb-interwork* -# + +MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork +MULTILIB_DIRNAMES += normal interwork +MULTILIB_EXCEPTIONS += *mapcs-26/*mthumb-interwork* + # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore # MULTILIB_DIRNAMES += elf under # A more elegant way would be to have gcc pass the options to gas even when they aren't specified on the command line. If I use the -msoft-float switch on the command line, the -mno-fpu swicth is passed to the assembler and everything just works fine. Why not passing that switch to gas even if not specified on the command line ? ----- Arnaud Zanetti. ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |