hurd-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

binutils porting


From: Roland McGrath
Subject: binutils porting
Date: Thu, 1 Nov 2001 16:03:59 -0800
User-agent: SEMI/1.13.7 (Awazu) CLIME/1.13.6 (中 ノ庄) Emacs/20.7 (i386-redhat-linux-gnu) MULE/4.0 (HANANOEN)

That was pretty painless (of course I'm only assuming it actually works,
but I had no trouble building cross-tools for the ppc-gnu target).  It was
so easy that I decided to just go through those three files for all the
-gnu* targets.  I just changed all the -linux* and -linux-gnu* patterns to
-gnu* so they will match both linux-gnu and gnu.  I think this is the right
approach for binutils: we want GNU/Hurd native tools to support the same
formats that are supported on GNU/Linux.  I don't see any downside to this
off hand.  All the Linux targets use ELF as the primary format, and there
is no harm in building in the support for obsolete formats once used with
Linux too.  A few of the CPUs (but not i?86, powerpc, or mips--the only
ones Hurd has ever supported heretofore) use special linux variants of the
ELF format code instead of the generic ELF format code for that CPU.  I
don't know what the details of these are or what they mean.  But I tend to
think that whatever the details, we'll always want to use on GNU/Hurd the
same ELF format details for a particular CPU that GNU/Linux is using.

What do you think?


Index: bfd/config.bfd
===================================================================
RCS file: /cvs/src/src/bfd/config.bfd,v
retrieving revision 1.71
diff -b -u -r1.71 config.bfd
--- bfd/config.bfd 2001/10/31 09:50:05 1.71
+++ bfd/config.bfd 2001/11/01 23:52:30
@@ -80,7 +80,7 @@
     targ_defvec=ecoffalpha_little_vec
     targ_selvecs=bfd_elf64_alpha_vec
     ;;
-  alpha*-*-linux-gnu* | alpha*-*-elf*)
+  alpha*-*-gnu* | alpha*-*-elf*)
     targ_defvec=bfd_elf64_alpha_vec
     targ_selvecs=ecoffalpha_little_vec
     ;;
@@ -94,7 +94,7 @@
     targ_defvec=bfd_elf64_ia64_aix_little_vec
     targ_selvecs="bfd_elf64_ia64_aix_big_vec bfd_efi_app_ia64_vec"
     ;;
-  ia64*-*-freebsd* | ia64*-*-linux-gnu* | ia64*-*-elf*)
+  ia64*-*-freebsd* | ia64*-*-gnu* | ia64*-*-elf*)
     targ_defvec=bfd_elf64_ia64_little_vec
     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
     ;;
@@ -160,11 +160,11 @@
     targ_defvec=bfd_elf32_littlearm_vec
     targ_selvecs=bfd_elf32_bigarm_vec
     ;;
-  armeb-*-elf | arm*b-*-linux-gnu*)
+  armeb-*-elf | arm*b-*-gnu*)
     targ_defvec=bfd_elf32_bigarm_vec
     targ_selvecs=bfd_elf32_littlearm_vec
     ;;
-  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | 
arm*-*-uclinux*)
+  arm-*-elf | arm-*-freebsd* | arm*-*-gnu* | arm*-*-conix* | arm*-*-uclinux*)
     targ_defvec=bfd_elf32_littlearm_vec
     targ_selvecs=bfd_elf32_bigarm_vec
     ;;
@@ -282,7 +282,7 @@
     ;;
 
 #ifdef BFD64
-  hppa*64*-*-linux-gnu*)
+  hppa*64*-*-gnu*)
     targ_defvec=bfd_elf64_hppa_linux_vec
     targ_selvecs=bfd_elf64_hppa_vec
     ;;
@@ -293,7 +293,7 @@
     ;;
 #endif
 
-  hppa*-*-linux-gnu*)
+  hppa*-*-gnu*)
     targ_defvec=bfd_elf32_hppa_linux_vec
     targ_selvecs=bfd_elf32_hppa_vec
     ;;
@@ -385,7 +385,7 @@
     targ_selvecs=bfd_elf32_i386_vec
     targ_underscore=yes
     ;;
-  i[3456]86-*-linux-gnu*)
+  i[3456]86-*-gnu*)
     targ_defvec=bfd_elf32_i386_vec
     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
     ;;
@@ -394,7 +394,7 @@
     targ_defvec=bfd_elf64_x86_64_vec
     targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
     ;;
-  x86_64-*-linux-gnu*)
+  x86_64-*-gnu*)
     targ_defvec=bfd_elf64_x86_64_vec
     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
     ;;
@@ -403,9 +403,6 @@
     targ_defvec=i386lynx_coff_vec
     targ_selvecs=i386lynx_aout_vec
     ;;
