* ld-scripts/sizeof.exp: New test, based on bug report from
authorIan Lance Taylor <ian@airs.com>
Wed, 11 Jan 1995 16:49:57 +0000 (16:49 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 11 Jan 1995 16:49:57 +0000 (16:49 +0000)
anders.blomdell@control.lth.se.
* ld-scripts/sizeof.s: New file.
* ld-scripts/sizeof.t: New file.

ld/testsuite/ld-scripts/.Sanitize
ld/testsuite/ld-scripts/sizeof.exp [new file with mode: 0644]
ld/testsuite/ld-scripts/sizeof.s [new file with mode: 0644]
ld/testsuite/ld-scripts/sizeof.t [new file with mode: 0644]

index b68da1b..07c5fe0 100644 (file)
@@ -29,6 +29,9 @@ defined.t
 script.exp
 script.s
 script.t
+sizeof.exp
+sizeof.s
+sizeof.t
 
 Things-to-lose:
 
diff --git a/ld/testsuite/ld-scripts/sizeof.exp b/ld/testsuite/ld-scripts/sizeof.exp
new file mode 100644 (file)
index 0000000..e91701c
--- /dev/null
@@ -0,0 +1,46 @@
+# Test SIZEOF in a linker script.
+# By Ian Lance Taylor, Cygnus Support
+# Based on a bug report from anders.blomdell@control.lth.se.
+
+if ![ld_assemble $as $srcdir$subdir/sizeof.s tmpdir/sizeof.o] { return }
+
+if ![ld_simple_link $ld tmpdir/sizeof "-T $srcdir$subdir/sizeof.t tmpdir/sizeof.o"] {
+    fail SIZEOF
+    return
+}
+
+if ![ld_nm $nm tmpdir/sizeof] {
+    fail SIZEOF
+    return
+}
+
+if {![info exists nm_output(text_start)] \
+     || ![info exists nm_output(text_end)] \
+     || ![info exists nm_output(data_start)] \
+     || ![info exists nm_output(data_end)] \
+     || ![info exists nm_output(sizeof_text)] \
+     || ![info exists nm_output(sizeof_data)]} {
+    send_log "Bad output from nm\n"
+    fail SIZEOF
+    return
+}
+
+if {$nm_output(text_end) - $nm_output(text_start) != $nm_output(sizeof_text)} {
+    send_log "text_end - text_start != sizeof_text\n"
+    fail SIZEOF
+    return
+}
+
+if {$nm_output(data_end) - $nm_output(data_start) != $nm_output(sizeof_data)} {
+    send_log "data_end - data_start != sizeof_data\n"
+    fail SIZEOF
+    return
+}
+
+if {$nm_output(sizeof_text) != $nm_output(sizeof_data)} {
+    send_log "sizeof_text != sizeof_data\n"
+    fail SIZEOF
+    return
+}
+
+pass SIZEOF
diff --git a/ld/testsuite/ld-scripts/sizeof.s b/ld/testsuite/ld-scripts/sizeof.s
new file mode 100644 (file)
index 0000000..e221ca3
--- /dev/null
@@ -0,0 +1 @@
+       .space  16
diff --git a/ld/testsuite/ld-scripts/sizeof.t b/ld/testsuite/ld-scripts/sizeof.t
new file mode 100644 (file)
index 0000000..6244a37
--- /dev/null
@@ -0,0 +1,17 @@
+SECTIONS {
+       .text :
+         {
+           text_start = .;
+           tmpdir/sizeof.o 
+           text_end = .;
+         }
+       .data : 
+         { 
+           data_start = .;
+           . = . + SIZEOF(.text);
+           data_end = .;
+         }
+}      
+
+sizeof_text = SIZEOF(.text);
+sizeof_data = SIZEOF(.data);