* elf32-ppc.c: Renamed from elf32-powerpc.c.
authorIan Lance Taylor <ian@airs.com>
Sat, 12 Mar 1994 17:48:16 +0000 (17:48 +0000)
committerIan Lance Taylor <ian@airs.com>
Sat, 12 Mar 1994 17:48:16 +0000 (17:48 +0000)
  start-sanitize-powerpc-netware
* nlm32-ppc.c: Renamed from nlm32-powerpc.c.
  end-sanitize-powerpc-netware
* Makefile.in, configure.in: Corresponding changes.

bfd/.Sanitize
bfd/ChangeLog
bfd/elf32-powerpc.c [deleted file]
bfd/nlm32-powerpc.c [deleted file]

index c5475289a47aded2167f5e79f3a7da05d45eeb13..26be3d246f69bd3f01c24e773ed21455e9033dfc 100644 (file)
@@ -34,9 +34,9 @@ else
 fi
 
 if ( echo $* | grep keep\-powerpc\-netware > /dev/null ) ; then
-       keep_these_too="nlm32-powerpc.c ${keep_these_too}"
+       keep_these_too="nlm32-ppc.c ${keep_these_too}"
 else
-       lose_these_too="nlm32-powerpc.c ${lose_these_too}"
+       lose_these_too="nlm32-ppc.c ${lose_these_too}"
 fi
 
 # All files listed between the "Things-to-keep:" line and the
@@ -130,7 +130,7 @@ elf32-i860.c
 elf32-m68k.c
 elf32-m88k.c
 elf32-mips.c
-elf32-powerpc.c
+elf32-ppc.c
 elf32-sparc.c
 elf32-target.h
 elf32.c
index 30d4c108f5ce085f74ef81f3318e5b21cf1ec746..0748e8861b5bb74b72fb15c3fb8e31943c5d9085 100644 (file)
@@ -1,3 +1,11 @@
+Sat Mar 12 09:46:09 1994  Ian Lance Taylor  (ian@cygnus.com)
+
+       * elf32-ppc.c: Renamed from elf32-powerpc.c.
+       start-sanitize-powerpc-netware
+       * nlm32-ppc.c: Renamed from nlm32-powerpc.c.
+       end-sanitize-powerpc-netware
+       * Makefile.in, configure.in: Corresponding changes.
+
 Fri Mar 11 22:27:19 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        * elf32-powerpc.c: Extensive changes to update to preliminary ABI.
@@ -284,7 +292,7 @@ Sat Feb 19 03:17:32 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
 
 Fri Feb 18 11:41:58 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
-       start-sanitize-powerpc-netware
+       start-sanitize-powerpc-netware
        Support for PowerPC NetWare.
        * nlm32-powerpc.c: New file.
        * config.bfd (powerpc-*-netware*): New target; use ppc-nlm.
