This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
x86-64 configuration fixes
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: binutils at sources dot redhat dot com
- Date: Thu, 14 Mar 2002 20:55:50 +0100
- Subject: x86-64 configuration fixes
Hi,
the attached patch fixes couple of problems we've encountered when trying
to get -m32 working on 64bit gcc.
If no one complains, I will install it to both branch and mainline.
Thu Mar 14 20:52:39 CET 2002 Jan Hubicka <jh@suse.cz>
Andreas Jaeger <aj@suse.de>
Andreas Schwab <schwab@suse.de>
* cpu-i386.c (bfd_x86_64_arch): Rename to "i386:x86-64"
* configure.tgt (x86_64-*-linux-gnu*): Configure i386 as native.
* elf_x86_64.sh (ARCH): Set to i386:x86-64
set libraries to default to lib64 paths.
Index: bfd/cpu-i386.c
===================================================================
RCS file: /cvs/src/src/bfd/cpu-i386.c,v
retrieving revision 1.8
diff -c -3 -p -r1.8 cpu-i386.c
*** cpu-i386.c 2002/03/13 07:30:45 1.8
--- cpu-i386.c 2002/03/14 10:50:50
*************** const bfd_arch_info_type bfd_x86_64_arch
*** 44,51 ****
8, /* 8 bits in a byte */
bfd_arch_i386,
bfd_mach_x86_64_intel_syntax,
! "x86-64:intel",
! "x86-64:intel",
3,
true,
bfd_default_compatible,
--- 44,51 ----
8, /* 8 bits in a byte */
bfd_arch_i386,
bfd_mach_x86_64_intel_syntax,
! "i386:intel",
! "i386:x86-64:intel",
3,
true,
bfd_default_compatible,
*************** const bfd_arch_info_type bfd_x86_64_arch
*** 75,82 ****
8, /* 8 bits in a byte */
bfd_arch_i386,
bfd_mach_x86_64,
! "x86-64",
! "x86-64",
3,
true,
bfd_default_compatible,
--- 75,82 ----
8, /* 8 bits in a byte */
bfd_arch_i386,
bfd_mach_x86_64,
! "i386",
! "i386:x86-64",
3,
true,
bfd_default_compatible,
Index: ld/configure.tgt
===================================================================
RCS file: /cvs/src/src/ld/configure.tgt,v
retrieving revision 1.82
diff -c -3 -p -r1.82 configure.tgt
*** configure.tgt 2002/02/18 09:38:00 1.82
--- configure.tgt 2002/03/14 10:50:52
*************** i[3456]86-*-linux-gnu*) targ_emul=elf_i3
*** 145,151 ****
;;
x86_64-*-linux-gnu*) targ_emul=elf_x86_64
targ_extra_emuls="elf_i386 i386linux"
! tdir_i386linux=${targ_alias}aout
;;
i[3456]86-*-sysv[45]*) targ_emul=elf_i386 ;;
i[3456]86-*-solaris2*) targ_emul=elf_i386_ldso
--- 145,153 ----
;;
x86_64-*-linux-gnu*) targ_emul=elf_x86_64
targ_extra_emuls="elf_i386 i386linux"
! targ_extra_libpath=elf_i386
! tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
! tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'`
;;
i[3456]86-*-sysv[45]*) targ_emul=elf_i386 ;;
i[3456]86-*-solaris2*) targ_emul=elf_i386_ldso
Index: ld/emulparams/elf_x86_64.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/elf_x86_64.sh,v
retrieving revision 1.5
diff -c -3 -p -r1.5 elf_x86_64.sh
*** elf_x86_64.sh 2001/11/27 19:06:07 1.5
--- elf_x86_64.sh 2002/03/14 10:50:52
*************** OUTPUT_FORMAT="elf64-x86-64"
*** 4,12 ****
TEXT_START_ADDR=0x400000
MAXPAGESIZE=0x100000
NONPAGED_TEXT_START_ADDR=0x400000
! ARCH=i386
MACHINE=
NOP=0x90909090
TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes
NO_SMALL_DATA=yes
--- 4,43 ----
TEXT_START_ADDR=0x400000
MAXPAGESIZE=0x100000
NONPAGED_TEXT_START_ADDR=0x400000
! ARCH="i386:x86-64"
MACHINE=
NOP=0x90909090
TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes
NO_SMALL_DATA=yes
+
+ if [ "x${host}" = "x${target}" ]; then
+ case " $EMULATION_LIBPATH " in
+ *" ${EMULATION_NAME} "*)
+ # Native, and default or emulation requesting LIB_PATH.
+
+ # Linux modify the default library search path to first include
+ # a 64-bit specific directory.
+ case "$target" in
+ x86_64*-linux*)
+ suffix=64 ;;
+ esac
+
+ if [ -n "${suffix}" ]; then
+
+ LIB_PATH=/lib${suffix}:/lib
+ LIB_PATH=${LIB_PATH}:/usr/lib${suffix}:/usr/lib
+ if [ -n "${NATIVE_LIB_DIRS}" ]; then
+ LIB_PATH=${LIB_PATH}:`echo ${NATIVE_LIB_DIRS} | sed s_:_${suffix}:_g`${suffix}:${NATIVE_LIB_DIRS}
+ fi
+ if [ "${libdir}" != /usr/lib ]; then
+ LIB_PATH=${LIB_PATH}:${libdir}${suffix}:${libdir}
+ fi
+ if [ "${libdir}" != /usr/local/lib ]; then
+ LIB_PATH=${LIB_PATH}:/usr/local/lib${suffix}:/usr/local/lib
+ fi
+
+ fi
+ ;;
+ esac
+ fi