PATCH ppc-nto and common qnx bfd_backend

Graeme Peterson gp@qnx.com
Wed Jul 31 14:04:00 GMT 2002


Hi, all.

Here is a patch for QNX Neutrino PowerPC support and the
change from i386-only to common QNX specific bfd backend 
functions.

Cheers.
GP

-------------- next part --------------
diff -rc3p -N src/bfd/ChangeLog src.qnx/bfd/ChangeLog
*** src/bfd/ChangeLog	Tue Jul 30 13:57:36 2002
--- src.qnx/bfd/ChangeLog	Wed Jul 31 16:00:07 2002
***************
*** 1,3 ****
--- 1,20 ----
+ 2002-07-31  Graeme Peterson  <gp@qnx.com>
+ 
+ 	* Makefile.am: Add entries for elf32-ppcqnx.c, and add 
+ 	elf32-qnx.h dependency to elfarmqnx-nabi.c and elf32-i386qnx.c.
+ 	* Makefile.in: Regenerate.
+ 	* config.bfd: Add support for powerpc{le}-*-nto targets.
+ 	* configure.in: Add support for bfd_elf32_powerpc{le}qnx_vec.
+ 	* configure: Regenerate.
+ 	* elf32-i386qnx.c: Moved backend functions into a QNX specific
+ 	common file "elf32-qnx.h", and now include that file.
+ 	* elf32-qnx.h: New file: QNX specific common elf backend.
+ 	* elf32-ppc.c: Do not include elf32-target.h if
+ 	ELF32_PPC_C_INCLUDED is defined.
+ 	* elf32-ppcqnx.c: New file: Support for QNX.
+ 	* elfarmqnx-nabi.c: Include elf32-qnx.h for qnx elf backend.
+ 	* targets.c: Add bfd_elf32_powerpc{le}qnx_vec.
+ 
  2002-07-30  Graeme Peterson  <gp@qnx.com>
  
  	* elfarmqnx-nabi.c: New file: Support for QNX.
diff -rc3p -N src/bfd/Makefile.am src.qnx/bfd/Makefile.am
*** src/bfd/Makefile.am	Tue Jul 30 18:33:39 2002
--- src.qnx/bfd/Makefile.am	Wed Jul 31 15:57:43 2002
*************** BFD32_BACKENDS = \
*** 232,237 ****
--- 232,238 ----
  	elf32-or32.lo \
  	elf32-pj.lo \
  	elf32-ppc.lo \
+ 	elf32-ppcqnx.lo \
  	elf32-s390.lo \
  	elf32-sh.lo \
  	elf32-sh-lin.lo \
*************** BFD32_BACKENDS_CFILES = \
*** 390,395 ****
--- 391,397 ----
  	elf32-or32.c \
  	elf32-pj.c \
  	elf32-ppc.c \
+ 	elf32-ppcqnx.c \
  	elf32-sh64.c \
  	elf32-sh64-com.c \
  	elf32-s390.c \
*************** elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/
*** 1099,1105 ****
    $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
    elf32-arm.h elf32-target.h
  elfarmqnx-nabi.lo: elfarmqnx-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
!   $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
    $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
    elf32-arm.h elf32-target.h
  elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
--- 1101,1107 ----
    $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
    elf32-arm.h elf32-target.h
  elfarmqnx-nabi.lo: elfarmqnx-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
!   $(INCDIR)/filenames.h elf-bfd.h elf32-qnx.h $(INCDIR)/elf/common.h \
    $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
    elf32-arm.h elf32-target.h
  elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
*************** elf32-i386.lo: elf32-i386.c $(INCDIR)/fi
*** 1149,1155 ****
    $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
    elf32-target.h
  elf32-i386qnx.lo: elf32-i386qnx.c elf32-i386.c $(INCDIR)/filenames.h \
!   $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
    $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
    $(INCDIR)/elf/reloc-macros.h elf32-target.h
  elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
--- 1151,1157 ----
    $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
    elf32-target.h
  elf32-i386qnx.lo: elf32-i386qnx.c elf32-i386.c $(INCDIR)/filenames.h \
!   $(INCDIR)/bfdlink.h elf-bfd.h elf32-qnx.h $(INCDIR)/elf/common.h \
    $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
    $(INCDIR)/elf/reloc-macros.h elf32-target.h
  elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