-  i[3456]86-*-gnu*)
-    targ_defvec=bfd_elf32_i386_vec
-    ;;
   i[3456]86-*-mach* | i[3456]86-*-osf1mk*)
     targ_defvec=i386mach3_vec
     targ_cflags=-DSTAT_FOR_EXEC
@@ -546,14 +543,9 @@
     targ_selvecs=bfd_elf32_m68k_vec
     targ_underscore=yes
     ;;
-  m68*-*-linux-gnu*)
-    targ_defvec=bfd_elf32_m68k_vec
-    targ_selvecs=m68klinux_vec
-    ;;
   m68*-*-gnu*)
     targ_defvec=bfd_elf32_m68k_vec
-    # targ_selvecs=m68kmach3_vec
-    # targ_cflags=-DSTAT_FOR_EXEC
+    targ_selvecs=m68klinux_vec
     ;;
   m68*-*-lynxos*)
     targ_defvec=m68klynx_coff_vec
@@ -695,19 +687,19 @@
     targ_defvec=bfd_elf32_bigmips_vec
     targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec 
bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec"
     ;;
-  mips64*el-*-linux*)
+  mips64*el-*-gnu*)
     targ_defvec=bfd_elf32_tradlittlemips_vec
     targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec 
bfd_elf64_tradbigmips_vec"
     ;;
-  mips*el-*-linux*)
+  mips*el-*-gnu*)
     targ_defvec=bfd_elf32_tradlittlemips_vec
     targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec 
bfd_elf64_tradbigmips_vec ecoff_little_vec ecoff_big_vec"
     ;;
-  mips64*-*-linux*)
+  mips64*-*-gnu*)
     targ_defvec=bfd_elf32_tradbigmips_vec
     targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec 
bfd_elf64_tradlittlemips_vec"
     ;;
-  mips*-*-linux*)
+  mips*-*-gnu*)
     targ_defvec=bfd_elf32_tradbigmips_vec
     targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec 
bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
     ;;
@@ -766,7 +758,7 @@
     targ_defvec=rs6000coff64_vec
     targ_selvecs=rs6000coff_vec
     ;;
-  powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux*)
+  powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-gnu*)
     targ_defvec=bfd_elf64_powerpc_vec
     targ_selvecs="bfd_elf64_powerpcle_vec bfd_elf32_powerpc_vec 
bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec"
     ;;
@@ -776,8 +768,8 @@
     ;;
 #endif
   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
-  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
-  powerpc-*-chorus* | powerpc-*-vxworks*)
+  powerpc-*-solaris2* | powerpc-*-gnu* | \
+  powerpc-*-rtems* | powerpc-*-chorus* | powerpc-*-vxworks*)
     targ_defvec=bfd_elf32_powerpc_vec
     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
@@ -790,8 +782,8 @@
     targ_selvecs="nlm32_powerpc_vec rs6000coff_vec"
     ;;
   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
-  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
-  powerpcle-*-rtems*)
+  powerpcle-*-solaris2* | powerpcle-*-gnu* | \
+  powerpcle-*-vxworks* | powerpcle-*-rtems*)
     targ_defvec=bfd_elf32_powerpcle_vec
     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
@@ -802,23 +794,23 @@
     targ_selvecs="bfd_powerpcle_pei_vec bfd_powerpc_pei_vec 
bfd_powerpcle_pe_vec bfd_powerpc_pe_vec"
     ;;
 
-  s390-*-linux*)
+  s390-*-gnu*)
     targ_defvec=bfd_elf32_s390_vec
     ;;
 #ifdef BFD64
-  s390x-*-linux*)
+  s390x-*-gnu*)
     targ_defvec=bfd_elf64_s390_vec
     ;;
 #endif
 
-  sh-*-linux*)
+  sh-*-gnu*)
     targ_defvec=bfd_elf32_shblin_vec
     targ_selvecs=bfd_elf32_shlin_vec
     ;;
-  sh*eb-*-linux*)
+  sh*eb-*-gnu*)
     targ_defvec=bfd_elf32_shblin_vec
     ;;
-  sh*-*-linux*)
+  sh*-*-gnu*)
     targ_defvec=bfd_elf32_shlin_vec
     ;;
 
@@ -858,7 +850,7 @@
     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
     targ_underscore=yes
     ;;
-  sparc-*-linux-gnu*)
+  sparc-*-gnu*)
     targ_defvec=bfd_elf32_sparc_vec
     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
     ;;
@@ -901,7 +893,7 @@
     targ_defvec=sunos_big_vec
     targ_underscore=yes
     ;;
