* gas/hppa/reloc/fixupbug.s: New test.
authorJeff Law <law@redhat.com>
Wed, 24 Nov 1993 20:45:32 +0000 (20:45 +0000)
committerJeff Law <law@redhat.com>
Wed, 24 Nov 1993 20:45:32 +0000 (20:45 +0000)
* gas/hppa/reloc/reloc.exp: Run it.

gas/testsuite/ChangeLog
gas/testsuite/gas/hppa/reloc/.Sanitize
gas/testsuite/gas/hppa/reloc/fixupbug.s [new file with mode: 0644]
gas/testsuite/gas/hppa/reloc/reloc.exp

index ee5d0478f9689ac24fe5e4ce946c0af9da163542..b1606285aab9ee4de70fd1a29f2f9fc476951e95 100644 (file)
@@ -1,5 +1,8 @@
 Wed Nov 24 01:25:03 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)
 
+       * gas/hppa/reloc/fixupbug.s: New test.
+       * gas/hppa/reloc/reloc.exp: Run it.
+
        * gas/hppa/reloc/exitbug.s: New test.
        * gas/hppa/reloc/reloc.exp: Run it.
 
index a25d407a518b9fa2278f67f3360e4164aa70aad6..b4d9bb035668e1bdcd59172e4a7a59a71782ec1d 100644 (file)
@@ -29,6 +29,7 @@ Things-to-keep:
 blebug.s
 blebug2.s
 exitbug.s
+fixupbug.s
 labelopbug.s
 plabelbug.s
 reloc.exp
diff --git a/gas/testsuite/gas/hppa/reloc/fixupbug.s b/gas/testsuite/gas/hppa/reloc/fixupbug.s
new file mode 100644 (file)
index 0000000..8a58d02
--- /dev/null
@@ -0,0 +1,19 @@
+       .SPACE $PRIVATE$
+       .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+       .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+       .SPACE $TEXT$
+       .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+       .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+       .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8
+
+       .SPACE $TEXT$
+       .SUBSPA $CODE$
+
+       b,n     $$foo
+       nop
+       nop
+
+       .SPACE $TEXT$
+       .SUBSPA $MILLICODE$
+$$foo:
+       nop
index bfbad40f4774d7e4cc031b250200b49836cde51e..c42ac0ef79a9522fef9bb4864b6861b239466ede 100755 (executable)
@@ -240,6 +240,40 @@ proc do_exit_relocation_test {} {
     }
 }
 
+proc do_cross_space_fixup_test {} {
+    set testname "fixupbug.s: Test cross space jump/call fixup bug (part 2)"
+    set x 0
+
+    # ELF (osf) doesn't really handle extra sections too well...
+    if [istarget hppa*-*-osf*] then {
+       return;
+    }
+
+    if [gas_test_old "fixupbug.s" "" "Test cross sapce jump/call fixup bug (part 1)"] {
+       objdump_start_no_subdir "a.out" "-r"
+
+       # Make sure GAS generated a fixup/relocation for the cross-space
+       # branch/call
+       setup_xfail hppa*-*-*
+       while 1 {
+           expect {
+               -re "^00000000\[^\n\]*PCREL_CALL\[^\n\]*\n" 
+                   { set x [expr $x+1] }
+               -re "\[^\n\]*\n"                { }
+               timeout                         { error "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 we put the right relocation entry on a BLE instruction.
     do_ble_relocation_test
@@ -267,4 +301,8 @@ if [istarget hppa*-*-*] then {
     # GAS2 incorrectly generated R_EXIT relocations when .exit directives
     # were not in the source code.
     do_exit_relocation_test
+
+    # GAS2 incorrectly thought it could apply a fixup for a pc-relative
+    # branch/call which crossed different subspaces.
+    do_cross_space_fixup_test
 }