This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: IA64 gas is broken
- From: "H. J. Lu" <hjl at lucon dot org>
- To: jbeulich at novell dot com, wilson at specifixinc dot com
- Cc: binutils at sources dot redhat dot com
- Date: Fri, 11 Feb 2005 12:58:33 -0800
- Subject: Re: IA64 gas is broken
- References: <20050211194646.GA7531@lucon.org>
On Fri, Feb 11, 2005 at 11:46:46AM -0800, H. J. Lu wrote:
> [hjl@gnu-4 tmp]$ cat crti.s
> .xdata8 ".init_array",@fptr(__pthread_initialize_minimal_internal)
> [hjl@gnu-4 tmp]$ gcc -c crti.s
> gcc: Internal error: Segmentation fault (program as)
> Please submit a full bug report.
> See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions.
>
This obstack_free calls in patch
http://sourceware.org/ml/binutils/2005-02/msg00029.html
is the cause. set_section uses the memory. I will back out the following
patch.
H.J.
---
Index: config/tc-ia64.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.c,v
retrieving revision 1.129
retrieving revision 1.130
diff -u -p -r1.129 -r1.130
--- config/tc-ia64.c 2 Feb 2005 07:37:33 -0000 1.129
+++ config/tc-ia64.c 11 Feb 2005 07:45:20 -0000 1.130
@@ -4704,6 +4713,7 @@ dot_xdata (size)
md.keep_pending_output = 1;
set_section (name);
+ obstack_free (¬es, name);
cons (size);
obj_elf_previous (0);
md.keep_pending_output = 0;
@@ -4758,6 +4768,7 @@ dot_xfloat_cons (kind)
md.keep_pending_output = 1;
set_section (name);
+ obstack_free (¬es, name);
stmt_float_cons (kind);
obj_elf_previous (0);
md.keep_pending_output = 0;
@@ -4773,6 +4784,7 @@ dot_xstringer (zero)
md.keep_pending_output = 1;
set_section (name);
+ obstack_free (¬es, name);
stringer (zero);
obj_elf_previous (0);
md.keep_pending_output = 0;
@@ -4789,6 +4801,7 @@ dot_xdata_ua (size)
md.keep_pending_output = 1;
set_section (name);
+ obstack_free (¬es, name);
md.auto_align = 0;
cons (size);
md.auto_align = saved_auto_align;
@@ -4807,6 +4820,7 @@ dot_xfloat_cons_ua (kind)
md.keep_pending_output = 1;
set_section (name);
+ obstack_free (¬es, name);
md.auto_align = 0;
stmt_float_cons (kind);
md.auto_align = saved_auto_align;