x86-64 configuration fixes

Jan Hubicka hubicka@ucw.cz
Thu Mar 14 11:55:00 GMT 2002


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



More information about the Binutils mailing list