aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-scripts/defined.exp3
-rw-r--r--ld/testsuite/ld-scripts/defined2.d18
-rw-r--r--ld/testsuite/ld-scripts/defined2.t9
4 files changed, 35 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index ab46874..f00cf6a 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-08 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * ld-scripts/defined2.d, ld-scripts/defined2.t: New test.
+ * ld-scripts/defined.exp: Run defined2.
+
2003-10-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* ld-elfvsb/elfvsb.exp: xfail non-pic shared library tests for
diff --git a/ld/testsuite/ld-scripts/defined.exp b/ld/testsuite/ld-scripts/defined.exp
index 075bf56..277ba37 100644
--- a/ld/testsuite/ld-scripts/defined.exp
+++ b/ld/testsuite/ld-scripts/defined.exp
@@ -53,3 +53,6 @@ if ![ld_simple_link $ld tmpdir/def "-T $srcdir/$subdir/defined.t tmpdir/def.o"]
}
}
}
+
+set prms_id 0
+run_dump_test "defined2"
diff --git a/ld/testsuite/ld-scripts/defined2.d b/ld/testsuite/ld-scripts/defined2.d
new file mode 100644
index 0000000..6bb0682
--- /dev/null
+++ b/ld/testsuite/ld-scripts/defined2.d
@@ -0,0 +1,18 @@
+#ld: -Tdefined2.t
+#nm: -B
+#source: phdrs.s
+
+# Check that arithmetic on DEFINED works.
+# Matching both A and T accounts for formats that can't tell a .text
+# symbol from an absolute symbol (mmo), but matches whatever section that
+# contains an address matching the value. The symbol sym1 is supposed to
+# be in the .text section for all targets, though.
+
+#...
+0+1 [AT] defined1
+0+11 A defined2
+0+100 A defined3
+0+1ff A defined4
+#...
+0+3 T sym1
+#pass
diff --git a/ld/testsuite/ld-scripts/defined2.t b/ld/testsuite/ld-scripts/defined2.t
new file mode 100644
index 0000000..50ddad0
--- /dev/null
+++ b/ld/testsuite/ld-scripts/defined2.t
@@ -0,0 +1,9 @@
+SECTIONS {
+ .text : { *(.text) sym1 = 3 - DEFINED (x); }
+ .data : { *(.data) }
+ .bss : { *(.bss) *(COMMON) }
+}
+defined1 = !DEFINED (x);
+defined2 = DEFINED (defined1) + 16;
+defined3 = DEFINED (defined2) * 256;
+defined4 = 0x200 - DEFINED (defined3);