PR gas/3041
authorNick Clifton <nickc@redhat.com>
Tue, 15 May 2007 09:21:24 +0000 (09:21 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 15 May 2007 09:21:24 +0000 (09:21 +0000)
* config/tc-m68k.c (relaxable_symbol): Make sure that the correct addend is stored for relocs against weak symbols.
    (md_apply_fix): So not loose track of addend for relocs against weak symbols.
* testsuite/gas/m68k/p3041.s: New test case.
* testsuite/gas/m68k/p3041.d: New expected disassembly.
* testsuite/gas/m68k/all.exp: Run new test for m68k-*-netbsd toolchains.
    Only run arch-cpu-1 test for ELF based toolchains.

    Tidy ups for m68k-netbsd gas toolchain:
* testsuite/gas/m68k/cpu32.d: Allow for extra text after expected disassembly.
* testsuite/gas/m68k/mcf-trap.d: Allow for alternative trap mnemonics.
* testsuite/gas/m68k/br-isab.d: Fix name of test.
* testsuite/gas/m68k/br-isac.d: Fix name of test.

gas/ChangeLog
gas/config/tc-m68k.c
gas/testsuite/ChangeLog
gas/testsuite/gas/m68k/all.exp
gas/testsuite/gas/m68k/br-isab.d
gas/testsuite/gas/m68k/br-isac.d
gas/testsuite/gas/m68k/cpu32.d
gas/testsuite/gas/m68k/mcf-trap.d
gas/testsuite/gas/m68k/p3041.d [new file with mode: 0644]
gas/testsuite/gas/m68k/p3041.s [new file with mode: 0644]

index 3f0e5e8f488ec41af368c355609eb3c28de3fd1c..2a03e5acb116beb97ce4d036fd40e0bcc19cfaef 100644 (file)
@@ -1,3 +1,11 @@
+2007-05-15  Vincent Riviere  <vincent.riviere@freesbee.fr>     
+
+       PR gas/3041
+       * config/tc-m68k.c (relaxable_symbol): Make sure that the correct
+       addend is stored for relocs against weak symbols.
+       (md_apply_fix): So not loose track of addend for relocs against
+       weak symbols.
+
 2007-05-14  Thiemo Seufer  <ths@mips.com>
 
        * config/tc-mips.c (md_parse_option): Fix parsing of -O option.
index dd95139f1b4e531f2bdb044cfe904df52ef7f4c7..8ae1f3cfa1e479de94e90d581e8f6ef4fd744cf5 100644 (file)
@@ -1160,8 +1160,9 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
           && S_IS_WEAK (fixp->fx_addsy)
           && ! bfd_is_und_section (S_GET_SEGMENT (fixp->fx_addsy)))
     /* PR gas/3041 Adjust addend in order to force bfd_install_relocation()
-       to put a zero value into frags referencing a weak symbol.  */
-    reloc->addend = - S_GET_VALUE (fixp->fx_addsy);
+       to put the symbol offset into frags referencing a weak symbol.  */
+    reloc->addend = fixp->fx_addnumber
+                   - (S_GET_VALUE (fixp->fx_addsy) * 2);
   else
     reloc->addend = 0;
 #else
@@ -4702,10 +4703,11 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
       return;
     }
 #elif defined(OBJ_AOUT)
-  /* PR gas/3041 Always put zero values into frags referencing a weak symbol.  */
+  /* PR gas/3041 Do not fix frags referencing a weak symbol.  */
   if (fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy))
     {
       memset (buf, 0, fixP->fx_size);
+      fixP->fx_addnumber = val;        /* Remember value for emit_reloc.  */
       return;
     }
 #endif
index f707a6aa2b98c58e220c4c44772be14cb847affe..4b4b2dba8838ec1d5f8dd2498ec1ab1bc47ae4b5 100644 (file)
@@ -1,3 +1,19 @@
+2007-05-15  Vincent Riviere  <vincent.riviere@freesbee.fr>
+           Nick Clifton  <nickc@redhat.com>
+
+       PR gas/3041
+       * gas/m68k/p3041.s: New test case.
+       * gas/m68k/p3041.d: New expected disassembly.
+       * gas/m68k/all.exp: Run new test for m68k-*-netbsd toolchains.
+       Only run arch-cpu-1 test for ELF based toolchains.
+
+       Tidy ups for m68k-netbsd gas toolchain:
+       * gas/m68k/cpu32.d: Allow for extra text after expected
+       disassembly.
+       * gas/m68k/mcf-trap.d: Allow for alternative trap mnemonics.
+       * gas/m68k/br-isab.d: Fix name of test.
+       * gas/m68k/br-isac.d: Fix name of test.
+       
 2007-05-14  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR binutils/4502
