This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Relative expressions and ASSERT


On Fri, Jan 21, 2011 at 05:21:17AM -0800, H.J. Lu wrote:
> You should add at least one testcase to verify it.

It takes a while to write a proper testcase that doesn't introduce
failures on some target.  This one fails on x86_64-mingw32 for
reasons that I haven't fully investigated, but suspect that the
failure is showing a real bug.  It looks like a case of address wrap.

	* ld-scripts/sane1.d, * ld-scripts/sane1.t: New test.
	* ld-scripts/expr.exp: Run it.

Index: ld/testsuite/ld-scripts/expr.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-scripts/expr.exp,v
retrieving revision 1.3
diff -u -p -r1.3 expr.exp
--- ld/testsuite/ld-scripts/expr.exp	28 Dec 2010 18:04:10 -0000	1.3
+++ ld/testsuite/ld-scripts/expr.exp	23 Jan 2011 03:24:05 -0000
@@ -22,3 +22,4 @@
 
 run_dump_test expr1
 run_dump_test expr2
+run_dump_test sane1
Index: ld/testsuite/ld-scripts/sane1.d
===================================================================
RCS file: ld/testsuite/ld-scripts/sane1.d
diff -N ld/testsuite/ld-scripts/sane1.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-scripts/sane1.d	23 Jan 2011 03:24:05 -0000
@@ -0,0 +1,33 @@
+# source: data.s
+# ld: -T sane1.t
+# nm: -B
+# notarget: mmix-* pdp11-* rs6000-*-aix* tic30-*-aout
+# mmix symbol sections are wrong, pdp sign extends 16-bit addresses
+# rs6000-aix and tic30 don't like empty .text
+
+#...
+0+8004 D d1
+0+8024 D d2
+0+0020 A diff
+0+0100 A e1
+0+0080 A e2
+0+8000 A e3
+0+0090 A prod
+0+8002 D s1
+0+8001 D s2
+0+8007 D s3
+0+8002 A s4
+0+0004 A s5
+0+19a0 A s6
+0+8020 D s_diff
+0+8090 D s_prod
+0+8028 D s_sum
+0+8020 D s_sum_neg
+0+0028 A sum
+0+0020 A sum_neg
+0+8002 D x1
+0+8001 D x2
+0+8007 D x3
+0+8002 A x4
+0+0004 A x5
+0+19a0 A x6
Index: ld/testsuite/ld-scripts/sane1.t
===================================================================
RCS file: ld/testsuite/ld-scripts/sane1.t
diff -N ld/testsuite/ld-scripts/sane1.t
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-scripts/sane1.t	23 Jan 2011 03:24:05 -0000
@@ -0,0 +1,36 @@
+LD_FEATURE("SANE_EXPR")
+e1 = 0x100;
+e2 = 0x80;
+e3 = e1 * e2;
+SECTIONS
+{
+  . = e3;
+  .data :
+  {
+    d1 = 4;
+    . += d1 + 5 << 2;
+    d2 = .;
+    s_diff = d2 - d1;
+    s_sum_neg = d2 + -d1;
+    s_sum = d2 + d1;
+    s_prod = d2 * d1;
+    s1 = d1 - 2;
+    s2 = d2 % 5;
+    s3 = d2 / 5;
+    s4 = ABSOLUTE (d1) - 2;
+    s5 = ABSOLUTE (d2) % 5;
+    s6 = ABSOLUTE (d2) / 5;
+  }
+  /DISCARD/ : {*(*)}
+
+diff = d2 - d1;
+sum_neg = d2 + -d1;
+sum = d2 + d1;
+prod = d2 * d1;
+x1 = d1 - 2;
+x2 = d2 % 5;
+x3 = d2 / 5;
+x4 = ABSOLUTE (d1) - 2;
+x5 = ABSOLUTE (d2) % 5;
+x6 = ABSOLUTE (d2) / 5;
+}

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]