From c7b44b0425dc1a4ee75abee5897de77a2b86648d Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Tue, 9 May 1995 21:07:06 +0000 Subject: [PATCH] Add little endian PowerPC support. --- bfd/ChangeLog | 23 +++++++++++++++++++++++ bfd/config.bfd | 7 +++++++ bfd/configure.in | 21 ++++++++++++++------- bfd/targets.c | 10 +++++++++- gdb/ChangeLog | 7 +++++++ gdb/config/powerpc/.Sanitize | 2 ++ gdb/config/powerpc/ppcle-eabi.mt | 3 +++ gdb/config/powerpc/tm-ppcle-eabi.h | 30 ++++++++++++++++++++++++++++++ gdb/configure.in | 5 +++++ 9 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 gdb/config/powerpc/ppcle-eabi.mt create mode 100644 gdb/config/powerpc/tm-ppcle-eabi.h diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1c1ac512a0d..363a9cb50dd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,26 @@ +Tue May 9 17:01:38 1995 Michael Meissner + + * config.bfd: Add little endian PowerPC support. + * configure.in: Ditto. + * targets.c: Ditto. + * config/ppcle-elf.mt: New file, for little endian PowerPC + support. + * config/ppc-elf.mt: Add little endian powerpc to the BFD + selection vectors. + * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Complain if + linking a different endian object than we expect. + (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Define, to provide little + endian support. + +Tue May 2 16:32:24 1995 Jeff Law (law@snake.cs.utah.edu) + + * config.bfd (hppa*-*-lites*): Treat just like hppa*-*-*elf*. + +Tue Apr 25 19:38:43 1995 Ken Raeburn + + * coffgen.c (make_a_section_from_file): Initialize lma same as + vma. + Tue Apr 25 11:03:21 1995 Jason Molenda (crash@phydeaux.cygnus.com) * hosts/std-host.h: #include ansidecl.h 'cause PTR is used in diff --git a/bfd/config.bfd b/bfd/config.bfd index fb3437eabab..7719fc60077 100755 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -42,6 +42,7 @@ case "${canon}" in rce-*-aout) bfd_name=rce-aout ;; # end-sanitize-rce hppa*-*-*elf*) bfd_name=hppa-elf ;; + hppa*-*-lites*) bfd_name=hppa-elf ;; hppa*-*-bsd*) bfd_name=hppabsd ;; hppa*-*-hpux*) bfd_name=hppahpux ;; hppa*-*-hiux*) bfd_name=hppahpux ;; @@ -60,8 +61,10 @@ case "${canon}" in i[345]86-*-freebsd*) bfd_name=i386-bsd strip_underscore=yes ;; i[345]86-*-netbsd*) bfd_name=i386-nbsd strip_underscore=yes ;; i[345]86-*-netware*) bfd_name=i386-nlm ;; + i[345]86-*-linuxaout*) bfd_name=i386-laout strip_underscore=yes ;; i[345]86-*-linux*) bfd_name=i386-linux strip_underscore=yes ;; i[345]86-*-lynxos*) bfd_name=i386-lynx ;; + i[345]86-*-gnuelf*) bfd_name=i386-gelf strip_underscore=yes ;; i[345]86-*-gnu*) bfd_name=i386-gnu strip_underscore=yes ;; i[345]86-*-mach*) bfd_name=i386-mach3 strip_underscore=yes ;; i[345]86-*-osf1mk*) bfd_name=i386-mach3 strip_underscore=yes ;; @@ -82,6 +85,7 @@ case "${canon}" in m68*-est-coff) bfd_name=m68k-coff ;; m68*-*-aout*) bfd_name=m68k-0aout strip_underscore=yes ;; m68*-*-coff*) bfd_name=m68k-coff ;; + m68*-*-elf*) bfd_name=m68k-elf ;; m68*-*-hpux*) bfd_name=hp300hpux strip_underscore=yes ;; m68*-*-lynxos*) bfd_name=m68k-lynx ;; m68*-*-netbsd*) bfd_name=m68k-nbsd strip_underscore=yes ;; @@ -122,6 +126,9 @@ case "${canon}" in powerpc-*-sysv4*) bfd_name=ppc-elf ;; powerpc-*-eabi*) bfd_name=ppc-elf ;; powerpc-*-netware*) bfd_name=ppc-nlm ;; + powerpcle-*-elf*) bfd_name=ppcle-elf ;; + powerpcle-*-sysv4*) bfd_name=ppcle-elf ;; + powerpcle-*-eabi*) bfd_name=ppcle-elf ;; rs6000-*-*) bfd_name=rs6000 ;; sparc-*-lynxos*) bfd_name=sparc-lynx ;; sparc-*-netbsd*) bfd_name=sparc-nbsd strip_underscore=yes;; diff --git a/bfd/configure.in b/bfd/configure.in index b8c89404fa8..186f2e2b529 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -143,16 +143,21 @@ do apollocoff_vec) tb="$tb coff-apollo.o" ;; b_out_vec_big_host) tb="$tb bout.o aout32.o stab-syms.o" ;; b_out_vec_little_host) tb="$tb bout.o aout32.o stab-syms.o" ;; +# start-sanitize-arc + bfd_elf32_littlearc_vec) tb="$tb elf32-arc.o elf32.o elf.o" ;; + bfd_elf32_bigarc_vec) tb="$tb elf32-arc.o elf32.o elf.o" ;; +# end-sanitize-arc bfd_elf32_big_generic_vec) tb="$tb elf32-gen.o elf32.o elf.o" ;; - bfd_elf32_bigmips_vec) tb="$tb elf32-mips.o elf32.o elf.o ecoff.o ecofflink.o" ;; + bfd_elf32_bigmips_vec) tb="$tb elf32-mips.o elf32.o elf.o ecofflink.o" ;; bfd_elf32_hppa_vec) tb="$tb elf32-hppa.o elf32.o elf.o" ;; bfd_elf32_i386_vec) tb="$tb elf32-i386.o elf32.o elf.o" ;; bfd_elf32_i860_vec) tb="$tb elf32-i860.o elf32.o elf.o" ;; bfd_elf32_little_generic_vec) tb="$tb elf32-gen.o elf32.o elf.o" ;; - bfd_elf32_littlemips_vec) tb="$tb elf32-mips.o elf32.o elf.o ecoff.o ecofflink.o" ;; + bfd_elf32_littlemips_vec) tb="$tb elf32-mips.o elf32.o elf.o ecofflink.o" ;; bfd_elf32_m68k_vec) tb="$tb elf32-m68k.o elf32.o elf.o" ;; bfd_elf32_m88k_vec) tb="$tb elf32-m88k.o elf32.o elf.o" ;; bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.o elf32.o elf.o" ;; + bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.o elf32.o elf.o" ;; bfd_elf32_sparc_vec) tb="$tb elf32-sparc.o elf32.o elf.o" ;; bfd_elf64_big_generic_vec) tb="$tb elf64-gen.o elf64.o elf.o" target64=true ;; @@ -176,6 +181,7 @@ do i386bsd_vec) tb="$tb i386bsd.o aout32.o stab-syms.o" ;; i386dynix_vec) tb="$tb i386dynix.o aout32.o stab-syms.o" ;; i386coff_vec) tb="$tb coff-i386.o cofflink.o" ;; + i386msdos_vec) tb="$tb i386msdos.o" ;; i386linux_vec) tb="$tb i386linux.o aout32.o stab-syms.o" ;; i386lynx_aout_vec) tb="$tb i386lynx.o lynx-core.o aout32.o stab-syms.o" ;; i386lynx_coff_vec) tb="$tb cf-i386lynx.o cofflink.o lynx-core.o stab-syms.o" ;; @@ -217,6 +223,7 @@ do tekhex_vec) tb="$tb tekhex.o" ;; we32kcoff_vec) tb="$tb coff-we32k.o" ;; z8kcoff_vec) tb="$tb coff-z8k.o reloc16.o" ;; + w65_vec) tb="$tb coff-w65.o reloc16.o" ;; "") ;; *) echo "*** unknown target vector $vec" 1>&2; exit 1 ;; @@ -277,11 +284,11 @@ echo BFD_MACHINES=${bfd_machines} >> Makefile.2 test -n "$DEFAULT_VECTOR" && defvec="$DEFAULT_VECTOR" -echo "TDEFAULTS = \ -${defvec+-DDEFAULT_VECTOR=$defvec} \ -${selvecs+-DSELECT_VECS='$selvecs'} \ -${selarchs+-DSELECT_ARCHITECTURES='$selarchs'}" \ - >> Makefile.2 +tdefaults="TDEFAULTS =" +test -n "${defvec}" && tdefaults="${tdefaults} -DDEFAULT_VECTOR=${defvec}" +test -n "${selvecs}" && tdefaults="${tdefaults} -DSELECT_VECS='${selvecs}'" +test -n "${selarchs}" && tdefaults="${tdefaults} -DSELECT_ARCHITECTURES='${selarchs}'" +echo "${tdefaults}" >> Makefile.2 cat Makefile.tmp >> Makefile.2 rm -f Makefile.tmp diff --git a/bfd/targets.c b/bfd/targets.c index b3103d0b96e..8841e82cb11 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -263,14 +263,21 @@ The general target vector. . {* Entry points to copy private data. *} .#define BFD_JUMP_TABLE_COPY(NAME)\ .CAT(NAME,_bfd_copy_private_bfd_data),\ -.CAT(NAME,_bfd_copy_private_section_data) +.CAT(NAME,_bfd_merge_private_bfd_data),\ +.CAT(NAME,_bfd_copy_private_section_data),\ +.CAT(NAME,_bfd_set_private_flags) . {* Called to copy BFD general private data from one object file . to another. *} . boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *)); +. {* Called to merge BFD general private data from one object file +. to a common output file when linking. *} +. boolean (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *)); . {* Called to copy BFD private section data from one object file . to another. *} . boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, . bfd *, sec_ptr)); +. {* Called to set private backend flags *} +. boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword)); . . {* Core file entry points. *} .#define BFD_JUMP_TABLE_CORE(NAME)\ @@ -446,6 +453,7 @@ extern const bfd_target bfd_elf32_littlemips_vec; extern const bfd_target bfd_elf32_m68k_vec; extern const bfd_target bfd_elf32_m88k_vec; extern const bfd_target bfd_elf32_powerpc_vec; +extern const bfd_target bfd_elf32_powerpcle_vec; extern const bfd_target bfd_elf32_sparc_vec; extern const bfd_target bfd_elf64_big_generic_vec; extern const bfd_target bfd_elf64_little_generic_vec; diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b6e86b897ea..d4a5cf86abb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +Tue May 9 16:58:50 1995 Michael Meissner + + * configure.in: Add little endian PowerPC support. + * config/powerpc/ppcle-eabi.mt: New file for little endian PowerPC + support. + * config/powerpc/tm-ppcle-eabi.h: ditto. + Mon May 8 12:11:38 1995 J.T. Conklin * nlm/configure.in (gdb_host, gdb_host_cpu, gdb_target): Removed. diff --git a/gdb/config/powerpc/.Sanitize b/gdb/config/powerpc/.Sanitize index cec908a319a..d4c3b81b108 100644 --- a/gdb/config/powerpc/.Sanitize +++ b/gdb/config/powerpc/.Sanitize @@ -25,7 +25,9 @@ gdbserve.mt ppc-nw.mt tm-ppc-nw.h tm-ppc-eabi.h +tm-ppcle-eabi.h ppc-eabi.mt +ppcle-eabi.mt Things-to-lose: diff --git a/gdb/config/powerpc/ppcle-eabi.mt b/gdb/config/powerpc/ppcle-eabi.mt new file mode 100644 index 00000000000..27be44f2eb3 --- /dev/null +++ b/gdb/config/powerpc/ppcle-eabi.mt @@ -0,0 +1,3 @@ +# Target: PowerPC running eabi in little endian mode +TDEPFILES= rs6000-tdep.o +TM_FILE= tm-ppcle-eabi.h diff --git a/gdb/config/powerpc/tm-ppcle-eabi.h b/gdb/config/powerpc/tm-ppcle-eabi.h new file mode 100644 index 00000000000..0ad4bdc1607 --- /dev/null +++ b/gdb/config/powerpc/tm-ppcle-eabi.h @@ -0,0 +1,30 @@ +/* Macro definitions for Power PC running embedded ABI + in little endian mode. + Copyright 1995 Free Software Foundation, Inc. + +This file is part of GDB. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef TM_PPCLE_EABI_H +#define TM_PPCLE_EABI_H + +/* Use normal ppc-eabi definitions */ +#include "powerpc/tm-ppc-eabi.h" + +#undef TARGET_BYTE_ORDER +#define TARGET_BYTE_ORDER LITTLE_ENDIAN + +#endif /* TM_PPCLE_EABI_H */ diff --git a/gdb/configure.in b/gdb/configure.in index cf76597745d..7d503514813 100644 --- a/gdb/configure.in +++ b/gdb/configure.in @@ -22,6 +22,7 @@ m68*) gdb_host_cpu=m68k ;; m88*) gdb_host_cpu=m88k ;; np1) gdb_host_cpu=gould ;; pyramid) gdb_host_cpu=pyr ;; +powerpc*) gdb_host_cpu=powerpc ;; *) gdb_host_cpu=$host_cpu ;; esac @@ -167,6 +168,7 @@ m68*) gdb_target_cpu=m68k ;; m88*) gdb_target_cpu=m88k ;; mips*) gdb_target_cpu=mips ;; np1) gdb_target_cpu=gould ;; +powerpc*) gdb_target_cpu=powerpc ;; pn) gdb_target_cpu=gould ;; pyramid) gdb_target_cpu=pyr ;; sparclite*) gdb_target_cpu=sparc @@ -325,6 +327,9 @@ powerpc-*-netware*) gdb_target=ppc-nw powerpc-*-eabi*) gdb_target=ppc-eabi configdirs="${configdirs}" ;; +powerpcle-*-eabi*) gdb_target=ppcle-eabi + configdirs="${configdirs}" ;; + pyramid-*-*) gdb_target=pyramid ;; rs6000-*-lynxos*) gdb_target=rs6000lynx ;; -- 2.30.2