-  sparc64-*-linux-gnu*)
+  sparc64-*-gnu*)
     targ_defvec=bfd_elf64_sparc_vec
     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
     ;;
Index: gas/configure.in
===================================================================
RCS file: /cvs/src/src/gas/configure.in,v
retrieving revision 1.82
diff -b -u -r1.82 configure.in
--- gas/configure.in 2001/10/31 09:50:08 1.82
+++ gas/configure.in 2001/11/01 23:52:31
@@ -376,6 +376,7 @@
                            *)    AC_MSG_ERROR(GNU/Linux must be configured big 
endian) ;;
                            esac
                            ;;
+      ppc-*-gnu*)          fmt=elf ;;
       ppc-*-solaris*)      fmt=elf
                            if test ${this_target} = $target; then
                                AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
Index: ld/configure.tgt
===================================================================
RCS file: /cvs/src/src/ld/configure.tgt,v
retrieving revision 1.66
diff -b -u -r1.66 configure.tgt
--- ld/configure.tgt 2001/10/31 09:50:09 1.66
+++ ld/configure.tgt 2001/11/01 23:52:31
@@ -54,14 +54,14 @@
                        tdir_elf32_sparc=`echo ${targ_alias} | sed -e 
's/aout//'`
                        tdir_sun4=sparc-sun-sunos4
                        ;;
-sparc64-*-linux-gnu*)  targ_emul=elf64_sparc
+sparc64-*-gnu*)                targ_emul=elf64_sparc
                        targ_extra_emuls="elf32_sparc sparclinux sun4"
                        targ_extra_libpath=elf32_sparc
                        tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
                        tdir_sparclinux=${tdir_elf32_sparc}aout
                        tdir_sun4=sparc-sun-sunos4
                        ;;
-sparc*-*-linux-gnu*)   targ_emul=elf32_sparc
+sparc*-*-gnu*)         targ_emul=elf32_sparc
                        targ_extra_emuls="sparclinux elf64_sparc sun4"
                        targ_extra_libpath=elf64_sparc
                        tdir_sparclinux=${targ_alias}aout
@@ -101,7 +101,7 @@
 i960-*-elf*)           targ_emul=elf32_i960 ;;
 ia64-*-elf*)           targ_emul=elf64_ia64 ;;
 ia64-*-freebsd*)       targ_emul=elf64_ia64 ;;
-ia64-*-linux*)         targ_emul=elf64_ia64 ;;
+ia64-*-gnu*)           targ_emul=elf64_ia64 ;;
 ia64-*-aix*)           targ_emul=elf64_aix ;;
 m32r-*-*)              targ_emul=m32relf ;;
 m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf 
@@ -113,7 +113,7 @@
 m68*-ericsson-ose)     targ_emul=sun3 ;;
 m68*-apple-aux*)       targ_emul=m68kaux ;;
 *-tandem-none)         targ_emul=st2000 ;;
-i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
+i370-*-elf* | i370-*-gnu*) targ_emul=elf32i370 ;;
 i[3456]86-*-vsta)      targ_emul=vsta ;;
 i[3456]86-go32-rtems*) targ_emul=i386go32 ;;
 i[3456]86-*-go32)      targ_emul=i386go32 ;;
@@ -135,11 +135,11 @@
                        tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
                        ;;
 i[3456]86-*-linux*oldld)       targ_emul=i386linux; targ_extra_emuls=elf_i386 
;;
-i[3456]86-*-linux-gnu*)        targ_emul=elf_i386
+i[3456]86-*-gnu*)      targ_emul=elf_i386
                        targ_extra_emuls=i386linux
                        tdir_i386linux=${targ_alias}aout
                        ;;
-x86_64-*-linux-gnu*)   targ_emul=elf_x86_64
+x86_64-*-gnu*)         targ_emul=elf_x86_64
                        targ_extra_emuls="elf_i386 i386linux"
                        tdir_i386linux=${targ_alias}aout
                        ;;
@@ -202,10 +202,10 @@
 arm-*-elf)             targ_emul=armelf ;;
 arm9e-*-elf)           targ_emul=armelf ;;
 arm-*-oabi)            targ_emul=armelf_oabi ;;
-arm*-*-linux-gnu*)     targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
+arm*-*-gnu*)           targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
 arm*-*-uclinux*)       targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
 arm*-*-conix*)         targ_emul=armelf ;;
-thumb-*-linux-gnu* | thumb-*-uclinux*) targ_emul=armelf_linux; 
targ_extra_emuls=armelf ;;
+thumb-*-gnu* | thumb-*-uclinux*)       targ_emul=armelf_linux; 
targ_extra_emuls=armelf ;;
 strongarm-*-coff)      targ_emul=armcoff ;;
 strongarm-*-elf)       targ_emul=armelf ;;
 thumb-*-coff)          targ_emul=armcoff ;;
