* gas/config/tc-hppa.h (obj_frob_symbol): Delete ELF specific
authorJeff Law <law@redhat.com>
Tue, 15 Nov 1994 18:35:32 +0000 (18:35 +0000)
committerJeff Law <law@redhat.com>
Tue, 15 Nov 1994 18:35:32 +0000 (18:35 +0000)
definition.
(tc_frob_symbol): Make this condition on OBJ_SOM or OBJ_ELF.  For
ELF, subtract out the symbol->section->vma for non-common symbols.

* gas/testsuite/gas/hppa/unsorted/unsorted.exp (importbug): Tweak
to match current expected ELF output.
* gas/testsuite/gas/hppa/reloc/reloc.exp
(do_plabel_relocation_test, do_r_no_reloc): Likewise.

gas/ChangeLog
gas/testsuite/ChangeLog
gas/testsuite/gas/hppa/reloc/reloc.exp
gas/testsuite/gas/hppa/unsorted/unsorted.exp

index 44d7e29d5e16e8d8cd5e4fc59343d79ca074379a..2cd93ca802fbdd063a15c3209c9241de6f4d4a91 100644 (file)
@@ -1,3 +1,10 @@
+Tue Nov 15 11:10:43 1994  Jeff Law  (law@snake.cs.utah.edu)
+
+       * config/tc-hppa.h (obj_frob_symbol): Delete.
+       (tc_frob_symbol): Make definition conditional on OBJ_SOM or
+       OBJ_ELF.  For ELF subtract out symbol->section->vma for non common
+       symbols.
+
 Wed Nov  9 14:53:03 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>
 
        * config/te-delta.h: New file, derived from te-sysv32.h.
index 0cb567b2128065e0e24275c06ee80dde173a7b71..32e63283bc3c0409088d7c2f18015371a64d0e82 100644 (file)
@@ -1,3 +1,16 @@
+Tue Nov 15 11:09:57 1994  Jeff Law  (law@snake.cs.utah.edu)
+
+       * gas/hppa/unsorted/unsorted.exp (importbug): Tweak to match
+       current expected PA ELF output.
+       * gas/hppa/reloc/reloc.exp (do_r_no_reloc): Likewise.
+       (do_plabel_relocation_test): Likewise.
+
+Thu Nov  3 18:14:09 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>
+
+       * gas/all/p1480.s: Use larger constant, so expression can have a
+       positive value.
+       * gas/all/gas.exp: Expect p1480.s without listings to pass.
+
 Thu Nov  3 15:43:46 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
 
        * gas/mips/ulh.d, gas/mips/ulw.d, gas/mips/ush.d, gas/mips/usw.d:
