* config/tc-alpha.c (md_pcrel_from): Only adjust special for
authorRichard Henderson <rth@redhat.com>
Thu, 19 Sep 2002 16:13:38 +0000 (16:13 +0000)
committerRichard Henderson <rth@redhat.com>
Thu, 19 Sep 2002 16:13:38 +0000 (16:13 +0000)
        branch type relocs.
        (alpha_force_relocation): Don't special-case branch type relocs.

        * gas/alpha/elf-reloc-7.s: New.
        * gas/alpha/elf-reloc-7.d: New.
        * gas/alpha/alpha.exp: Run it.

gas/ChangeLog
gas/config/tc-alpha.c
gas/testsuite/ChangeLog
gas/testsuite/gas/alpha/alpha.exp
gas/testsuite/gas/alpha/elf-reloc-7.d [new file with mode: 0644]
gas/testsuite/gas/alpha/elf-reloc-7.s [new file with mode: 0644]

index c9a9cd7894e86876b42f9f2e002745e166569bb6..a4cc1f1574b88b685dd1ab47450c4a81a572df6b 100644 (file)
@@ -1,3 +1,9 @@
+2002-09-19  Richard Henderson  <rth@redhat.com>
+
+       * config/tc-alpha.c (md_pcrel_from): Only adjust special for
+       branch type relocs.
+       (alpha_force_relocation): Don't special-case branch type relocs.
+
 2002-09-19  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-m68k.c (select_control_regs): Handle situation where
index 7b65354aef642a2e68ab70005bdd618ba2542f72..0dc875b2cf54dc63c38c793048dae904a91c02e9 100644 (file)
@@ -1139,12 +1139,12 @@ md_pcrel_from (fixP)
   valueT addr = fixP->fx_where + fixP->fx_frag->fr_address;
   switch (fixP->fx_r_type)
     {
-    case BFD_RELOC_ALPHA_GPDISP:
-    case BFD_RELOC_ALPHA_GPDISP_HI16:
-    case BFD_RELOC_ALPHA_GPDISP_LO16:
-      return addr;
+    case BFD_RELOC_23_PCREL_S2:
+    case BFD_RELOC_ALPHA_HINT:
+    case BFD_RELOC_ALPHA_BRSGP:
+      return addr + 4;
     default:
-      return fixP->fx_size + addr;
+      return addr;
     }
 }
 
@@ -1501,10 +1501,6 @@ alpha_force_relocation (f)
     case BFD_RELOC_ALPHA_TPREL16:
       return 1;
 
-    case BFD_RELOC_23_PCREL_S2:
-    case BFD_RELOC_ALPHA_HINT:
-      return 0;
-
     default:
       break;
     }
index 6ba656705cde06e6060b26404420e81fa9233549..a9490153cb385818663b7bd4ea351e4a4f4643d9 100644 (file)
@@ -1,3 +1,9 @@
+2002-09-19  Richard Henderson  <rth@redhat.com>
+
+       * gas/alpha/elf-reloc-7.s: New.
+       * gas/alpha/elf-reloc-7.d: New.
+       * gas/alpha/alpha.exp: Run it.
+
 2002-09-18  Chris Demetriou  <cgd@broadcom.com>
 
        * gas/mips/mips-abi32-pic2.s: New file.
index 6564cf9e4f4efa3c14524a963822965462b08a6b..f0ac5158636d23ea4fc065f4073b914ae0780221 100644 (file)
@@ -29,6 +29,7 @@ if { [istarget alpha*-*-*] } then {
        run_dump_test "elf-reloc-4"
        run_dump_test "elf-reloc-5"
        run_list_test "elf-reloc-6" ""
+       run_dump_test "elf-reloc-7"
        run_dump_test "elf-tls-1"
        run_list_test "elf-tls-2" ""
        run_list_test "elf-tls-3" ""
diff --git a/gas/testsuite/gas/alpha/elf-reloc-7.d b/gas/testsuite/gas/alpha/elf-reloc-7.d
new file mode 100644 (file)
index 0000000..9ff7ff1
--- /dev/null
@@ -0,0 +1,22 @@
+#objdump: -r
+#name: alpha elf-reloc-7
+
+.*:     file format elf64-alpha
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET           TYPE              VALUE 
+0*0000008 BRADDR            bar
+
+
+RELOCATION RECORDS FOR \[\.data\]:
+OFFSET           TYPE              VALUE 
+0*0000004 SREL32            \.data2\+0x0*0000004
+0*0000008 SREL32            BAR
+
+
+RELOCATION RECORDS FOR \[\.text2\]:
+OFFSET           TYPE              VALUE 
+0*0000004 BRADDR            \.text\+0x0*0000010
+0*0000008 BRADDR            bar
+
+
diff --git a/gas/testsuite/gas/alpha/elf-reloc-7.s b/gas/testsuite/gas/alpha/elf-reloc-7.s
new file mode 100644 (file)
index 0000000..d6409ea
--- /dev/null
@@ -0,0 +1,26 @@
+       .section .data2,"wa"
+       .globl BAR
+       .long 0
+FOO:   .long 0
+BAR:   .long 0
+       .long FOO - .
+       .long BAR - .
+
+       .data
+       .long 0
+       .long FOO - .
+       .long BAR - .
+
+       .text
+       .globl bar
+       nop
+       br foo
+       br bar
+       nop
+foo:   nop
+bar:   nop
+
+       .section .text2,"ax"
+       nop
+       br foo
+       br bar