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