This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: IA64 assembler is broken
On Fri, Jan 06, 2006 at 12:01:09PM -0800, H. J. Lu wrote:
> On Fri, Jan 06, 2006 at 11:35:20AM -0800, H. J. Lu wrote:
> > On Fri, Jan 06, 2006 at 10:59:18AM -0800, H. J. Lu wrote:
> > > On Fri, Jan 06, 2006 at 10:08:29AM -0800, H. J. Lu wrote:
> > > > With the current gcc 3.4 and glibc 2.3 in CVS, I got
> > > >
> > > > [hjl@gnu-12 glibc-2.3-import-3.4]$ gdb
> > > > ./build-ia64-linux/elf/ld-linux-ia64.so.2GNU gdb Red Hat Linux
> > > > (6.3.0.0-1.62rh)
> > > > Copyright 2004 Free Software Foundation, Inc.
> > > > GDB is free software, covered by the GNU General Public License, and
> > > > you are
> > > > welcome to change it and/or distribute copies of it under certain
> > > > conditions.
> > > > Type "show copying" to see the conditions.
> > > > There is absolutely no warranty for GDB. Type "show warranty" for
> > > > details.
> > > > This GDB was configured as "ia64-redhat-linux-gnu"...Using host
> > > > libthread_db library "/lib/tls/libthread_db.so.1".
> > > >
> > > > (gdb) r
> > > > Starting program:
> > > > /export/build/gnu/glibc-2.3-import-3.4/build-ia64-linux/elf/ld-linux-ia64.so.2
> > > >
> > > > Program received signal SIGSEGV, Segmentation fault.
> > > > 0x2000000000002f91 in _dl_start (arg=0x60000fffffff98a0) at rtld.c:260
> > > > 260 HP_TIMING_DIFF_INIT ();
> > > > (gdb)
> > > >
> > >
> > > It looks like a binutils issue. I am investigating it now.
> > >
> >
> > I have identified that
> >
> > http://sourceware.org/ml/binutils/2005-12/msg00001.html
> >
> > breaks building glibc 2.3 in CVS with gcc 3.4 in CVS. Jan, could you
> > please look into it?
>
> 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.
H.J.
----
2006-01-06 H.J. Lu <hongjiu.lu@intel.com>
PR gas/2117
* gas/ia64/ia64.exp: Add ltoff22x-2.
* gas/ia64/ltoff22x-2.d: New file.
* gas/ia64/ltoff22x-2.s: Likewise.
--- gas/testsuite/gas/ia64/ia64.exp.equ 2005-10-24 08:48:40.000000000 -0700
+++ gas/testsuite/gas/ia64/ia64.exp 2006-01-06 12:19:47.000000000 -0800
@@ -46,6 +46,7 @@ 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 "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 12:14:34.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 12:13:45.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
+ (p6) ld8.mov r3 = [r3], foo#
+ nop.i 0
+ nop.i 0