This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: PR gas/13024 problem on IA64
- From: Richard Sandiford <richard dot sandiford at linaro dot org>
- To: sje at cup dot hp dot com
- Cc: binutils at sourceware dot org
- Date: Thu, 08 Sep 2011 13:20:11 +0100
- Subject: Re: PR gas/13024 problem on IA64
- References: <201109061831.p86IVXa06625@adlwrk04.cup.hp.com>
Steve Ellcey <sje@cup.hp.com> writes:
> Have you gotten any reports about a problem with your fix to PR gas/13024.
> I am getting this error when building GCC on IA64 HP-UX:
>
> /var/tmp//cc82lxSB.s: Assembler messages:
> /var/tmp//cc82lxSB.s: Internal error!
> Assertion failure in emit_inc_line_addr at /ctires/gcc/nightly/src/src/gas/dwarf2dbg.c line 959.
> Please report this bug.
Sorry, it turned out to be a really stupid thinko in some code that
would only be exercised on ia64 and xtensa.
Tested on ia64-linux-gnu, mips64-linux-gnu and x86_64-linux-gnu. Applied.
Richard
gas/
PR gas/13167
* dwarf2dbg.c (dwarf2_flush_pending_lines): Use symbol_temp_new_now.
gas/testsuite/
PR gas/13167
* gas/ia64/pr13167.d, gas/ia64/pr13167.s: New test.
* gas/ia64/ia64.exp: Run it.
Index: gas/dwarf2dbg.c
===================================================================
--- gas/dwarf2dbg.c 2011-09-08 13:16:01.704092466 +0100
+++ gas/dwarf2dbg.c 2011-09-08 13:17:19.302021064 +0100
@@ -313,7 +313,7 @@ dwarf2_flush_pending_lines (symbolS *lab
struct line_entry *e;
if (!label)
- label = symbol_temp_new (now_seg, 0, frag_now);
+ label = symbol_temp_new_now ();
for (e = pending_lines; e; e = e->next)
e->label = label;
Index: gas/testsuite/gas/ia64/pr13167.d
===================================================================
--- /dev/null 2011-09-08 10:02:38.944000001 +0100
+++ gas/testsuite/gas/ia64/pr13167.d 2011-09-08 13:17:19.314021054 +0100
@@ -0,0 +1,43 @@
+#readelf: -wl
+
+Raw dump of debug contents of section \.debug_line:
+
+ Offset: 0x0
+ Length: 51
+ DWARF Version: 2
+ Prologue Length: 26
+ Minimum Instruction Length: 1
+ Initial value of 'is_stmt': 1
+ Line Base: -5
+ Line Range: 14
+ Opcode Base: 13
+
+ Opcodes:
+ Opcode 1 has 0 args
+ Opcode 2 has 1 args
+ Opcode 3 has 1 args
+ Opcode 4 has 1 args
+ Opcode 5 has 1 args
+ Opcode 6 has 0 args
+ Opcode 7 has 0 args
+ Opcode 8 has 0 args
+ Opcode 9 has 1 args
+ Opcode 10 has 0 args
+ Opcode 11 has 0 args
+ Opcode 12 has 1 args
+
+ The Directory Table is empty\.
+
+ The File Name Table:
+ Entry Dir Time Size Name
+ 1 0 0 0 x\.c
+
+ Line Number Statements:
+ Extended opcode 2: set Address to 0x1
+ Special opcode 8: advance Address by 0 to 0x1 and Line by 3 to 4
+ Special opcode 216: advance Address by 15 to 0x10 and Line by 1 to 5
+ Special opcode 228: advance Address by 16 to 0x20 and Line by -1 to 4
+ Advance PC by 16 to 0x30
+ Extended opcode 1: End of Sequence
+
+
Index: gas/testsuite/gas/ia64/pr13167.s
===================================================================
--- /dev/null 2011-09-08 10:02:38.944000001 +0100
+++ gas/testsuite/gas/ia64/pr13167.s 2011-09-08 13:17:19.314021054 +0100
@@ -0,0 +1,9 @@
+ .file 1 "x.c"
+ mov r1 = r35
+ .loc 1 4 0
+ nop 0
+ mov r36 = r8
+ br.call.sptk.many b0 = _U_Qfcnvff_quad_to_sgl#
+ .loc 1 5 0
+ .loc 1 4 0
+ mov r1 = r35
Index: gas/testsuite/gas/ia64/ia64.exp
===================================================================
--- gas/testsuite/gas/ia64/ia64.exp 2011-09-08 13:16:01.704092466 +0100
+++ gas/testsuite/gas/ia64/ia64.exp 2011-09-08 13:17:19.303021064 +0100
@@ -94,4 +94,7 @@ if [istarget "ia64-*"] then {
run_dump_test "slotcount"
}
+ if { [istarget "ia64-*-elf*"] || [istarget "ia64-*-linux*"] } {
+ run_dump_test "pr13167"
+ }
}