This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
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#