From: Ian Lance Taylor Date: Wed, 11 Jan 1995 16:49:57 +0000 (+0000) Subject: * ld-scripts/sizeof.exp: New test, based on bug report from X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1db367dae07aa30b991e334955f26295348326e7;p=binutils-gdb.git * 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. --- diff --git a/ld/testsuite/ld-scripts/.Sanitize b/ld/testsuite/ld-scripts/.Sanitize index b68da1b6cc3..07c5fe044bc 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 00000000000..e91701c82ec --- /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 00000000000..e221ca3c0b3 --- /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 00000000000..6244a37b7ac --- /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);