diff --git a/bfd/elf32-powerpc.c b/bfd/elf32-powerpc.c
deleted file mode 100644 (file)
index 3d2dd01..0000000
+++ /dev/null
@@ -1,864 +0,0 @@
-/* PowerPC-specific support for 32-bit ELF
-   Copyright 1994 Free Software Foundation, Inc.
-   Written by Ian Lance Taylor, Cygnus Support.
-
-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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-/* This file is based on a preliminary PowerPC ELF ABI.  The
-   information may not match the final PowerPC ELF ABI.  It includes
-   suggestions from the in-progress Embedded PowerPC ABI, and that
-   information may also not match.  */
-
-#include "bfd.h"
-#include "sysdep.h"
-#include "libbfd.h"
-#include "libelf.h"
-
-static bfd_reloc_status_type ppc_elf_unsupported_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static bfd_reloc_status_type ppc_elf_addr16_ha_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static bfd_reloc_status_type ppc_elf_got16_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static const struct reloc_howto_struct *bfd_elf32_bfd_reloc_type_lookup
-  PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
-static void powerpc_info_to_howto
-  PARAMS ((bfd *abfd, arelent *cache_ptr, Elf32_Internal_Rela *dst));
-
-#define USE_RELA
-
-enum reloc_type
-{
-  R_PPC_NONE = 0,
-  R_PPC_ADDR32,
-  R_PPC_ADDR24,
-  R_PPC_ADDR16,
-  R_PPC_ADDR16_LO,
-  R_PPC_ADDR16_HI,
-  R_PPC_ADDR16_HA,
-  R_PPC_ADDR14,
-  R_PPC_ADDR14_BRTAKEN,
-  R_PPC_ADDR14_BRNTAKEN,
-  R_PPC_REL24,
-  R_PPC_REL14,
-  R_PPC_REL14_BRTAKEN,
-  R_PPC_REL14_BRNTAKEN,
-  R_PPC_GOT16,
-  R_PPC_GOT16_LO,
-  R_PPC_GOT16_HI,
-  R_PPC_GOT16_HA,
-  R_PPC_PLT24,
-  R_PPC_COPY,
-  R_PPC_GLOB_DAT,
-  R_PPC_JMP_SLOT,
-  R_PPC_RELATIVE,
-  R_PPC_LOCAL24PC,
-  R_PPC_UADDR32,
-  R_PPC_UADDR16,
-
-  /* The remaining relocs are from the Embedded ELF ABI, and are not
-     in the SVR4 ELF ABI.  */
-  R_PPC_CGOT16,
-  R_PPC_CGOT16_LO,
-  R_PPC_CGOT16_HI,
-  R_PPC_CGOT16_HA,
-  R_PPC_GOT_REG,
-  R_PPC_CGOT_REG,
-  R_PPC_NADDR16,
-  R_PPC_NADDR32,
-  R_PPC_NADDR24,
-  R_PPC_DISP16,
-  R_PPC_GOTRL16,
-  R_PPC_GOTRLA16,
-  R_PPC_CGOTRL16,
-  R_PPC_CGOTRLA16,
-  R_PPC_max
-};
-
-static reloc_howto_type elf_powerpc_howto_table[] =
-{
-  /* This reloc does nothing.  */
-  HOWTO (R_PPC_NONE,           /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_NONE",          /* name */                                 
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0,                     /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* A standard 32 bit relocation.  */
-  HOWTO (R_PPC_ADDR32,          /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_ADDR32",        /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* An absolute 26 bit branch; the lower two bits must be zero.
-     FIXME: we don't check that, we just clear them.  */
-  HOWTO (R_PPC_ADDR24,          /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_ADDR24",        /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* A standard 16 bit relocation.  */
-  HOWTO (R_PPC_ADDR16,          /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_ADDR16",        /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* A 16 bit relocation without overflow.  */
-  HOWTO (R_PPC_ADDR16_LO,       /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_dont,/* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_ADDR16_LO",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* The high order 16 bits of an address.  */
-  HOWTO (R_PPC_ADDR16_HI,       /* type */                                 
-        16,                    /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_ADDR16_HI",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* The high order 16 bits of an address, plus 1 if the contents of
-     the low 16 bits, treated as a signed number, is negative.  */
-  HOWTO (R_PPC_ADDR16_HA,       /* type */                                 
-        16,                    /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_dont, /* complain_on_overflow */
-        ppc_elf_addr16_ha_reloc, /* special_function */                     
-        "R_PPC_ADDR16_HA",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* An absolute 16 bit branch; the lower two bits must be zero.
-     FIXME: we don't check that, we just clear them.  */
-  HOWTO (R_PPC_ADDR14,          /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_ADDR14",        /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xfffc,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* An absolute 16 bit branch, for which bit 10 should be set to
-     indicate that the branch is expected to be taken.  The lower two
-     bits must be zero.  */
-  HOWTO (R_PPC_ADDR14_BRTAKEN,  /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */             
-        "R_PPC_ADDR14_BRTAKEN",/* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xfffc,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* An absolute 16 bit branch, for which bit 10 should be set to
-     indicate that the branch is not expected to be taken.  The lower
-     two bits must be zero.  */
-  HOWTO (R_PPC_ADDR14_BRNTAKEN, /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */             
-        "R_PPC_ADDR14_BRNTAKEN",/* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xfffc,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* A relative 26 bit branch; the lower two bits must be zero.  */
-  HOWTO (R_PPC_REL24,           /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        true,                  /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_REL24",         /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        true),                 /* pcrel_offset */
-
-  /* A relative 16 bit branch; the lower two bits must be zero.  */
-  HOWTO (R_PPC_REL14,           /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        true,                  /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_REL14",         /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xfffc,                /* dst_mask */                             
-        true),                 /* pcrel_offset */
-
-  /* A relative 16 bit branch.  Bit 10 should be set to indicate that
-     the branch is expected to be taken.  The lower two bits must be
-     zero.  */
-  HOWTO (R_PPC_REL14_BRTAKEN,   /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */             
-        "R_PPC_REL14_BRTAKEN", /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xfffc,                /* dst_mask */                             
-        true),                 /* pcrel_offset */
-
-  /* A relative 16 bit branch.  Bit 10 should be set to indicate that
-     the branch is not expected to be taken.  The lower two bits must
-     be zero.  */
-  HOWTO (R_PPC_REL14_BRNTAKEN,  /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */             
-        "R_PPC_REL14_BRNTAKEN",/* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xfffc,                /* dst_mask */                             
-        true),                 /* pcrel_offset */
-
-  /* Like R_PPC_ADDR16, but referring to the GOT table entry for the
-     symbol.  */
-  HOWTO (R_PPC_GOT16,           /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_GOT16",         /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR16_LO, but referring to the GOT table entry for
-     the symbol.  */
-  HOWTO (R_PPC_GOT16_LO,        /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_GOT16_LO",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR16_HI, but referring to the GOT table entry for
-     the symbol.  */
-  HOWTO (R_PPC_GOT16_HI,        /* type */                                 
-        16,                    /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_GOT16_HI",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                 /* pcrel_offset */
-
-  /* Like R_PPC_ADDR16_HA, but referring to the GOT table entry for
-     the symbol.  FIXME: Not supported.  */
-  HOWTO (R_PPC_GOT16_HA,        /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_GOT16_HA",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_REL24, but referring to the procedure linkage table
-     entry for the symbol.  FIXME: Not supported.  */
-  HOWTO (R_PPC_PLT24,           /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        true,                  /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_PLT24",         /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        true),                 /* pcrel_offset */
-
-  /* This is used only by the dynamic linker.  The symbol should exist
-     both in the object being run and in some shared library.  The
-     dynamic linker copies the data addressed by the symbol from the
-     shared library into the object.  I have no idea what the purpose
-     of this is.  */
-  HOWTO (R_PPC_COPY,            /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_COPY",          /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0,                     /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR32, but used when setting global offset table
-     entries.  */
-  HOWTO (R_PPC_GLOB_DAT,        /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_GLOB_DAT",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Marks a procedure linkage table entry for a symbol.  */
-  HOWTO (R_PPC_JMP_SLOT,        /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_JMP_SLOT",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0,                     /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Used only by the dynamic linker.  When the object is run, this
-     longword is set to the load address of the object, plus the
-     addend.  */
-  HOWTO (R_PPC_RELATIVE,        /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_RELATIVE",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_REL24, but uses the value of the symbol within the
-     object rather than the final value.  Normally used for
-     _GLOBAL_OFFSET_TABLE_.  FIXME: Not supported.  */
-  HOWTO (R_PPC_LOCAL24PC,       /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        true,                  /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_LOCAL24PC",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        true),                 /* pcrel_offset */
-
-  /* Like R_PPC_ADDR32, but may be unaligned.  */
-  HOWTO (R_PPC_UADDR32,         /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_UADDR32",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR16, but may be unaligned.  */
-  HOWTO (R_PPC_UADDR16,         /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */                     
-        "R_PPC_UADDR16",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* The remaining relocs are from the Embedded ELF ABI, and are not
-     in the SVR4 ELF ABI.  */
-
-  /* Like R_PPC_GOT16, but using the constant GOT table.  */
-  HOWTO (R_PPC_CGOT16,          /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_CGOT16",        /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_GOT16_LO, but using the constant GOT table.  */
-  HOWTO (R_PPC_CGOT16_LO,       /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_CGOT16_LO",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_GOT16_HI, but using the constant GOT table.  */
-  HOWTO (R_PPC_CGOT16_HI,       /* type */                                 
-        16,                    /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_CGOT16_HI",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_GOT16_HA, but using the constant GOT table.  */
-  HOWTO (R_PPC_CGOT16_HA,       /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_CGOT16_HA",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* The dedicated GOT register.  */
-  HOWTO (R_PPC_GOT_REG,         /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        5,                     /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_GOT_REG",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x1f,                  /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* The dedicated CGOT register.  */
-  HOWTO (R_PPC_CGOT_REG,        /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        5,                     /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_CGOT_REG",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x1f,                  /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR16, but subtract the symbol.  */
-  HOWTO (R_PPC_NADDR16,         /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_NADDR16",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR32, but subtract the symbol.  */
-  HOWTO (R_PPC_NADDR32,         /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_NADDR32",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_ADDR24, but subtract the symbol.  */
-  HOWTO (R_PPC_NADDR24,         /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_NADDR24",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Offset of symbol relative to containing csect.  */
-  HOWTO (R_PPC_DISP16,          /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_DISP16",        /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_GOT16, but may be converted to an address computation
-     instead of a load.  */
-  HOWTO (R_PPC_GOTRL16,         /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_GOTRL16",       /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_GOT16, but may be converted to a load instead of an
-     address computation.  */
-  HOWTO (R_PPC_GOTRLA16,        /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_got16_reloc,   /* special_function */                     
-        "R_PPC_GOTRLA16",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_CGOT16, but may be converted to an address computation
-     instead of a load.  */
-  HOWTO (R_PPC_CGOTRL16,        /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */                     
-        "R_PPC_CGOTRL16",      /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* Like R_PPC_CGOT16, but may be converted to a load instead of an
-     address computation.  */
-  HOWTO (R_PPC_CGOTRLA16,       /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        ppc_elf_unsupported_reloc, /* special_function */
-        "R_PPC_CGOTRLA16",     /* name */
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-};
-
-/* Don't pretend we can deal with unsupported relocs.  */
-
-/*ARGSUSED*/
-static bfd_reloc_status_type
-ppc_elf_unsupported_reloc (abfd, reloc_entry, symbol, data, input_section,
-                          output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
-{
-  abort ();
-}
-
-/* Handle the ADDR16_HA reloc by adjusting the reloc addend.  */
-
-static bfd_reloc_status_type
-ppc_elf_addr16_ha_reloc (abfd, reloc_entry, symbol, data, input_section,
-                        output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
-{
-  bfd_vma relocation;
-
-  if (output_bfd != (bfd *) NULL)
-    return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
-                                 input_section, output_bfd, error_message);
-
-  if (bfd_is_com_section (symbol->section))
-    relocation = 0;
-  else
-    relocation = symbol->value;
-
-  relocation += (symbol->section->output_section->vma
-                + symbol->section->output_offset
-                + reloc_entry->addend);
-
-  if ((relocation & 0x8000) != 0)
-    reloc_entry->addend += 0x10000;
-
-  return bfd_reloc_continue;
-}
-
-/* Handle the GOT16 reloc.  We want to use the offset within the .got
-   section, not the actual VMA.  This is appropriate when generating
-   an embedded ELF object, for which the .got section acts like the
-   AIX .toc section.  When and if we support PIC code, we will have to
-   change this, perhaps by switching off on the e_type field.  */
-
-static bfd_reloc_status_type
-ppc_elf_got16_reloc (abfd, reloc_entry, symbol, data, input_section,
-                    output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
-{
-  asection *sec;
-
-  if (output_bfd != (bfd *) NULL)
-    return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
-                                 input_section, output_bfd, error_message);
-
-  sec = bfd_get_section (*reloc_entry->sym_ptr_ptr);
-  BFD_ASSERT (sec == &bfd_und_section
-             || strcmp (bfd_get_section_name (abfd, sec), ".got") == 0
-             || strcmp (bfd_get_section_name (abfd, sec), ".cgot") == 0);
-  reloc_entry->addend -= sec->output_section->vma;
-  return bfd_reloc_continue;
-}
-
-/* Map BFD reloc types to PowerPC ELF reloc types.  */
-
-struct powerpc_reloc_map
-{
-  unsigned char bfd_reloc_val;
-  unsigned char elf_reloc_val;
-};
-
-static const struct powerpc_reloc_map powerpc_reloc_map[] =
-{
-  { BFD_RELOC_NONE, R_PPC_NONE, },
-  { BFD_RELOC_32, R_PPC_ADDR32 },
-  { BFD_RELOC_CTOR, R_PPC_ADDR32 },
-  { BFD_RELOC_PPC_B26, R_PPC_REL24 },
-  { BFD_RELOC_PPC_BA26, R_PPC_ADDR24 },
-  { BFD_RELOC_PPC_TOC16, R_PPC_GOT16 }
-};
-
-static const struct reloc_howto_struct *
-bfd_elf32_bfd_reloc_type_lookup (abfd, code)
-     bfd *abfd;
-     bfd_reloc_code_real_type code;
-{
-  int i;
-
-  for (i = 0;
-       i < sizeof (powerpc_reloc_map) / sizeof (struct powerpc_reloc_map);
-       i++)
-    {
-      if (powerpc_reloc_map[i].bfd_reloc_val == code)
-       return &elf_powerpc_howto_table[powerpc_reloc_map[i].elf_reloc_val];
-    }
-
-  return NULL;
-}
-
-/* Set the howto pointer for a PowerPC ELF reloc.  */
-
-static void
-powerpc_info_to_howto (abfd, cache_ptr, dst)
-     bfd *abfd;
-     arelent *cache_ptr;
-     Elf32_Internal_Rela *dst;
-{
-  BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_PPC_max);
-  cache_ptr->howto = &elf_powerpc_howto_table[ELF32_R_TYPE (dst->r_info)];
-}
-
-#define TARGET_BIG_SYM         bfd_elf32_powerpc_vec
-#define TARGET_BIG_NAME                "elf32-powerpc"
-#define ELF_ARCH               bfd_arch_powerpc
-#define ELF_MACHINE_CODE       EM_CYGNUS_POWERPC
-#define ELF_MAXPAGESIZE                0x10000
-#define elf_info_to_howto      powerpc_info_to_howto
-
-#include "elf32-target.h"
diff --git a/bfd/nlm32-powerpc.c b/bfd/nlm32-powerpc.c
deleted file mode 100644 (file)
index eb7a7b5..0000000
+++ /dev/null
@@ -1,788 +0,0 @@
-/* Support for 32-bit PowerPC NLM (NetWare Loadable Module)
-   Copyright (C) 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#include "bfd.h"
-#include "sysdep.h"
-#include "libbfd.h"
-
-#define ARCH_SIZE 32
-
-#include "nlm/ppc-ext.h"
-#define Nlm_External_Fixed_Header      Nlm32_powerpc_External_Fixed_Header
-
-#include "libnlm.h"
-
-static boolean nlm_powerpc_backend_object_p
-  PARAMS ((bfd *));
-static boolean nlm_powerpc_write_prefix
-  PARAMS ((bfd *));
-static boolean nlm_powerpc_read_reloc
-  PARAMS ((bfd *, nlmNAME(symbol_type) *, asection **, arelent *));
-static boolean nlm_powerpc_mangle_relocs
-  PARAMS ((bfd *, asection *, PTR, bfd_vma, bfd_size_type));
-static boolean nlm_powerpc_read_import
-  PARAMS ((bfd *, nlmNAME(symbol_type) *));
-static boolean nlm_powerpc_write_reloc
-  PARAMS ((bfd *, asection *, arelent *, int));
-static boolean nlm_powerpc_write_import
-  PARAMS ((bfd *, asection *, arelent *));
-static boolean nlm_powerpc_write_external
-  PARAMS ((bfd *, bfd_size_type, asymbol *, struct reloc_and_sec *));
-\f
-/* PowerPC NLM's have a prefix header before the standard NLM.  This
-   function reads it in, verifies the version, and seeks the bfd to
-   the location before the regular NLM header.  */
-
-static boolean
-nlm_powerpc_backend_object_p (abfd)
-     bfd *abfd;
-{
-  struct nlm32_powerpc_external_prefix_header s;
-
-  if (bfd_read ((PTR) &s, sizeof s, 1, abfd) != sizeof s)
-    return false;
-
-  if (memcmp (s.signature, NLM32_POWERPC_SIGNATURE, sizeof s.signature) != 0
-      || bfd_h_get_32 (abfd, s.headerVersion) != NLM32_POWERPC_HEADER_VERSION)
-    return false;
-
-  return true;
-}
-
-/* Write out the prefix.  */
-
-static boolean
-nlm_powerpc_write_prefix (abfd)
-     bfd *abfd;
-{
-  struct nlm32_powerpc_external_prefix_header s;
-
-  memset (&s, 0, sizeof s);
-  memcpy (s.signature, NLM32_POWERPC_SIGNATURE, sizeof s.signature);
-  bfd_h_put_32 (abfd, (bfd_vma) NLM32_POWERPC_HEADER_VERSION, s.headerVersion);
-  bfd_h_put_32 (abfd, (bfd_vma) 0, s.origins);
-
-  /* FIXME: What should we do about the date?  */
-
-  if (bfd_write ((PTR) &s, sizeof s, 1, abfd) != sizeof s)
-    return false;
-
-  return true;
-}
-\f
-/* How to process the various reloc types.  PowerPC NLMs use XCOFF
-   reloc types, and I have just copied the XCOFF reloc table here.  */
-
-static reloc_howto_type nlm_powerpc_howto_table[] =
-{
-  /* Standard 32 bit relocation.  */
-  HOWTO (0,                    /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_POS",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffffffff,            /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* 32 bit relocation, but store negative value.  */
-  HOWTO (1,                    /* type */                                 
-        0,                     /* rightshift */                           
-        -2,                    /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_NEG",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffffffff,            /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-
-  /* 32 bit PC relative relocation.  */
-  HOWTO (2,                    /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        true,                  /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_REL",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffffffff,            /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* 16 bit TOC relative relocation.  */
-  HOWTO (3,                    /* type */                                 
-        0,                     /* rightshift */                           
-        1,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_TOC",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* I don't really know what this is.  */
-  HOWTO (4,                    /* type */                                 
-        1,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RTB",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffffffff,            /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* External TOC relative symbol.  */
-  HOWTO (5,                    /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_GL",                /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Local TOC relative symbol.  */
-  HOWTO (6,                    /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_TCL",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  { 7 },
-  
-  /* Non modifiable absolute branch.  */
-  HOWTO (8,                    /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_BA",                /* name */                                 
-        true,                  /* partial_inplace */                      
-        0x3fffffc,             /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  { 9 },
-
-  /* Non modifiable relative branch.  */
-  HOWTO (0xa,                  /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        true,                  /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_BR",                /* name */                                 
-        true,                  /* partial_inplace */                      
-        0x3fffffc,             /* src_mask */                             
-        0x3fffffc,             /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  { 0xb },
-
-  /* Indirect load.  */
-  HOWTO (0xc,                  /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RL",                /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Load address.  */
-  HOWTO (0xd,                  /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RLA",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  { 0xe },
-  
-  /* Non-relocating reference.  */
-  HOWTO (0xf,                  /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_REF",               /* name */                                 
-        false,                 /* partial_inplace */                      
-        0,                     /* src_mask */                             
-        0,                     /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  { 0x10 },
-  { 0x11 },
-  
-  /* TOC relative indirect load.  */
-  HOWTO (0x12,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_TRL",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* TOC relative load address.  */
-  HOWTO (0x13,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_TRLA",              /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable relative branch.  */
-  HOWTO (0x14,                 /* type */                                 
-        1,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RRTBI",             /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffffffff,            /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable absolute branch.  */
-  HOWTO (0x15,                 /* type */                                 
-        1,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        32,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RRTBA",             /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffffffff,            /* src_mask */                             
-        0xffffffff,            /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable call absolute indirect.  */
-  HOWTO (0x16,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_CAI",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable call relative.  */
-  HOWTO (0x17,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_REL",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable branch absolute.  */
-  HOWTO (0x18,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RBA",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable branch absolute.  */
-  HOWTO (0x19,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_RBAC",              /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable branch relative.  */
-  HOWTO (0x1a,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        26,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_signed, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_REL",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false),                /* pcrel_offset */
-  
-  /* Modifiable branch absolute.  */
-  HOWTO (0x1b,                 /* type */                                 
-        0,                     /* rightshift */                           
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */ 
-        16,                    /* bitsize */                   
-        false,                 /* pc_relative */                          
-        0,                     /* bitpos */                               
-        complain_overflow_bitfield, /* complain_on_overflow */
-        0,                     /* special_function */                     
-        "R_REL",               /* name */                                 
-        true,                  /* partial_inplace */                      
-        0xffff,                /* src_mask */                             
-        0xffff,                /* dst_mask */                             
-        false)                 /* pcrel_offset */
-};
-
-#define HOWTO_COUNT (sizeof nlm_powerpc_howto_table            \
-                    / sizeof nlm_powerpc_howto_table[0])
-
-/* Read a PowerPC NLM reloc.  */
-
-static boolean
-nlm_powerpc_read_reloc (abfd, sym, secp, rel)
-     bfd *abfd;
-     nlmNAME(symbol_type) *sym;
-     asection **secp;
-     arelent *rel;
-{
-  struct nlm32_powerpc_external_reloc ext;
-  bfd_vma l_vaddr;
-  unsigned long l_symndx;
-  int l_rtype;
-  int l_rsecnm;
-  asection *code_sec, *data_sec, *bss_sec;
-
-  /* Read the reloc from the file.  */
-  if (bfd_read (&ext, sizeof ext, 1, abfd) != sizeof ext)
-    {
-      bfd_set_error (bfd_error_system_call);
-      return false;
-    }
-
-  /* Swap in the fields.  */
-  l_vaddr = bfd_h_get_32 (abfd, ext.l_vaddr);
-  l_symndx = bfd_h_get_32 (abfd, ext.l_symndx);
-  l_rtype = bfd_h_get_16 (abfd, ext.l_rtype);
-  l_rsecnm = bfd_h_get_16 (abfd, ext.l_rsecnm);
-
-  /* Get the sections now, for convenience.  */
-  code_sec = bfd_get_section_by_name (abfd, NLM_CODE_NAME);
-  data_sec = bfd_get_section_by_name (abfd, NLM_INITIALIZED_DATA_NAME);
-  bss_sec = bfd_get_section_by_name (abfd, NLM_UNINITIALIZED_DATA_NAME);
-
-  /* Work out the arelent fields.  */
-  if (sym != NULL)
-    {
-      /* This is an import.  sym_ptr_ptr is filled in by
-        nlm_canonicalize_reloc.  */
-      rel->sym_ptr_ptr = NULL;
-    }
-  else
-    {
-      asection *sec;
-
-      if (l_symndx == 0)
-       sec = code_sec;
-      else if (l_symndx == 1)
-       sec = data_sec;
-      else if (l_symndx == 2)
-       sec = bss_sec;
-      else
-       {
-         bfd_set_error (bfd_error_bad_value);
-         return false;
-       }
-
-      rel->sym_ptr_ptr = sec->symbol_ptr_ptr;
-    }
-
-  rel->addend = 0;
-
-  BFD_ASSERT ((l_rtype & 0xff) < HOWTO_COUNT);
-
-  rel->howto = nlm_powerpc_howto_table + (l_rtype & 0xff);
-
-  BFD_ASSERT (rel->howto->name != NULL
-             && ((l_rtype & 0x8000) != 0
-                 ? (rel->howto->complain_on_overflow
-                    == complain_overflow_signed)
-                 : (rel->howto->complain_on_overflow
-                    == complain_overflow_bitfield))
-             && ((l_rtype >> 8) & 0x1f) == rel->howto->bitsize - 1);
-
-  if (l_rsecnm == 0)
-    *secp = code_sec;
-  else if (l_rsecnm == 1)
-    {
-      *secp = data_sec;
-      l_vaddr -= bfd_section_size (abfd, code_sec);
-    }
-  else
-    {
-      bfd_set_error (bfd_error_bad_value);
-      return false;
-    }
-
-  rel->address = l_vaddr;
-
-  return true;
-}
-
-/* Mangle PowerPC NLM relocs for output.  */
-
-static boolean
-nlm_powerpc_mangle_relocs (abfd, sec, data, offset, count)
-     bfd *abfd;
-     asection *sec;
-     PTR data;
-     bfd_vma offset;
-     bfd_size_type count;
-{
-  return true;
-}
-
-/* Read a PowerPC NLM import record */
-
-static boolean
-nlm_powerpc_read_import (abfd, sym)
-     bfd *abfd;
-     nlmNAME(symbol_type) *sym;
-{
-  struct nlm_relent *nlm_relocs;       /* relocation records for symbol */
-  bfd_size_type rcount;                        /* number of relocs */
-  bfd_byte temp[NLM_TARGET_LONG_SIZE]; /* temporary 32-bit value */
-  unsigned char symlength;             /* length of symbol name */
-
-  if (bfd_read ((PTR) &symlength, sizeof (symlength), 1, abfd)
-      != sizeof (symlength))
-    {
-      bfd_set_error (bfd_error_system_call);
-      return (false);
-    }
-  sym -> symbol.the_bfd = abfd;
-  sym -> symbol.name = bfd_alloc (abfd, symlength + 1);
-  if (bfd_read ((PTR) sym -> symbol.name, symlength, 1, abfd)
-      != symlength)
-    {
-      bfd_set_error (bfd_error_system_call);
-      return (false);
-    }
-  sym -> symbol.flags = 0;
-  sym -> symbol.value = 0;
-  sym -> symbol.section = &bfd_und_section;
-  if (bfd_read ((PTR) temp, sizeof (temp), 1, abfd) != sizeof (temp))
-    {
-      bfd_set_error (bfd_error_system_call);
-      return (false);
-    }
-  rcount = bfd_h_get_32 (abfd, temp);
-  nlm_relocs = ((struct nlm_relent *)
-               bfd_alloc (abfd, rcount * sizeof (struct nlm_relent)));
-  if (nlm_relocs == (struct nlm_relent *) NULL)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return false;
-    }
-  sym -> relocs = nlm_relocs;
-  sym -> rcnt = 0;
-  while (sym -> rcnt < rcount)
-    {
-      asection *section;
-      
-      if (nlm_powerpc_read_reloc (abfd, sym, &section,
-                                 &nlm_relocs -> reloc)
-         == false)
-       return false;
-      nlm_relocs -> section = section;
-      nlm_relocs++;
-      sym -> rcnt++;
-    }
-  return true;
-}
-
-/* Write a PowerPC NLM reloc.  */
-
-static boolean
-nlm_powerpc_write_reloc (abfd, sec, rel, indx)
-     bfd *abfd;
-     asection *sec;
-     arelent *rel;
-     int indx;
-{
-  struct nlm32_powerpc_external_reloc ext;
-  asection *code_sec, *data_sec, *bss_sec;
-  asymbol *sym;
-  asection *symsec;
-  unsigned long l_symndx;
-  int l_rtype;
-  int l_rsecnm;
-  const reloc_howto_type *howto;
-  bfd_size_type address;
-
-  /* Get the sections now, for convenience.  */
-  code_sec = bfd_get_section_by_name (abfd, NLM_CODE_NAME);
-  data_sec = bfd_get_section_by_name (abfd, NLM_INITIALIZED_DATA_NAME);
-  bss_sec = bfd_get_section_by_name (abfd, NLM_UNINITIALIZED_DATA_NAME);
-
-  sym = *rel->sym_ptr_ptr;
-  symsec = bfd_get_section (sym);
-  if (indx != -1)
-    {
-      BFD_ASSERT (symsec == &bfd_und_section);
-      l_symndx = indx + 3;
-    }
-  else
-    {
-      if (symsec == code_sec)
-       l_symndx = 0;
-      else if (symsec == data_sec)
-       l_symndx = 1;
-      else if (symsec == bss_sec)
-       l_symndx = 2;
-      else
-       {
-         bfd_set_error (bfd_error_bad_value);
-         return false;
-       }
-    }
-
-  bfd_h_put_32 (abfd, (bfd_vma) l_symndx, ext.l_symndx);
-
-  for (howto = nlm_powerpc_howto_table;
-       howto < nlm_powerpc_howto_table + HOWTO_COUNT;
-       howto++)
-    {
-      if (howto->rightshift == rel->howto->rightshift
-         && howto->size == rel->howto->size
-         && howto->bitsize == rel->howto->bitsize
-         && howto->pc_relative == rel->howto->pc_relative
-         && howto->bitpos == rel->howto->bitpos
-         && (howto->partial_inplace == rel->howto->partial_inplace
-             || (! rel->howto->partial_inplace
-                 && rel->addend == 0))
-         && (howto->src_mask == rel->howto->src_mask
-             || (rel->howto->src_mask == 0
-                 && rel->addend == 0))
-         && howto->dst_mask == rel->howto->dst_mask
-         && howto->pcrel_offset == rel->howto->pcrel_offset)
-       break;
-    }
-  if (howto >= nlm_powerpc_howto_table + HOWTO_COUNT)
-    {
-      bfd_set_error (bfd_error_bad_value);
-      return false;
-    }
-
-  l_rtype = howto->type;
-  if (howto->complain_on_overflow == complain_overflow_signed)
-    l_rtype |= 0x8000;
-  l_rtype |= (howto->bitsize - 1) << 8;
-  bfd_h_put_16 (abfd, (bfd_vma) l_rtype, ext.l_rtype);
-
-  address = rel->address;
-
-  if (sec == code_sec)
-    l_rsecnm = 0;
-  else if (sec == data_sec)
-    {
-      l_rsecnm = 1;
-      address += bfd_section_size (abfd, code_sec);
-    }
-  else
-    {
-      bfd_set_error (bfd_error_bad_value);
-      return false;
-    }
-
-  bfd_h_put_16 (abfd, (bfd_vma) l_rsecnm, ext.l_rsecnm);
-  bfd_h_put_32 (abfd, (bfd_vma) address, ext.l_vaddr);
-
-  if (bfd_write (&ext, sizeof ext, 1, abfd) != sizeof ext)
-    return false;
-
-  return true;
-}
-
-/* Write a PowerPC NLM import.  */
-
-static boolean
-nlm_powerpc_write_import (abfd, sec, rel)
-     bfd *abfd;
-     asection *sec;
-     arelent *rel;
-{
-  return nlm_powerpc_write_reloc (abfd, sec, rel, -1);
-}
-
-/* Write a PowerPC NLM external symbol.  This routine keeps a static
-   count of the symbol index.  FIXME: I don't know if this is
-   necessary, and the index never gets reset.  */
-
-static boolean
-nlm_powerpc_write_external (abfd, count, sym, relocs)
-     bfd *abfd;
-     bfd_size_type count;
-     asymbol *sym;
-     struct reloc_and_sec *relocs;
-{
-  int i;
-  bfd_byte len;
-  unsigned char temp[NLM_TARGET_LONG_SIZE];
-  static int indx;
-
-  len = strlen (sym->name);
-  if ((bfd_write (&len, sizeof (bfd_byte), 1, abfd) != sizeof(bfd_byte))
-      || bfd_write (sym->name, len, 1, abfd) != len)
-    {
-      bfd_set_error (bfd_error_system_call);
-      return false;
-    }
-
-  bfd_put_32 (abfd, count, temp);
-  if (bfd_write (temp, sizeof(temp), 1, abfd) != sizeof (temp))
-    {
-      bfd_set_error (bfd_error_system_call);
-      return false;
-    }
-
-  for (i = 0; i < count; i++)
-    {
-      if (nlm_powerpc_write_reloc (abfd, relocs[i].sec,
-                                  relocs[i].rel, indx) == false)
-       return false;
-    }
-
-  ++indx;
-
-  return true;
-}
-
-#include "nlmswap.h"
-
-static const struct nlm_backend_data nlm32_powerpc_backend =
-{
-  "NetWare PowerPC Module \032",
-  sizeof (Nlm32_powerpc_External_Fixed_Header),
-  sizeof (struct nlm32_powerpc_external_prefix_header),
-  bfd_arch_powerpc,
-  0,
-  false,
-  nlm_powerpc_backend_object_p,
-  nlm_powerpc_write_prefix,
-  nlm_powerpc_read_reloc,
-  nlm_powerpc_mangle_relocs,
-  nlm_powerpc_read_import,
-  nlm_powerpc_write_import,
-  0,   /* set_public_section */
-  0,   /* get_public_offset */
-  nlm_swap_fixed_header_in,
-  nlm_swap_fixed_header_out,
-  nlm_powerpc_write_external,
-  0,   /* write_export */
-};
-
-#define TARGET_BIG_NAME                        "nlm32-powerpc"
-#define TARGET_BIG_SYM                 nlmNAME(powerpc_vec)
-#define TARGET_BACKEND_DATA            &nlm32_powerpc_backend
-
-#include "nlm-target.h"