@@ -228,15 +228,15 @@
                        targ_emul=h8500
                        targ_extra_emuls="h8500s h8500b h8500m h8500c"
                        ;;
-sh-*-linux*)
+sh-*-gnu*)
                        targ_emul=shelf_linux
                        targ_extra_emuls=shlelf_linux
                        targ_extra_libpath=shelf_linux
                        ;;
-sh*eb-*-linux*)
+sh*eb-*-gnu*)
                        targ_emul=shelf_linux
                        ;;
-sh*-*-linux*)
+sh*-*-gnu*)
                        targ_emul=shlelf_linux
                        ;;
 sh-*-elf* | sh-*-rtemself*)
@@ -257,7 +257,7 @@
                        targ_extra_emuls=m68kelf
                        tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
                        ;;
-m68k-*-linux-gnu*)     targ_emul=m68kelf
+m68k-*-gnu*)           targ_emul=m68kelf
                        targ_extra_emuls=m68klinux
                        tdir_m68klinux=`echo ${targ_alias} | sed -e 
's/linux/linuxaout/'`
                        ;;
@@ -268,9 +268,9 @@
 m68*-*-psos*)          targ_emul=m68kpsos ;;
 m68*-*-rtemscoff*)     targ_emul=m68kcoff ;;
 m68*-*-rtems*)         targ_emul=m68kelf ;;
-hppa*64*-*-linux-gnu*) targ_emul=hppa64linux ;;
+hppa*64*-*-gnu*)       targ_emul=hppa64linux ;;
 hppa*64*-*)            targ_emul=elf64hppa ;;
-hppa*-*-linux-gnu*)    targ_emul=hppalinux ;;
+hppa*-*-gnu*)  targ_emul=hppalinux ;;
 hppa*-*-*elf*)         targ_emul=hppaelf ;;
 hppa*-*-lites*)                targ_emul=hppaelf ;;
 hppa*-*-rtems*)                targ_emul=hppaelf ;;
@@ -301,10 +301,10 @@
 mips*-*-rtems*)                targ_emul=elf32ebmip ;;
 mips*el-*-vxworks*)    targ_emul=elf32elmip ;;
 mips*-*-vxworks*)      targ_emul=elf32ebmip ;;
-mips*el-*-linux-gnu*)  targ_emul=elf32ltsmip
+mips*el-*-gnu*)                targ_emul=elf32ltsmip
                        targ_extra_emuls="elf32btsmip elf64ltsmip elf64btsmip"
                        ;;
-mips*-*-linux-gnu*)    targ_emul=elf32btsmip
+mips*-*-gnu*)          targ_emul=elf32btsmip
                        targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip"
                        ;;
 mips*-*-lnews*)                targ_emul=mipslnews ;;
@@ -321,7 +321,7 @@
 alpha*-*-linuxecoff*)  targ_emul=alpha targ_extra_emuls=elf64alpha
                        tdir_elf64alpha=`echo ${targ_alias} | sed -e 
's/ecoff//'`
                        ;;
-alpha*-*-linux-gnu*)   targ_emul=elf64alpha targ_extra_emuls=alpha
+alpha*-*-linux*)       targ_emul=elf64alpha targ_extra_emuls=alpha
                        tdir_alpha=`echo ${targ_alias} | sed -e 
's/linux/linuxecoff/'`
                        ;;
 alpha*-*-osf*)         targ_emul=alpha ;;
@@ -340,7 +340,7 @@
                        targ_extra_libpath=elf32ppc;
                        tdir_elf32ppcsim=`echo ${targ_alias} | sed -e 
's/ppc/ppcsim/'`
                        ;;
-powerpc*-*-linux*)
+powerpc*-*-gnu* | powerpc-*-gnu*)
        case "${targ}" in
        *64*)   targ_emul=elf64ppc
                targ_extra_emuls="elf32ppclinux elf32ppc elf32ppcsim" ;;
@@ -390,8 +390,8 @@
 mcore-*-pe)            targ_emul=mcorepe ;
                        targ_extra_ofiles="deffilep.o pe-dll.o" ;;
 mcore-*-elf)           targ_emul=elf32mcore ;;
-s390x-*-linux*)         targ_emul=elf64_s390 ;;
-s390-*-linux*)          targ_emul=elf_s390 ;;
+s390x-*-gnu*)         targ_emul=elf64_s390 ;;
+s390-*-gnu*)          targ_emul=elf_s390 ;;
 *-*-ieee*)             targ_emul=vanilla ;;
 
 *)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]