*************** elf32-pj.lo: elf32-pj.c $(INCDIR)/filena
*** 1220,1225 ****
--- 1222,1231 ----
    elf32-target.h
  elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
    elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+   $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
+   elf32-target.h
+ elf32-ppcqnx.lo: elf32-ppcqnx.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+   elf-bfd.h elf32-qnx.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
    $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
    elf32-target.h
  elf32-sh64.lo: elf32-sh64.c $(INCDIR)/filenames.h elf-bfd.h \
diff -rc3p -N src/bfd/config.bfd src.qnx/bfd/config.bfd
*** src/bfd/config.bfd	Tue Jul 30 18:33:39 2002
--- src.qnx/bfd/config.bfd	Wed Jul 31 12:06:44 2002
*************** case "${targ}" in
*** 867,872 ****
--- 867,880 ----
      targ_defvec=bfd_elf32_powerpc_vec
      targ_selvecs="nlm32_powerpc_vec rs6000coff_vec"
      ;;
+   powerpc-*-nto*)
+     targ_defvec=bfd_elf32_powerpcqnx_vec
+     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcleqnx_vec ppcboot_vec"
+     ;;
+   powerpcle-*-nto*)
+     targ_defvec=bfd_elf32_powerpcleqnx_vec
+     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcqnx_vec ppcboot_vec"
+     ;;
    powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
    powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
    powerpcle-*-rtems*)
diff -rc3p -N src/bfd/configure.in src.qnx/bfd/configure.in
*** src/bfd/configure.in	Tue Jul 30 18:33:41 2002
--- src.qnx/bfd/configure.in	Tue Jul 30 17:53:52 2002
*************** do
*** 605,610 ****
--- 605,612 ----
      bfd_elf32_pjl_vec)          tb="$tb elf32-pj.lo elf32.lo $elf";;
      bfd_elf32_powerpc_vec)	tb="$tb elf32-ppc.lo elf32.lo $elf" ;;
      bfd_elf32_powerpcle_vec)	tb="$tb elf32-ppc.lo elf32.lo $elf" ;;
+     bfd_elf32_powerpcleqnx_vec)	tb="$tb elf32-ppcqnx.lo elf32-ppc.lo elf32.lo $elf" ;;
+     bfd_elf32_powerpcqnx_vec)	tb="$tb elf32-ppcqnx.lo elf32-ppc.lo elf32.lo $elf" ;;
      bfd_elf32_s390_vec)		tb="$tb elf32-s390.lo elf32.lo $elf" ;;
      # FIXME: We include cofflink.lo not because it's needed for
      # bfd_elf32_sh64[l]_vec, but because we include bfd_elf32_sh[l]_vec
diff -rc3p -N src/bfd/elf32-i386qnx.c src.qnx/bfd/elf32-i386qnx.c
*** src/bfd/elf32-i386qnx.c	Sun Jun  2 21:57:09 2002
--- src.qnx/bfd/elf32-i386qnx.c	Wed Jul 31 12:37:37 2002
***************
*** 2,111 ****
     Copyright 2002
     Free Software Foundation, Inc.
  
! This file is part of BFD, the Binary File Descriptor library.
! 
! 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  
  #define ELF32_I386_C_INCLUDED
  #include "elf32-i386.c"
  