index ae93efc07d8b056e80e7b30a299b93a2d3656fb1..0026b20cd9b9f101319bf4b00750944e54dfb0af 100755 (executable)
@@ -122,6 +122,39 @@ proc do_relocation_reduction_tests {} {
 
     # Did we find what we were looking for?  If not, flunk it.
     if [expr $x==2] then { pass $testname } else { fail $testname }
+
+    set testname "reduce3.s: Test even more relocation reductions (part 2)"
+    set x 0
+
+    if [gas_test_old "reduce3.s" "" "Even more relocation reductions (part1)"] then {
+       objdump_start_no_subdir "a.out" "-r"
+
+       # Check to make sure relocations involving procedure labels 
+       # are not reduced to a relocation involving some other symbol.
+       # Doing so makes generating parameter relocation stubs impossible.
+       while 1 {
+           expect {
+               -re "^0000000c\[^\n\]*yabba\[^\n\+\]*\n"
+                   { set x [expr $x+1] }
+               -re "^0000000c\[^\n\]*yabba\+\[^\n\]*\n"
+                   { set x 0; break }
+               -re "^00000010\[^\n\]*yabba\[^\n\+\]*\n"
+                   { set x [expr $x+1] }
+               -re "^00000010\[^\n\]*yabba\+\[^\n\]*\n"
+                   { set x 0; break }
+               -re "\[^\n\]*\n"                { }
+               timeout                         { perror "timeout\n"; break }
+               eof                             { break }
+            }
+       }
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    objdump_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x==2] then { pass $testname } else { fail $testname }
 }
 
 proc do_ble_mode_selector_test {} {
@@ -149,6 +182,29 @@ proc do_ble_mode_selector_test {} {
     if [expr $x==2] then { pass $testname } else { fail $testname }
 }
 
+proc do_ble_relocation_test {} {
+    set testname "blebug3.s: blebug3"
+    set x 0
+
+    gas_start "blebug3.s" "-al"
+
+    while 1 {
+       expect {
+           -re "^ +\[0-9\]+ 0000 E4002000\[^\n\]*\n"   { set x [expr $x+1] }
+           -re "\[^\n\]*\n"                            { }
+           timeout                             { perror "timeout\n"; break }
+           eof                                 { break }
+       }
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x==1] then { pass $testname } else { fail $testname }
+}
+
 proc do_plabel_relocation_test {} {
     set testname "plabelbug.s: Old gas-1.36 plabel bug (part 2)"
     set x 0
@@ -159,9 +215,9 @@ proc do_plabel_relocation_test {} {
        # Check that we make PLABEL relocation entries when they're needed.
        while 1 {
            expect {
-               -re "^\[04\]0000000\[^\n\]*PLABEL\[^\n\]*\n"
+               -re "^\[0c\]0000000\[^\n\]*PLABEL\[^\n\]*\n"
                    { set x [expr $x+1] }
-               -re "^\[04\]0000004\[^\n\]*PLABEL\[^\n\]*\n"
+               -re "^\[0c\]0000004\[^\n\]*PLABEL\[^\n\]*\n"
                    { set x [expr $x+1] }
                -re "\[^\n\]*\n"                        { }
                timeout                         { perror "timeout\n"; break }
@@ -485,7 +541,7 @@ proc do_r_no_reloc {} {
        # Make sure GAS generated a correct relocation for the reference.
        while 1 {
            expect {
-               -re "^000c0004\[^\n\]*PLABEL\[^\n]*g\[^\n\]*\n" 
+               -re "^\[0c\]00c0004\[^\n\]*PLABEL\[^\n]*g\[^\n\]*\n" 
                    { set x [expr $x+1] }
                -re "\[^\n\]*\n"                { }
                timeout                         { perror "timeout\n"; break }
@@ -514,6 +570,10 @@ if [istarget hppa*-*-*] then {
     # Check that mode selectors on a ble instruction actually work.
     do_ble_mode_selector_test
 
+    # Check that we take the -8 adjustment into account when zeroing
+    # out the displacement field in a ble instruction with a reloc
+    do_ble_relocation_test
+
     # 1.36 simply didn't generate all the plabels it should have.  Make
     # sure gas-2 does.
     do_plabel_relocation_test
index b3a923ec86ac111392a202b2d541b7ff90775401..66c52a1ed5472324c7e3901bdc52da5053aa7832 100755 (executable)
@@ -120,6 +120,7 @@ proc do_align3_test {} {
        while 1 {
            expect {
                -re "\[^\n\]* <main> nop\[^\n\]*\n"             { set x 1 }
+               -re "\[^\n\]* <.*end_main> nop\[^\n\]*\n"               { set x 1 }
                -re "\[^\n\]* <main+.*> nop\[^\n\]*\n"          { set x 0 }
                -re "\[^\n\]*\n"                                { }
                timeout                         { perror "timeout\n"; break }
@@ -136,6 +137,32 @@ proc do_align3_test {} {
     }
 }
 
+proc do_import_test {} {
+    set testname "importbug.s: Test for bug in .import directive (part2)"
+    set x 0
+
+    if [gas_test_old "importbug.s" "" "Test for bug in .import directive (part1)"] {
+       objdump_start_no_subdir "a.out" "--syms"
+
+       while 1 {
+           expect {
+               -re "\[^\n\]*.DATA..foo\[^\n\]*\n"              { set x 1 }
+               -re "\[^\n\]*.data.*foo\[^\n\]*\n"              { set x 1 }
+               -re "\[^\n\]*\n"                                { }
+               timeout                         { perror "timeout\n"; break }
+               eof                             { break }
+           }
+       }
+
+       # This was intended to do any cleanup necessary.  It kinda looks like it
+       # isn't needed, but just in case, please keep it in for now.
+       objdump_finish
+
+       # Did we find what we were looking for?  If not, flunk it.
+       if [expr $x==1] then { pass $testname } else { fail $testname }
+    }
+}
+
 if [istarget hppa*-*-*] then {
     # Make sure subspace alignment requests from the subspace directives
     # are honored
@@ -157,5 +184,9 @@ if [istarget hppa*-*-*] then {
     # same source file.
     setup_xfail hppa*-*-*
     gas_test "globalbug.s" "" "" "Use \$global\$ in file which defines it"
+
+    # Test that importing a defined symbol doesn't screw up the symbol's
+    # space/subspace.
+    do_import_test
 }