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]

PATCH: PR gas/2117: IA64 assembler is broken


On Fri, Jan 06, 2006 at 12:23:05PM -0800, H. J. Lu wrote:
> > 
> > I opened a bug report:
> > 
> > http://sources.redhat.com/bugzilla/show_bug.cgi?id=2117
> > 
> > I will revert the change if it isn't fixed by next Monday.
> > 
> > 
> 
> Here is a patch to add a testcase for this bug.
> 

Here is a patch and a few testcases. I don't think snapshot_symbol
should change a defined symbol.


H.J.
----
gas/

2006-01-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR gas/2117
	* symbols.c (snapshot_symbol): Don't change a defined symbol.

gas/testsuite/

2006-01-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR gas/2117
	* gas/ia64/ia64.exp: Add ltoff22x-2, ltoff22x-3, ltoff22x-4 and
	ltoff22x-5.

	* gas/ia64/ltoff22x-2.d: New file.
	* gas/ia64/ltoff22x-2.s: Likewise.
	* gas/ia64/ltoff22x-3.d: Likewise.
	* gas/ia64/ltoff22x-3.s: Likewise.
	* gas/ia64/ltoff22x-4.d: Likewise.
	* gas/ia64/ltoff22x-4.s: Likewise.
	* gas/ia64/ltoff22x-5.d: Likewise.
	* gas/ia64/ltoff22x-5.s: Likewise.

--- gas/symbols.c.equ	2005-12-24 08:16:57.000000000 -0800
+++ gas/symbols.c	2006-01-06 17:40:57.000000000 -0800
@@ -1399,7 +1399,9 @@ snapshot_symbol (symbolS **symbolPP, val
 	    }
 	}
 
-      *symbolPP = symbolP;
+      /* Never change a defined symbol.  */
+      if (symbolP->bsym->section == undefined_section)
+	*symbolPP = symbolP;
       *valueP = expr.X_add_number;
       *segP = symbolP->bsym->section;
       *fragPP = symbolP->sy_frag;
--- gas/testsuite/gas/ia64/ia64.exp.equ	2005-10-24 08:48:40.000000000 -0700
+++ gas/testsuite/gas/ia64/ia64.exp	2006-01-06 17:36:37.000000000 -0800
@@ -46,6 +46,13 @@ if [istarget "ia64-*"] then {
     run_dump_test "ldxmov-1"
     run_list_test "ldxmov-2" ""
     run_dump_test "ltoff22x-1"
+    run_dump_test "ltoff22x-2"
+    run_dump_test "ltoff22x-3"
+    run_dump_test "ltoff22x-4"
+    run_dump_test "ltoff22x-5"
+
+    run_dump_test "nostkreg"
+    run_list_test "invalid-ar" ""
 
     run_dump_test "nostkreg"
     run_list_test "invalid-ar" ""
--- gas/testsuite/gas/ia64/ltoff22x-2.d.equ	2006-01-06 12:12:42.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-2.d	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,11 @@
+# objdump: -r
+# name: ia64 ltoff22x-2
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[ 	]+TYPE[ 	]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
--- gas/testsuite/gas/ia64/ltoff22x-2.s.equ	2006-01-06 12:12:42.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-2.s	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,13 @@
+	.global foo#
+	foo# = bar#
+	.global bar#
+	.data
+bar:
+	data4 0
+	.text
+	addl	r3 = @ltoffx(foo#), gp
+	nop.i	0
+	nop.i	0
+	ld8.mov r3 = [r3], foo#
+	nop.i	0
+	nop.i	0
--- gas/testsuite/gas/ia64/ltoff22x-3.d.equ	2006-01-06 17:36:37.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-3.d	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,11 @@
+# objdump: -r
+# name: ia64 ltoff22x-3
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[ 	]+TYPE[ 	]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
--- gas/testsuite/gas/ia64/ltoff22x-3.s.equ	2006-01-06 17:36:37.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-3.s	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,13 @@
+	.global bar#
+	.data
+bar:
+	data4 0
+	.global foo#
+	foo# = bar#
+	.text
+	addl	r3 = @ltoffx(foo#), gp
+	nop.i	0
+	nop.i	0
+	ld8.mov r3 = [r3], foo#
+	nop.i	0
+	nop.i	0
--- gas/testsuite/gas/ia64/ltoff22x-4.d.equ	2006-01-06 17:36:37.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-4.d	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,11 @@
+# objdump: -r
+# name: ia64 ltoff22x-4
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[ 	]+TYPE[ 	]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
--- gas/testsuite/gas/ia64/ltoff22x-4.s.equ	2006-01-06 17:36:37.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-4.s	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,13 @@
+	.text
+	addl	r3 = @ltoffx(foo#), gp
+	nop.i	0
+	nop.i	0
+	ld8.mov r3 = [r3], foo#
+	nop.i	0
+	nop.i	0
+	.global foo#
+	foo# = bar#
+	.global bar#
+	.data
+bar:
+	data4 0
--- gas/testsuite/gas/ia64/ltoff22x-5.d.equ	2006-01-06 17:36:37.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-5.d	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,11 @@
+# objdump: -r
+# name: ia64 ltoff22x-5
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[ 	]+TYPE[ 	]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
--- gas/testsuite/gas/ia64/ltoff22x-5.s.equ	2006-01-06 17:36:37.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-5.s	2006-01-06 17:36:37.000000000 -0800
@@ -0,0 +1,13 @@
+	.text
+	addl	r3 = @ltoffx(foo#), gp
+	nop.i	0
+	nop.i	0
+	ld8.mov r3 = [r3], foo#
+	nop.i	0
+	nop.i	0
+	.global bar#
+	.data
+bar:
+	data4 0
+	.global foo#
+	foo# = bar#


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