!   /* Returns the end address of the segment + 1.  */
! #define SEGMENT_END(segment, start)                     \
!   (start + (segment->p_memsz > segment->p_filesz        \
!    ? segment->p_memsz : segment->p_filesz))
! 
! static boolean elf_i386qnx_copy_private_bfd_data_p
!   PARAMS ((bfd *, asection *, bfd *, asection *));
! static boolean elf_i386qnx_is_contained_by_filepos
!   PARAMS ((asection *, Elf_Internal_Phdr *));
! static void elf_i386qnx_set_nonloadable_filepos
!   PARAMS ((bfd *, Elf_Internal_Phdr *));
! 
! static boolean
! elf_i386qnx_copy_private_bfd_data_p (ibfd, isec, obfd, osec)
!      bfd *ibfd;
!      asection *isec;
!      bfd *obfd;
!      asection *osec;
! {
!   /* We don't use these parameters, but another target might.  */
!   ibfd = ibfd;
!   obfd = obfd;
!   osec = osec;
!   return isec->next == NULL;
! }
! 
! static boolean
! elf_i386qnx_is_contained_by_filepos (section, segment)
!      asection *section;
!      Elf_Internal_Phdr *segment;
! {
!   return ((bfd_vma) section->filepos >= segment->p_offset
!           && ((bfd_vma) section->filepos + section->_raw_size
! 	      <= SEGMENT_END (segment, segment->p_offset)));
! }
! 
! static void
! elf_i386qnx_set_nonloadable_filepos (abfd, phdrs)
!      bfd *abfd;
!      Elf_Internal_Phdr *phdrs;
! {
!   struct elf_segment_map *m;
!   Elf_Internal_Phdr *p;
!   file_ptr off = 0;
! 
!   for (m = elf_tdata (abfd)->segment_map, p = phdrs;
!        m != NULL;
!        m = m->next, p++)
!     {
!       unsigned int i;
!       asection **secpp;
! 
!       for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
!         {
!           asection *sec;
! 
!           sec = *secpp;
! 
!           if (p->p_type == PT_LOAD)
! 	    off = sec->filepos;
!           else
!             {
!               if (i == 0)
!                 {
!                   if (sec->filepos)
!                     p->p_offset = sec->filepos;
!                   else
!                     p->p_offset = off;
!                 }
!               if (!sec->filepos)
!                 {
!                   off += sec->_raw_size;
!                   p->p_filesz += sec->_raw_size;
!                 }
!             }
!         }
!     }
!   return;
! }
  
  #undef  TARGET_LITTLE_SYM
  #define TARGET_LITTLE_SYM		    bfd_elf32_i386qnx_vec
  
- #define elf_backend_set_nonloadable_filepos elf_i386qnx_set_nonloadable_filepos
- #define elf_backend_is_contained_by_filepos elf_i386qnx_is_contained_by_filepos
- #define elf_backend_copy_private_bfd_data_p elf_i386qnx_copy_private_bfd_data_p
- 
  #include "elf32-target.h"
--- 2,30 ----
     Copyright 2002
     Free Software Foundation, Inc.
  
!    This file is part of BFD, the Binary File Descriptor library.
!    
!    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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  
  #define ELF32_I386_C_INCLUDED
  #include "elf32-i386.c"
  
! #include "elf32-qnx.h"
  
  #undef  TARGET_LITTLE_SYM
  #define TARGET_LITTLE_SYM		    bfd_elf32_i386qnx_vec
  
  #include "elf32-target.h"
+ 
diff -rc3p -N src/bfd/elf32-ppc.c src.qnx/bfd/elf32-ppc.c
*** src/bfd/elf32-ppc.c	Tue Jul 30 18:34:10 2002
--- src.qnx/bfd/elf32-ppc.c	Tue Jul 30 17:59:21 2002
*************** ppc_elf_grok_psinfo (abfd, note)
*** 3836,3839 ****
--- 3836,3842 ----
  #define elf_backend_grok_psinfo			ppc_elf_grok_psinfo
  #define elf_backend_reloc_type_class		ppc_elf_reloc_type_class
  
+ #ifndef ELF32_PPC_C_INCLUDED
  #include "elf32-target.h"
