aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1995-01-11 16:49:57 +0000
committerIan Lance Taylor <ian@airs.com>1995-01-11 16:49:57 +0000
commit1db367dae07aa30b991e334955f26295348326e7 (patch)
tree5ba32405e7464b1a755cfff5f3083759849c4ec9 /ld
parent93a0630f614ba2bf6d5ec4eb69b5529b8dce1118 (diff)
downloadgdb-1db367dae07aa30b991e334955f26295348326e7.zip
gdb-1db367dae07aa30b991e334955f26295348326e7.tar.gz
gdb-1db367dae07aa30b991e334955f26295348326e7.tar.bz2
* ld-scripts/sizeof.exp: New test, based on bug report from
anders.blomdell@control.lth.se. * ld-scripts/sizeof.s: New file. * ld-scripts/sizeof.t: New file.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ld-scripts/.Sanitize3
-rw-r--r--ld/testsuite/ld-scripts/sizeof.exp46
-rw-r--r--ld/testsuite/ld-scripts/sizeof.s1
-rw-r--r--ld/testsuite/ld-scripts/sizeof.t17
4 files changed, 67 insertions, 0 deletions
diff --git a/ld/testsuite/ld-scripts/.Sanitize b/ld/testsuite/ld-scripts/.Sanitize
index b68da1b..07c5fe0 100644
--- a/ld/testsuite/ld-scripts/.Sanitize
+++ b/ld/testsuite/ld-scripts/.Sanitize
@@ -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
index 0000000..e91701c
--- /dev/null
+++ b/ld/testsuite/ld-scripts/sizeof.exp
@@ -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
index 0000000..e221ca3
--- /dev/null
+++ b/ld/testsuite/ld-scripts/sizeof.s
@@ -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
index 0000000..6244a37
--- /dev/null
+++ b/ld/testsuite/ld-scripts/sizeof.t
@@ -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);