* gas/hppa/reloc/picreloc.c: New test.
authorJeff Law <law@redhat.com>
Thu, 2 Feb 1995 07:39:23 +0000 (07:39 +0000)
committerJeff Law <law@redhat.com>
Thu, 2 Feb 1995 07:39:23 +0000 (07:39 +0000)
* gas/hppa/reloc/reloc.exp (do_pic_relocation_test): Run it.

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

index 266f4753060108bf28dfcd60d151537022577533..577c109a5a32033b6c613d1363e66abfab659067 100644 (file)
@@ -33,6 +33,7 @@ exitbug.s
 fixupbug.s
 funcrelocbug.s
 labelopbug.s
+picreloc.s
 plabelbug.s
 reduce.s
 reduce2.s
diff --git a/gas/testsuite/gas/hppa/reloc/picreloc.s b/gas/testsuite/gas/hppa/reloc/picreloc.s
new file mode 100644 (file)
index 0000000..639a44c
--- /dev/null
@@ -0,0 +1,13 @@
+
+       .SPACE  $TEXT$,SORT=8
+       .SUBSPA $CODE$,QUAD=0,ALIGN=4,ACCESS=0x2c,CODE_ONLY,SORT=24
+       .SPACE  $PRIVATE$,SORT=16
+       .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=16
+bogo
+       .ALIGN  8
+       .WORD  bogo+4   ; = 0x4
+       .STRING "\x00\x00\x00{\x00\x00\x01\xC8\x00\x00\x03\x15"
+       .SPACE  $PRIVATE$
+       .SUBSPA $DATA$
+       .EXPORT bogo
+       .END
index 0026b20cd9b9f101319bf4b00750944e54dfb0af..1d00e4192d8e9a375537caa4ff94b76aa71551e7 100755 (executable)
@@ -215,9 +215,9 @@ proc do_plabel_relocation_test {} {
        # Check that we make PLABEL relocation entries when they're needed.
        while 1 {
            expect {
-               -re "^\[0c\]0000000\[^\n\]*PLABEL\[^\n\]*\n"
+               -re "^00000000\[^\n\]*PLABEL\[^\n\]*\n"
                    { set x [expr $x+1] }
-               -re "^\[0c\]0000004\[^\n\]*PLABEL\[^\n\]*\n"
+               -re "^00000004\[^\n\]*PLABEL\[^\n\]*\n"
                    { set x [expr $x+1] }
                -re "\[^\n\]*\n"                        { }
                timeout                         { perror "timeout\n"; break }
@@ -541,7 +541,7 @@ proc do_r_no_reloc {} {
        # Make sure GAS generated a correct relocation for the reference.
        while 1 {
            expect {
-               -re "^\[0c\]00c0004\[^\n\]*PLABEL\[^\n]*g\[^\n\]*\n" 
+               -re "^000c0004\[^\n\]*PLABEL\[^\n]*g\[^\n\]*\n" 
                    { set x [expr $x+1] }
                -re "\[^\n\]*\n"                { }
                timeout                         { perror "timeout\n"; break }
@@ -559,6 +559,33 @@ proc do_r_no_reloc {} {
     }
 }
 
+proc do_pic_relocation_test {} {
+    set testname "picreloc.s: Test for proper PIC relocation (part 2)"
+    set x 0
+
+    # ELF (osf) doesn't really handle extra sections too well...
+    if [istarget hppa*-*-*elf*] then {
+       return;
+    }
+
+    gas_start "picreloc.s" "-al"
+
+    while 1 {
+       expect {
+           -re "^ +\[0-9\]+ 0000 00000004\[^\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 }
+}
 if [istarget hppa*-*-*] then {
     # Make sure we put the right relocation entry on a BLE instruction.
     do_ble_relocation_test
@@ -607,4 +634,8 @@ if [istarget hppa*-*-*] then {
     # Test for an off-by-one bug in the handling of 4-byte R_NO_RELOCATION
     # fixups.
     do_r_no_reloc
+
+    # Test a relocation problem which shows up when building shared
+    # libraries in SOM
+    do_pic_relocation_test
 }