+ #endif
+ 
diff -rc3p -N src/bfd/elf32-ppcqnx.c src.qnx/bfd/elf32-ppcqnx.c
*** src/bfd/elf32-ppcqnx.c	Wed Dec 31 19:00:00 1969
--- src.qnx/bfd/elf32-ppcqnx.c	Wed Jul 31 12:37:10 2002
***************
*** 0 ****
--- 1,32 ----
+ /* PowerPC QNX specific support for 32-bit ELF
+    Copyright 2002 
+    Free Software Foundation, Inc.
+ 
+    This file is part of BFD, the Binary File Descriptor library.
+ 
+    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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+ 
+ #define ELF32_PPC_C_INCLUDED
+ #include "elf32-ppc.c"
+ 
+ #include "elf32-qnx.h"
+ 
+ #undef  TARGET_LITTLE_SYM 
+ #define TARGET_LITTLE_SYM       bfd_elf32_powerpcleqnx_vec
+ #undef  TARGET_BIG_SYM
+ #define TARGET_BIG_SYM          bfd_elf32_powerpcqnx_vec
+ 
+ #include "elf32-target.h"
+ 
diff -rc3p -N src/bfd/elf32-qnx.h src.qnx/bfd/elf32-qnx.h
*** src/bfd/elf32-qnx.h	Wed Dec 31 19:00:00 1969
--- src.qnx/bfd/elf32-qnx.h	Wed Jul 31 12:34:27 2002
***************
*** 0 ****
--- 1,110 ----
+ /* QNX specific support for 32-bit ELF
+    Copyright 2002
+    Free Software Foundation, Inc.
+ 
+ This file is part of BFD, the Binary File Descriptor library.
+ 
+ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+ 
+   /* Returns the end address of the segment + 1.  */
+ #define SEGMENT_END(segment, start)                     \
+   (start + (segment->p_memsz > segment->p_filesz        \
+    ? segment->p_memsz : segment->p_filesz))
+ 
+ static boolean elf_i386qnx_copy_private_bfd_data_p
+   PARAMS ((bfd *, asection *, bfd *, asection *));
+ static boolean elf_i386qnx_is_contained_by_filepos
+   PARAMS ((asection *, Elf_Internal_Phdr *));
+ static void elf_i386qnx_set_nonloadable_filepos
+   PARAMS ((bfd *, Elf_Internal_Phdr *));
+ 
+ static boolean
+ elf_qnx_copy_private_bfd_data_p (ibfd, isec, obfd, osec)
+      bfd *ibfd;
+      asection *isec;
+      bfd *obfd;
+      asection *osec;
+ {
+   /* We don't use these parameters, but another target might.  */
+   ibfd = ibfd;
+   obfd = obfd;
+   osec = osec;
+   return isec->next == NULL;
+ }
+ 
+ static boolean
+ elf_qnx_is_contained_by_filepos (section, segment)
+      asection *section;
+      Elf_Internal_Phdr *segment;
+ {
+   return ((bfd_vma) section->filepos >= segment->p_offset
+           && ((bfd_vma) section->filepos + section->_raw_size
+ 	      <= SEGMENT_END (segment, segment->p_offset)));
+ }
+ 
+ static void
+ elf_qnx_set_nonloadable_filepos (abfd, phdrs)
+      bfd *abfd;
+      Elf_Internal_Phdr *phdrs;
+ {
+   struct elf_segment_map *m;
+   Elf_Internal_Phdr *p;
+   file_ptr off = 0;
+ 
+   for (m = elf_tdata (abfd)->segment_map, p = phdrs;
+        m != NULL;
+        m = m->next, p++)
+     {
+       unsigned int i;
+       asection **secpp;
+ 
+       for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
+         {
+           asection *sec;
+ 
+           sec = *secpp;
+ 
+           if (p->p_type == PT_LOAD)
+ 	    off = sec->filepos;
+           else
+             {
+               if (i == 0)
+                 {
+                   if (sec->filepos)
+                     p->p_offset = sec->filepos;
+                   else
+                     p->p_offset = off;
+                 }
+               if (!sec->filepos)
+                 {
+                   off += sec->_raw_size;
+                   p->p_filesz += sec->_raw_size;
+                 }
+             }
+         }
+     }
+   return;
+ }
+ 
+ #ifndef elf_backend_set_nonloadable_filepos
+ #define elf_backend_set_nonloadable_filepos elf_qnx_set_nonloadable_filepos
+ #endif
+ #ifndef elf_backend_is_contained_by_filepos
+ #define elf_backend_is_contained_by_filepos elf_qnx_is_contained_by_filepos
+ #endif
+ #ifndef elf_backend_copy_private_bfd_data_p
+ #define elf_backend_copy_private_bfd_data_p elf_qnx_copy_private_bfd_data_p
+ #endif
+ 
diff -rc3p -N src/bfd/elfarmqnx-nabi.c src.qnx/bfd/elfarmqnx-nabi.c
*** src/bfd/elfarmqnx-nabi.c	Tue Jul 30 13:32:26 2002
--- src.qnx/bfd/elfarmqnx-nabi.c	Wed Jul 31 12:39:01 2002
***************
*** 1,5 ****
! /* 32-bit ELF support for ARM new abi option, for QNX.
!    Copyright 2002 Free Software Foundation, Inc.
  
     This file is part of BFD, the Binary File Descriptor library.
  
--- 1,6 ----
! /* ARM new abi QNX specific support for 32-bit ELF
!    Copyright 2002 
!    Free Software Foundation, Inc.
  
     This file is part of BFD, the Binary File Descriptor library.
  
***************
*** 19,24 ****
--- 20,27 ----
  
  #define ELFARM_NABI_C_INCLUDED
  #include "elfarm-nabi.c"
+ 
+ #include "elf32-qnx.h"
  
  #undef  TARGET_LITTLE_SYM 
  #define TARGET_LITTLE_SYM       bfd_elf32_littlearmqnx_vec
diff -rc3p -N src/bfd/targets.c src.qnx/bfd/targets.c
*** src/bfd/targets.c	Tue Jul 30 18:34:10 2002
--- src.qnx/bfd/targets.c	Wed Jul 31 13:02:37 2002
*************** extern const bfd_target bfd_elf32_pj_vec
*** 549,554 ****
--- 549,556 ----
  extern const bfd_target bfd_elf32_pjl_vec;
  extern const bfd_target bfd_elf32_powerpc_vec;
  extern const bfd_target bfd_elf32_powerpcle_vec;
+ extern const bfd_target bfd_elf32_powerpcleqnx_vec;
+ extern const bfd_target bfd_elf32_powerpcqnx_vec;
  extern const bfd_target bfd_elf32_s390_vec;
  extern const bfd_target bfd_elf32_sh64_vec;
  extern const bfd_target bfd_elf32_sh64l_vec;
*************** static const bfd_target * const _bfd_tar
*** 814,819 ****
--- 816,823 ----
  	&bfd_elf32_pjl_vec,
  	&bfd_elf32_powerpc_vec,
  	&bfd_elf32_powerpcle_vec,
+ 	&bfd_elf32_powerpcleqnx_vec,
+ 	&bfd_elf32_powerpcqnx_vec,
  	&bfd_elf32_s390_vec,
          &bfd_elf32_sh_vec,
          &bfd_elf32_shblin_vec,
diff -rc3p -N src/gas/ChangeLog src.qnx/gas/ChangeLog
*** src/gas/ChangeLog	Tue Jul 30 15:31:32 2002
--- src.qnx/gas/ChangeLog	Wed Jul 31 15:39:20 2002
***************
*** 1,3 ****
--- 1,8 ----
+ 2002-07-31  Graeme Peterson  <gp@qnx.com>
+ 
+ 	* configure.in: Add support for ppc-*-nto* target.
+ 	* configure: Regenerate.
+ 	
  2002-07-30  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
  
  	* tc-mips.c (load_address): Don't clobber $at when loading a
diff -rc3p -N src/gas/configure.in src.qnx/gas/configure.in
*** src/gas/configure.in	Tue Jul 30 18:34:11 2002
--- src.qnx/gas/configure.in	Tue Jul 30 15:43:56 2002
*************** changequote([,])dnl
*** 419,424 ****
--- 419,425 ----
        ppc-*-macos* | ppc-*-mpw*)
  			    fmt=coff em=macos ;;
        ppc-*-netware*)       fmt=elf em=ppcnw ;;
+       ppc-*-nto*)           fmt=elf ;;
        ppc-*-vxworks*)       fmt=elf ;;
        ppc-*-windiss*)       fmt=elf ;;
  
diff -rc3p -N src/ld/ChangeLog src.qnx/ld/ChangeLog
*** src/ld/ChangeLog	Tue Jul 30 13:57:48 2002
--- src.qnx/ld/ChangeLog	Wed Jul 31 15:52:43 2002
***************
*** 1,3 ****
--- 1,12 ----
+ 2002-07-31  Graeme Peterson  <gp@qnx.com>
+ 
+ 	* configure.tgt: Add support for powerpc{le}-*-nto* targets.
+ 	* Makefile.am: Add eelf32{l}ppcnto.o files.
+ 	* Makefile.in: Regenerate.
+ 	* emulparams/elf32lppcnto.sh: New file.
+ 	* emulparams/elf32ppcnto.sh: New file.
+ 
+ 
  2002-07-30  Graeme Peterson  <gp@qnx.com>
  
  	* configure.tgt: Add support for arm-*-nto target.
diff -rc3p -N src/ld/Makefile.am src.qnx/ld/Makefile.am
*** src/ld/Makefile.am	Tue Jul 30 18:34:12 2002
--- src.qnx/ld/Makefile.am	Wed Jul 31 15:55:15 2002
*************** ALL_EMULATIONS = \
*** 166,177 ****
--- 166,179 ----
  	eelf32l4300.o \
  	eelf32lmip.o \
  	eelf32lppc.o \
+ 	eelf32lppcnto.o \
  	eelf32lppcsim.o \
  	eelf32mcore.o \
  	eelf32openrisc.o \
  	eelf32ppc.o \
  	eelf32ppc_fbsd.o \
  	eelf32ppclinux.o \
+ 	eelf32ppcnto.o \
  	eelf32ppcsim.o \
  	eelf32ppcwindiss.o \
  	eelf32vax.o \
*************** eelf32lppc.c: $(srcdir)/emulparams/elf32
*** 594,603 ****
--- 596,613 ----
    $(srcdir)/emulparams/elf32ppc.sh \
    $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
  	${GENSCRIPTS} elf32lppc "$(tdir_elf32lppc)"
+ eelf32lppcnto.c: $(srcdir)/emulparams/elf32lppcnto.sh \
+   $(srcdir)/emulparams/elf32ppc.sh \
+   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ 	${GENSCRIPTS} elf32lppcnto "$(tdir_elf32lppcnto)"
  eelf32lppcsim.c: $(srcdir)/emulparams/elf32lppcsim.sh \
    $(srcdir)/emulparams/elf32lppc.sh $(srcdir)/emulparams/elf32ppc.sh \
    $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
  	${GENSCRIPTS} elf32lppcsim "$(tdir_elf32lppcsim)"
+ eelf32ppcnto.c: $(srcdir)/emulparams/elf32ppcnto.sh \
+   $(srcdir)/emulparams/elf32ppc.sh \
+   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ 	${GENSCRIPTS} elf32ppcnto "$(tdir_elf32ppcnto)"
  eelf32ppcwindiss.c: $(srcdir)/emulparams/elf32ppcwindiss.sh ${GEN_DEPENDS}
  	${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)"
  eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \
diff -rc3p -N src/ld/configure.tgt src.qnx/ld/configure.tgt
*** src/ld/configure.tgt	Tue Jul 30 18:34:13 2002
--- src.qnx/ld/configure.tgt	Tue Jul 30 17:12:47 2002
*************** powerpc*-*-elf* | powerpc*-*-eabi* | pow
*** 465,470 ****
--- 465,472 ----
  	*)	targ_emul=elf32ppc
  		targ_extra_emuls="elf32ppclinux elf32ppcsim" ;;
  	esac ;;
+ powerpc-*-nto*)         targ_emul=elf32ppcnto ;;
+ powerpcle-*-nto*)       targ_emul=elf32lppcnto ;;
  powerpcle-*-rtems*)	targ_emul=elf32leppc ;;
  powerpc-*-rtems*)	targ_emul=elf32ppc ;;
  powerpc-*-macos*)	targ_emul=ppcmacos ;;
diff -rc3p -N src/ld/emulparams/elf32lppcnto.sh src.qnx/ld/emulparams/elf32lppcnto.sh
*** src/ld/emulparams/elf32lppcnto.sh	Wed Dec 31 19:00:00 1969
--- src.qnx/ld/emulparams/elf32lppcnto.sh	Tue Jul 30 16:10:46 2002
***************
*** 0 ****
--- 1,5 ----
+ . ${srcdir}/emulparams/elf32ppc.sh
+ OUTPUT_FORMAT="elf32-powerpcle"
+ MAXPAGESIZE=0x1000
+ TEXT_START_ADDR=0x48040000
+ 
diff -rc3p -N src/ld/emulparams/elf32ppcnto.sh src.qnx/ld/emulparams/elf32ppcnto.sh
*** src/ld/emulparams/elf32ppcnto.sh	Wed Dec 31 19:00:00 1969
--- src.qnx/ld/emulparams/elf32ppcnto.sh	Tue Jul 30 16:10:37 2002
***************
*** 0 ****
--- 1,4 ----
+ . ${srcdir}/emulparams/elf32ppc.sh
+ MAXPAGESIZE=0x1000
+ TEXT_START_ADDR=0x48040000
+ 



More information about the Binutils mailing list