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: PR gas/13024 problem on IA64


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"
+    }
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]