diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-frv.c | 13 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/frv/allinsn.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/frv/reloc1.d | 21 | ||||
-rw-r--r-- | gas/testsuite/gas/frv/reloc1.s | 14 |
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 |