index 7153e7b022a1b98eb1fc3f68da1e35d394ff9652..cafae92d19c11dcfe6675ca8766541805f9809d6 100644 (file)
@@ -54,7 +54,9 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
     run_dump_test mcf-emac
     run_dump_test mcf-fpu
     run_dump_test mcf-trap
-    run_dump_test arch-cpu-1
+    if { [istarget *-*-elf] || [istarget *-*-linux*] } then {
+      run_dump_test arch-cpu-1
+    }
     run_dump_test cpu32
 
     run_dump_test br-isaa
@@ -64,6 +66,10 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
     run_dump_test ctrl-1
     run_dump_test ctrl-2
 
+    if { [istarget *-*-netbsd] } then {
+      run_dump_test p3041
+    }
+
     set testname "68000 operands"
     gas_run "operands.s" "-m68000" "2>err.out"
     if ![string match "child process exited abnormally" $comp_output] then {
index 7ba48ff4d8e6697edec94d4ef2906300c6207542..20e093f734d319f444c33e741e56d73a2b7fac5a 100644 (file)
@@ -1,4 +1,4 @@
-#name: br-isaa.d
+#name: br-isab.d
 #objdump: -d
 #as: -march=isab -pcrel
 
index 4a420ea2c614d895af37bd01babd44ff46853469..126ff464bb8b9639db2954b4018df7ed1bcb52e6 100644 (file)
@@ -1,4 +1,4 @@
-#name: br-isaa.d
+#name: br-isac.d
 #objdump: -d
 #as: -march=isac -pcrel
 
index 84f1d67d420a9bcd3e494dd9496724f117ac3bb1..e7054a39473372e09d28f5b7ac3e665b41a5b35a 100644 (file)
@@ -32,3 +32,4 @@ Disassembly of section .text:
 [ 0-9a-f]+:    f810 1d00       tblsnb %a0@,%d1
 [ 0-9a-f]+:    f810 1d40       tblsnw %a0@,%d1
 [ 0-9a-f]+:    f810 1d80       tblsnl %a0@,%d1
+#...
index f899b69e1d51e7c6330f276204a2b11180018067..63d18fd7bfd4cb34a36a618cfe0312bda16f3804 100644 (file)
@@ -7,9 +7,9 @@
 Disassembly of section .text:
 
 0+ <.text>:
-[ 0-9a-f]+:    51fc            tpf
-[ 0-9a-f]+:    51fa 1234       tpfw #4660
-[ 0-9a-f]+:    51fb 1234 5678  tpfl #305419896
-[ 0-9a-f]+:    51fc            tpf
-[ 0-9a-f]+:    51fa 1234       tpfw #4660
-[ 0-9a-f]+:    51fb 1234 5678  tpfl #305419896
+[ 0-9a-f]+:    51fc            t[rap]*f
+[ 0-9a-f]+:    51fa 1234       t[rap]*fw #4660
+[ 0-9a-f]+:    51fb 1234 5678  t[rap]*fl #305419896
+[ 0-9a-f]+:    51fc            t[rap]*f
+[ 0-9a-f]+:    51fa 1234       t[rap]*fw #4660
+[ 0-9a-f]+:    51fb 1234 5678  t[rap]*fl #305419896
diff --git a/gas/testsuite/gas/m68k/p3041.d b/gas/testsuite/gas/m68k/p3041.d
new file mode 100644 (file)
index 0000000..b4a41c4
--- /dev/null
@@ -0,0 +1,15 @@
+#name: PR 3041
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section .text:
+
+0+ <.*>:
+   0:  4ef9 0000 0002 [        ]+jmp 2 <mylabel-0x6>
+                       2: .*   mylabel
+   6:  4e71 [  ]+nop
+
+0+8 <mylabel>:
+   8:  4e71 [  ]+nop
+   a:  4e71 [  ]+nop
diff --git a/gas/testsuite/gas/m68k/p3041.s b/gas/testsuite/gas/m68k/p3041.s
new file mode 100644 (file)
index 0000000..96a8910
--- /dev/null
@@ -0,0 +1,6 @@
+       jmp     mylabel+2
+       nop
+       .weak   mylabel
+mylabel:
+       nop
+       nop