aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/tc-frv.c13
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/frv/allinsn.exp1
-rw-r--r--gas/testsuite/gas/frv/reloc1.d21
-rw-r--r--gas/testsuite/gas/frv/reloc1.s14
6 files changed, 49 insertions, 9 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c1c79db..e576c98 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/config/tc-frv.c b/gas/config/tc-frv.c
index 2b8d3ea..6c73cb8 100644
--- a/gas/config/tc-frv.c
+++ b/gas/config/tc-frv.c
@@ -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;
}
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 54324dd..b001c5c 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -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.
diff --git a/gas/testsuite/gas/frv/allinsn.exp b/gas/testsuite/gas/frv/allinsn.exp
index 29a742f..30cdf67 100644
--- a/gas/testsuite/gas/frv/allinsn.exp
+++ b/gas/testsuite/gas/frv/allinsn.exp
@@ -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
index 0000000..9d7d88f
--- /dev/null
+++ b/gas/testsuite/gas/frv/reloc1.d
@@ -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
index 0000000..5a5ee18
--- /dev/null
+++ b/gas/testsuite/gas/frv/reloc1.s
@@ -0,0 +1,14 @@
+ .globl f1
+begin:
+ nop
+ nop
+f1:
+ nop
+ nop
+ nop
+f2:
+ call f1
+ bra f1
+ call f2
+ bra f2
+ .space 16