* elf64-ppc.c (ppc64_elf_howto_raw <R_PPC64_SECTOFF>): Change to a
authorAlan Modra <amodra@gmail.com>
Thu, 2 May 2002 12:35:25 +0000 (12:35 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 2 May 2002 12:35:25 +0000 (12:35 +0000)
16 bit reloc.
<R_PPC64_SECTOFF_DS>: Likewise.
(ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
SECTOFF reloc.
* elf32-ppc.c (ppc_elf_howto_raw <R_PPC_SECTOFF>): Correct.
(ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
SECTOFF reloc.

bfd/ChangeLog
bfd/elf32-ppc.c
bfd/elf64-ppc.c

index 3d9b501185a6aadd3b99597846b9dfaa84db6434..f944a8bdb8afe69f99cac519223129ef3f736a5a 100644 (file)
@@ -1,5 +1,14 @@
 2002-05-02  Alan Modra  <amodra@bigpond.net.au>
 
+       * elf64-ppc.c (ppc64_elf_howto_raw <R_PPC64_SECTOFF>): Change to a
+       16 bit reloc.
+       <R_PPC64_SECTOFF_DS>: Likewise.
+       (ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
+       SECTOFF reloc.
+       * elf32-ppc.c (ppc_elf_howto_raw <R_PPC_SECTOFF>): Correct.
+       (ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
+       SECTOFF reloc.
+
        * elf64-ppc.c (ppc64_elf_addr16_ha_reloc): Delete.
        (ppc64_elf_ha_reloc): New function.
        (ppc64_elf_brtaken_reloc): New function.
index 9549d29367e9847b2e264ede75c0777d635a4938..f68d914506a9250dc62eae5657de0da341db3ba6 100644 (file)
@@ -679,20 +679,20 @@ static reloc_howto_type ppc_elf_howto_raw[] = {
         0xffff,                /* dst_mask */
         false),                /* pcrel_offset */
 
-  /* 32-bit section relative relocation.  */
+  /* 16-bit section relative relocation.  */
   HOWTO (R_PPC_SECTOFF,                /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
-        32,                    /* bitsize */
-        true,                  /* pc_relative */
+        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_SECTOFF",       /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
-        0,                     /* dst_mask */
-        true),                 /* pcrel_offset */
+        0xffff,                /* dst_mask */
+        false),                /* pcrel_offset */
 
   /* 16-bit lower half section relative relocation.  */
   HOWTO (R_PPC_SECTOFF_LO,       /* type */
@@ -1295,7 +1295,7 @@ ppc_elf_reloc_type_lookup (abfd, code)
     case BFD_RELOC_HI16_PLTOFF:                ppc_reloc = R_PPC_PLT16_HI;             break;
     case BFD_RELOC_HI16_S_PLTOFF:      ppc_reloc = R_PPC_PLT16_HA;             break;
     case BFD_RELOC_GPREL16:            ppc_reloc = R_PPC_SDAREL16;             break;
-    case BFD_RELOC_32_BASEREL:         ppc_reloc = R_PPC_SECTOFF;              break;
+    case BFD_RELOC_16_BASEREL:         ppc_reloc = R_PPC_SECTOFF;              break;
     case BFD_RELOC_LO16_BASEREL:       ppc_reloc = R_PPC_SECTOFF_LO;           break;
     case BFD_RELOC_HI16_BASEREL:       ppc_reloc = R_PPC_SECTOFF_HI;           break;
     case BFD_RELOC_HI16_S_BASEREL:     ppc_reloc = R_PPC_SECTOFF_HA;           break;
index 339d7f9dcc136bdfeac106a75b48b2a01fa04253..d00dcf2f09a22affa68f3dd6c31751f0a412db4c 100644 (file)
@@ -617,11 +617,11 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         0xffff,                /* dst_mask */
         false),                /* pcrel_offset */
 
-  /* 32-bit section relative relocation.  */
+  /* 16-bit section relative relocation.  */
   HOWTO (R_PPC64_SECTOFF,      /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
-        32,                    /* bitsize */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
@@ -629,10 +629,10 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         "R_PPC64_SECTOFF",     /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
-        0xffffffff,            /* dst_mask */
+        0xffff,                /* dst_mask */
         false),                /* pcrel_offset */
 
-  /* 16-bit lower half section relative relocation.  */
+  /* Like R_PPC64_SECTOFF, but no overflow warning.  */
   HOWTO (R_PPC64_SECTOFF_LO,   /* type */
         0,                     /* rightshift */
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
@@ -1072,8 +1072,8 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
   /* Like R_PPC64_SECTOFF, but for instructions with a DS field.  */
   HOWTO (R_PPC64_SECTOFF_DS,   /* type */
         0,                     /* rightshift */
-        2,                     /* size (0 = byte, 1 = short, 2 = long) */
-        32,                    /* bitsize */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
         false,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
@@ -1081,7 +1081,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
         "R_PPC64_SECTOFF_DS",  /* name */
         false,                 /* partial_inplace */
         0,                     /* src_mask */
-        0xfffffffc,            /* dst_mask */
+        0xfffc,                /* dst_mask */
         false),                /* pcrel_offset */
 
   /* Like R_PPC64_SECTOFF_LO, but for instructions with a DS field.  */
@@ -1280,7 +1280,7 @@ ppc64_elf_reloc_type_lookup (abfd, code)
       break;
     case BFD_RELOC_HI16_S_PLTOFF:       ppc_reloc = R_PPC64_PLT16_HA;
       break;
-    case BFD_RELOC_32_BASEREL:          ppc_reloc = R_PPC64_SECTOFF;
+    case BFD_RELOC_16_BASEREL:          ppc_reloc = R_PPC64_SECTOFF;
       break;
     case BFD_RELOC_LO16_BASEREL:        ppc_reloc = R_PPC64_SECTOFF_LO;
       break;