aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-scripts
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-scripts')
-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
3 files changed, 30 insertions, 0 deletions
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);