* gas/vtable/vtable.exp: New.
authorRichard Henderson <rth@redhat.com>
Mon, 31 Aug 1998 19:49:48 +0000 (19:49 +0000)
committerRichard Henderson <rth@redhat.com>
Mon, 31 Aug 1998 19:49:48 +0000 (19:49 +0000)
        * gas/vtable/{entry0.s,entry0.d}: New.
        * gas/vtable/{entry1.s,entry1.d}: New.
        * gas/vtable/{inherit0.s,inherit0.d}: New.
        * gas/vtable/{inherit1.s,inherit1.l}: New.

gas/testsuite/ChangeLog
gas/testsuite/gas/vtable/entry0.d [new file with mode: 0644]
gas/testsuite/gas/vtable/entry0.s [new file with mode: 0644]
gas/testsuite/gas/vtable/entry1.d [new file with mode: 0644]
gas/testsuite/gas/vtable/entry1.s [new file with mode: 0644]
gas/testsuite/gas/vtable/inherit0.d [new file with mode: 0644]
gas/testsuite/gas/vtable/inherit0.s [new file with mode: 0644]
gas/testsuite/gas/vtable/inherit1.l [new file with mode: 0644]
gas/testsuite/gas/vtable/inherit1.s [new file with mode: 0644]
gas/testsuite/gas/vtable/vtable.exp [new file with mode: 0644]

index 9b21525db4baf1ab9da01be1f49c97e250303adb..e211b70dc71e84370848e45d834bf04026020560 100644 (file)
@@ -1,3 +1,11 @@
+Mon Aug 31 12:45:49 1998  Richard Henderson  <rth@cygnus.com>
+
+       * gas/vtable/vtable.exp: New.
+       * gas/vtable/{entry0.s,entry0.d}: New.
+       * gas/vtable/{entry1.s,entry1.d}: New.
+       * gas/vtable/{inherit0.s,inherit0.d}: New.
+       * gas/vtable/{inherit1.s,inherit1.l}: New.
+
 Thu Aug 20 23:18:06 1998  Ian Lance Taylor  <ian@cygnus.com>
 
        * gas/i386/white.l: Revert patch of August 12.
diff --git a/gas/testsuite/gas/vtable/entry0.d b/gas/testsuite/gas/vtable/entry0.d
new file mode 100644 (file)
index 0000000..6d77125
--- /dev/null
@@ -0,0 +1,10 @@
+#objdump: -r
+#name: vtable entry0
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[.text\]:
+OFFSET   TYPE              VALUE 
+0+0000010 R_.*_GNU_VTENTRY  vtbl_a
+
+
diff --git a/gas/testsuite/gas/vtable/entry0.s b/gas/testsuite/gas/vtable/entry0.s
new file mode 100644 (file)
index 0000000..36f89e3
--- /dev/null
@@ -0,0 +1,2 @@
+.text
+.vtable_entry vtbl_a, 16
diff --git a/gas/testsuite/gas/vtable/entry1.d b/gas/testsuite/gas/vtable/entry1.d
new file mode 100644 (file)
index 0000000..e7b132b
--- /dev/null
@@ -0,0 +1,10 @@
+#objdump: -r
+#name: vtable entry1
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[.text\]:
+OFFSET   TYPE              VALUE 
+0+0000000 R_.*_GNU_VTENTRY  vtbl_a\+0x0+10
+
+
diff --git a/gas/testsuite/gas/vtable/entry1.s b/gas/testsuite/gas/vtable/entry1.s
new file mode 100644 (file)
index 0000000..36f89e3
--- /dev/null
@@ -0,0 +1,2 @@
+.text
+.vtable_entry vtbl_a, 16
diff --git a/gas/testsuite/gas/vtable/inherit0.d b/gas/testsuite/gas/vtable/inherit0.d
new file mode 100644 (file)
index 0000000..4687949
--- /dev/null
@@ -0,0 +1,10 @@
+#objdump: -r
+#name: vtable inherit0
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[.data\]:
+OFFSET   TYPE              VALUE 
+0+0000000 R_.*_GNU_VTINHERIT  \*ABS\*
+0+0000010 R_.*_GNU_VTINHERIT  vtbl_a
+
diff --git a/gas/testsuite/gas/vtable/inherit0.s b/gas/testsuite/gas/vtable/inherit0.s
new file mode 100644 (file)
index 0000000..37f1b95
--- /dev/null
@@ -0,0 +1,13 @@
+.data
+
+.type vtbl_a,@object
+vtbl_a:
+       .space 16
+.size vtbl_a,16
+.vtable_inherit vtbl_a, 0
+
+.type vtbl_b,@object
+vtbl_b:
+       .space 16
+.size vtbl_b,16
+.vtable_inherit vtbl_b, vtbl_a
diff --git a/gas/testsuite/gas/vtable/inherit1.l b/gas/testsuite/gas/vtable/inherit1.l
new file mode 100644 (file)
index 0000000..cbf9d2c
--- /dev/null
@@ -0,0 +1,6 @@
+.*: Assembler messages:
+.*:1: Error: expected `vtbl_a' to have already been set for .vtable_inherit
+GAS LISTING.*
+
+
+ +1.*vtable_inherit vtbl_a, 0
diff --git a/gas/testsuite/gas/vtable/inherit1.s b/gas/testsuite/gas/vtable/inherit1.s
new file mode 100644 (file)
index 0000000..7dd1d28
--- /dev/null
@@ -0,0 +1 @@
+.vtable_inherit vtbl_a, 0
diff --git a/gas/testsuite/gas/vtable/vtable.exp b/gas/testsuite/gas/vtable/vtable.exp
new file mode 100644 (file)
index 0000000..8ef589b
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# vtable tests
+#
+proc run_list_test { name opts } {
+    global srcdir subdir
+    set testname "vtable $name"
+    set file $srcdir/$subdir/$name
+    gas_run ${name}.s $opts ">&dump.out"
+    if { [regexp_diff "dump.out" "${file}.l"] } then {
+       fail $testname
+       verbose "output is [file_contents "dump.out"]" 2
+       return
+    }
+    pass $testname
+}
+
+# Vtable bits are only supported by ELF targets.
+if {[istarget "*-*-elf*"] || [istarget "*-*-linux*"]} then {
+
+    run_dump_test "inherit0" 
+    run_list_test "inherit1" "-al"
+
+    # The vtable entry results are different on Rel and Rela targets.
+    if {[istarget "i*86-*-*"] || [istarget "mips*-*-*"]} then {
+
+       run_dump_test "entry0"
+
+    } else {
+
+       run_dump_test "entry1"
+
+    }
+}