gas/
authorRichard Sandiford <rdsandiford@googlemail.com>
Fri, 5 Sep 2003 07:18:27 +0000 (07:18 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Fri, 5 Sep 2003 07:18:27 +0000 (07:18 +0000)
* config/tc-frv.c (md_pcrel_from_section): Heed TC_FORCE_RELOCATION.

gas/testsuite/
* gas/frv/reloc1.[sd]: New test.
* gas/frv/allinsn.exp: Run it.

gas/ChangeLog
gas/config/tc-frv.c
gas/testsuite/ChangeLog
gas/testsuite/gas/frv/allinsn.exp
gas/testsuite/gas/frv/reloc1.d [new file with mode: 0644]
gas/testsuite/gas/frv/reloc1.s [new file with mode: 0644]

index c1c79db44e43b598facb5a8f77e182b09a558b8d..e576c98b426cb27b2ca46aa49381de078ce49e78 100644 (file)
@@ -1,3 +1,7 @@
+2003-09-05  Richard Sandiford  <rsandifo@redhat.com>
+
+       * config/tc-frv.c (md_pcrel_from_section): Heed TC_FORCE_RELOCATION.
+
 2003-09-04  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-v850.c (set_machine): Accept v850e1 machine number.
index 2b8d3ea88d4f569a08af6f81c9a4f3faaf6816b1..6c73cb81cf1f5d3745bdc4c248bace015877f17d 100644 (file)
@@ -1164,16 +1164,11 @@ md_convert_frag (abfd, sec, fragP)
 long
 md_pcrel_from_section (fixP, sec)
      fixS * fixP;
-     segT   sec;
+     segT   sec ATTRIBUTE_UNUSED;
 {
-  if (fixP->fx_addsy != (symbolS *) NULL
-      && (! S_IS_DEFINED (fixP->fx_addsy)
-         || S_GET_SEGMENT (fixP->fx_addsy) != sec))
-    {
-      /* The symbol is undefined (or is defined but not in this section).
-        Let the linker figure it out.  */
-      return 0;
-    }
+  /* Make no adjustment for relocations that will be written out.  */
+  if (TC_FORCE_RELOCATION (fixP))
+    return 0;
 
   return (fixP->fx_frag->fr_address + fixP->fx_where) & ~1;
 }
index 54324dd911e451cf931bfcf4e737babe5bb4ee86..b001c5c3cc7ffc5a92cb0dbfa3670dc14f28346b 100644 (file)
@@ -1,3 +1,8 @@
+2003-09-05  Richard Sandiford  <rsandifo@redhat.com>
+
+       * gas/frv/reloc1.[sd]: New test.
+       * gas/frv/allinsn.exp: Run it.
+
 2003-09-04  Nick Clifton  <nickc@redhat.com>
 
        * gas/v850/v850e1.s: New test source file.
index 29a742f8bd62e23e57e8c3605192149d5e2c2c66..30cdf6718854de990517c8083464cc86cebe6d78 100644 (file)
@@ -2,4 +2,5 @@
 
 if [istarget frv*-*-*] {
     run_dump_test "allinsn"
+    run_dump_test "reloc1"
 }
diff --git a/gas/testsuite/gas/frv/reloc1.d b/gas/testsuite/gas/frv/reloc1.d
new file mode 100644 (file)
index 0000000..9d7d88f
--- /dev/null
@@ -0,0 +1,21 @@
+#objdump: -dr
+
+.* elf32-frv
+
+Disassembly.*:
+
+.* <begin>:
+.*:    80 88 00 00 *   nop
+.*:    80 88 00 00 *   nop
+.* <f1>:
+.*:    80 88 00 00 *   nop
+.*:    80 88 00 00 *   nop
+.*:    80 88 00 00 *   nop
+.* <f2>:
+.*:    80 3c 00 00 *   call.*
+                       .*: R_FRV_LABEL24       f1
+.*:    c0 1a 00 00 *   bra.*
+                       .*: R_FRV_LABEL16       f1
+.*:    fe 3f ff fe *   call .* <f2>
+.*:    c0 1a ff fd *   bra .* <f2>
+       \.\.\.
diff --git a/gas/testsuite/gas/frv/reloc1.s b/gas/testsuite/gas/frv/reloc1.s
new file mode 100644 (file)
index 0000000..5a5ee18
--- /dev/null
@@ -0,0 +1,14 @@
+       .globl  f1
+begin:
+       nop
+       nop
+f1:
+       nop
+       nop
+       nop
+f2:
+       call    f1
+       bra     f1
+       call    f2
+       bra     f2
+       .space  16