diff options
Diffstat (limited to 'ld/testsuite/ld-scripts/sizeof.exp')
-rw-r--r-- | ld/testsuite/ld-scripts/sizeof.exp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ld/testsuite/ld-scripts/sizeof.exp b/ld/testsuite/ld-scripts/sizeof.exp new file mode 100644 index 00000000000..3bdefd4f0dc --- /dev/null +++ b/ld/testsuite/ld-scripts/sizeof.exp @@ -0,0 +1,55 @@ +# Test SIZEOF in a linker script. +# By Ian Lance Taylor, Cygnus Support +# Based on a bug report from anders.blomdell@control.lth.se. + +set testname "SIZEOF" + +if ![ld_assemble $as $srcdir/$subdir/sizeof.s tmpdir/sizeof.o] { + unresolved $testname + return +} + +if ![ld_simple_link $ld tmpdir/sizeof "-T $srcdir/$subdir/sizeof.t tmpdir/sizeof.o"] { + fail $testname + return +} + +if ![ld_nm $nm tmpdir/sizeof] { + unresolved $testname + 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" + verbose "bad output from nm" + fail $testname + return +} + +if {$nm_output(text_end) - $nm_output(text_start) != $nm_output(sizeof_text)} { + send_log "text_end - text_start != sizeof_text\n" + verbose "text_end - text_start != sizeof_text" + fail $testname + return +} + +if {$nm_output(data_end) - $nm_output(data_start) != $nm_output(sizeof_data)} { + send_log "data_end - data_start != sizeof_data\n" + verbose "data_end - data_start != sizeof_data" + fail $testname + return +} + +if {$nm_output(sizeof_text) != $nm_output(sizeof_data)} { + send_log "sizeof_text != sizeof_data\n" + verbose "sizeof_text != sizeof_data" + fail $testname + return +} + +pass $testname |