diff options
Diffstat (limited to 'ld/testsuite/ld-scripts/script.exp')
-rw-r--r-- | ld/testsuite/ld-scripts/script.exp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp new file mode 100644 index 0000000..fe0a041 --- /dev/null +++ b/ld/testsuite/ld-scripts/script.exp @@ -0,0 +1,64 @@ +# Test basic linker script functionality +# By Ian Lance Taylor, Cygnus Support + +set testname "script" + +if ![ld_assemble $as $srcdir/$subdir/script.s tmpdir/script.o] { + unresolved $testname + return +} + +proc check_script { } { + global nm + global testname + global nm_output + + if ![ld_nm $nm tmpdir/script] { + unresolved $testname + } else { + 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)]} { + send_log "bad output from nm\n" + verbose "bad output from nm" + fail $testname + } else { + if {$nm_output(text_start) != 0x100} { + send_log "text_start == $nm_output(text_start)\n" + verbose "text_start == $nm_output(text_start)" + fail $testname + } else { if {$nm_output(text_end) < 0x104 \ + || $nm_output(text_end) > 0x110} { + send_log "text_end == $nm_output(text_end)\n" + verbose "text_end == $nm_output(text_end)" + fail $testname + } else { if {$nm_output(data_start) != 0x1000} { + send_log "data_start == $nm_output(data_start)\n" + verbose "data_start == $nm_output(data_start)" + fail $testname + } else { if {$nm_output(data_end) < 0x1004 \ + || $nm_output(data_end) > 0x1010} { + send_log "data_end == $nm_output(data_end)\n" + verbose "data_end == $nm_output(data_end)" + fail $testname + } else { + pass $testname + } } } } + } + } +} + +if ![ld_simple_link $ld tmpdir/script "-T $srcdir/$subdir/script.t tmpdir/script.o"] { + fail $testname +} else { + check_script +} + +set testname "MRI script" + +if ![ld_simple_link $ld tmpdir/script "-c $srcdir/$subdir/scriptm.t"] { + fail $testname +} else { + check_script +} |