This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Some bi-arch changes for s390, x86_64 and sparc


Hi!

The genscript.sh changes from May done for ppc targets result in quite messy
SEARCH_DIR statements on elf64-sparc and elf64-x86-64.
Also, s390 was lacking such code altogether (and targ*_selvecs too).
Ok to commit?

2002-10-14  Jakub Jelinek  <jakub@redhat.com>

	* config.bfd (s390-*-linux*): Add targ64_selvecs.
	(s390x-*-linux*): Add targ_selvecs.

	* config.table: Use mh-s390pic for s390x too.

	* emulparams/elf64_sparc.sh (LIB_PATH): Update to match 2002-05-22
	genscript.sh changes.
	* emulparams/elf_x86_64.sh (LIB_PATH): Likewise.
	* emulparams/elf64_s390.sh (LIB_PATH): Set up native 64 bit dirs.

--- bfd/config.bfd.jj	2002-10-14 13:29:05.000000000 +0200
+++ bfd/config.bfd	2002-10-14 13:36:40.000000000 +0200
@@ -915,10 +915,12 @@ case "${targ}" in
 
   s390-*-linux*)
     targ_defvec=bfd_elf32_s390_vec
+    targ64_selvecs=bfd_elf64_s390_vec
     ;;
 #ifdef BFD64
   s390x-*-linux*)
     targ_defvec=bfd_elf64_s390_vec
+    targ_selvecs=bfd_elf32_s390_vec
     ;;
 #endif
 
--- ld/emulparams/elf64_sparc.sh.jj	2002-02-12 15:28:49.000000000 +0100
+++ ld/emulparams/elf64_sparc.sh	2002-10-14 14:55:23.000000000 +0200
@@ -22,36 +22,37 @@ case "$target" in
     ;;
 esac
 
-if [ "x${host}" = "x${target}" ]; then
+# Treat a host that matches the target with the possible exception of "64"
+# and "v7", "v8", "v9" in the name as if it were native.
+if test `echo "$host" | sed -e 's/64//;s/v[789]//'` \
+ = `echo "$target" | sed -e 's/64//;s/v[789]//'`; then
   case " $EMULATION_LIBPATH " in
     *" ${EMULATION_NAME} "*)
-      # Native, and default or emulation requesting LIB_PATH.
+      LIB_PATH=${libdir}
+      for lib in ${NATIVE_LIB_DIRS}; do
+	case :${LIB_PATH}: in
+	  *:${lib}:*) ;;
+	  *) LIB_PATH=${LIB_PATH}:${lib} ;;
+	esac
+      done
 
       # Linux and Solaris modify the default library search path
       # to first include a 64-bit specific directory.  It's put
       # in slightly different places on the two systems.
       case "$target" in
-        sparc*-linux*)
-          suffix=64 ;;
-        sparc*-solaris*)
-          suffix=/sparcv9 ;;
+	sparc*-linux*)
+	  suffix=64 ;;
+	sparc*-solaris*)
+	  suffix=/sparcv9 ;;
       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
-    ;;
+      # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first
+      # on Linux and /lib/sparcv9, /usr/lib/sparcv9 etc. on Solaris.
+      if [ -n "$suffix" ]; then
+	case "$EMULATION_NAME" in
+	  *64*)
+	    LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,$suffix:,g`$LIB_PATH ;;
+	esac
+      fi ;;
   esac
 fi
--- ld/emulparams/elf64_s390.sh.jj	2002-02-27 11:32:30.000000000 +0100
+++ ld/emulparams/elf64_s390.sh	2002-10-14 14:55:00.000000000 +0200
@@ -9,3 +9,33 @@ MACHINE=
 NOP=0x07070707
 TEMPLATE_NAME=elf32
 GENERATE_SHLIB_SCRIPT=yes 
+
+# Treat a host that matches the target with the possible exception of "x"
+# in the name as if it were native.
+if test `echo "$host" | sed -e s/390x/390/` \
+   = `echo "$target" | sed -e s/390x/390/`; then
+  case " $EMULATION_LIBPATH " in
+    *" ${EMULATION_NAME} "*)
+      LIB_PATH=${libdir}
+      for lib in ${NATIVE_LIB_DIRS}; do
+	case :${LIB_PATH}: in
+	  *:${lib}:*) ;;
+	  *) LIB_PATH=${LIB_PATH}:${lib} ;;
+	esac
+      done
+
+      case "$target" in
+	s390*-linux*)
+	  suffix=64 ;;
+      esac
+
+      # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first
+      # on Linux.
+      if [ -n "$suffix" ]; then
+	case "$EMULATION_NAME" in
+	  *64*)
+	    LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,$suffix:,g`$LIB_PATH ;;
+	esac
+      fi ;;
+  esac
+fi
--- ld/emulparams/elf_x86_64.sh.jj	2002-04-03 12:24:43.000000000 +0200
+++ ld/emulparams/elf_x86_64.sh	2002-10-14 15:03:03.000000000 +0200
@@ -15,30 +15,27 @@ NO_SMALL_DATA=yes
 if [ "x${host}" = "x${target}" ]; then
   case " $EMULATION_LIBPATH " in
     *" ${EMULATION_NAME} "*)
-      # Native, and default or emulation requesting LIB_PATH.
+      LIB_PATH=${libdir}
+      for lib in ${NATIVE_LIB_DIRS}; do
+	case :${LIB_PATH}: in
+	  *:${lib}:*) ;;
+	  *) LIB_PATH=${LIB_PATH}:${lib} ;;
+	esac
+      done
 
       # Linux modify the default library search path to first include
       # a 64-bit specific directory.
       case "$target" in
-        x86_64*-linux*)
-          suffix=64 ;;
+	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
-    ;;
+      # Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first.
+      if [ -n "$suffix" ]; then
+	case "$EMULATION_NAME" in
+	  *64*)
+	    LIB_PATH=`echo ${LIB_PATH}: | sed -e s,:,$suffix:,g`$LIB_PATH ;;
+	esac
+      fi ;;
   esac
 fi
--- libiberty/config.table.jj	2002-05-14 11:53:16.000000000 +0200
+++ libiberty/config.table	2002-10-14 15:28:24.000000000 +0200
@@ -39,6 +39,7 @@ if [ "${shared}" = "yes" ]; then
     powerpc*-*-aix*)	;;
     powerpc*-*-*)	frag=mh-ppcpic ;;
     sparc*-*-*)		frag=mh-sparcpic ;;
+    s390*-*-*)		frag=mh-s390pic ;;
     *)			frag=mh-${host_cpu}pic ;;
   esac
   if [ -n "${frag}" ]; then

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]