it does not already exist.
* ld.bootstrap/bootstrap.exp: Don't create tmpdir here.
* ld.cdtest/cdtest.exp: Likewise.
* ld.scripts/defined.exp: Likewise. Also, don't set as and nm
here. Change perror for no variables found to fail.
* ld.scripts/script.exp: New test.
* ld.scripts/script.t, ld.scripts/script.s: New files.
+Wed Sep 28 12:18:54 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * config/default.exp: Set variables as and nm. Create tmpdir if
+ it does not already exist.
+ * ld.bootstrap/bootstrap.exp: Don't create tmpdir here.
+ * ld.cdtest/cdtest.exp: Likewise.
+ * ld.scripts/defined.exp: Likewise. Also, don't set as and nm
+ here. Change perror for no variables found to fail.
+ * ld.scripts/script.exp: New test.
+ * ld.scripts/script.t, ld.scripts/script.s: New files.
+
Tue Sep 27 14:59:51 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
* ld.scripts: New directory.
# we need the object files.
if {$ld != "$objdir/ld.new"} {return}
-if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
-
# Bootstrap ld. First link the object files together using -r, in
# order to test -r. Then link the result into an executable, ld1, to
# really test -r. Use ld1 to link a fresh ld, ld2. Use ld2 to link a
# This test requires running the executable generated by ld.
if ![isnative] {return}
-if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
-
if ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir$subdir/cdtest-foo.cc tmpdir/cdtest-foo.o] {
return
}
defined.exp
defined.s
defined.t
+script.exp
+script.s
+script.t
Things-to-lose:
# Test DEFINED in a linker script.
# By Ian Lance Taylor, Cygnus Support.
-if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
-
-set as [findfile $base_dir/../gas/as.new $base_dir/../gas/as.new [transform as]]
-set nm [findfile $base_dir/../binutils/nm.new $base_dir/../binutils/nm.new [transform nm]]
-
if ![ld_assemble $as $srcdir$subdir/defined.s tmpdir/def.o] { return }
set prms_id 5699
if [ld_nm $nm tmpdir/def] {
if {![info exists nm_output(value1)] \
|| ![info exists nm_output(value2)]} {
- perror "bad output from $nm"
+ fail "DEFINED (bad output from $nm)"
} else {
if {$nm_output(value1) != 1} {
fail "DEFINED (value1 == $nm_output(value1))"
--- /dev/null
+# Test basic linker script functionality
+# By Ian Lance Taylor, Cygnus Support
+
+if ![ld_assemble $as $srcdir$subdir/script.s tmpdir/script.o] { return }
+
+if ![ld_simple_link $ld tmpdir/script "-T $srcdir$subdir/script.t tmpdir/script.o"] {
+ fail script
+} else {
+ if [ld_nm $nm tmpdir/script] {
+ 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)]} {
+ fail "script (bad output from $nm)"
+ } else {
+ if {$nm_output(text_start) != 0x100} {
+ fail "script (text_start == $nm_output(text_start))"
+ } else { if {$nm_output(text_end) < 0x104 \
+ || $nm_output(text_end) > 0x110} {
+ fail "script (text_end == $nm_output(text_end))"
+ } else { if {$nm_output(data_start) != 0x1000} {
+ fail "script (data_start == $nm_output(data_start))"
+ } else { if {$nm_output(data_end) < 0x1004 \
+ || $nm_output(data_end) > 0x1010} {
+ fail "script (data_end == $nm_output(data_end))"
+ } else {
+ pass script
+ } } } }
+ }
+ }
+}
--- /dev/null
+ .text
+text_symbol:
+ .long 1
+ .data
+data_symbol:
+ .long 2
--- /dev/null
+SECTIONS
+{
+ .text 0x100 : {
+ text_start = .;
+ *(.text)
+ text_end = .;
+ }
+ . = 0x1000;
+ .data : {
+ data_start = .;
+ *(.data)
+ data_end = .;
+ }
+}