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: PATCH: PR gas/2117: IA64 assembler is broken


On Mon, Jan 09, 2006 at 10:53:41AM +0100, Jan Beulich wrote:
> >--- 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;
> 
> The minimum, as I view it, is to also include expr_section symbols
> here. Beyond that, assuming that you already checked that no existing
> test case breaks, I hope this change will not have other ill effects.
> 

This patch also checks expr_section.


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:14:38.000000000 -0800
+++ gas/symbols.c	2006-01-09 08:05:46.000000000 -0800
@@ -1399,7 +1399,10 @@ snapshot_symbol (symbolS **symbolPP, val
 	    }
 	}
 
-      *symbolPP = symbolP;
+      /* Never change a defined symbol.  */
+      if (symbolP->bsym->section == undefined_section
+	  || symbolP->bsym->section == expr_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:03:06.000000000 -0700
+++ gas/testsuite/gas/ia64/ia64.exp	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-2.d	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-2.s	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-3.d	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-3.s	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-4.d	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-4.s	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-5.d	2006-01-09 08:05:25.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-09 08:05:25.000000000 -0800
+++ gas/testsuite/gas/ia64/ltoff22x-5.s	2006-01-09 08:05:25.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]