This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: The new assembler with unwind table bug fix
On Fri, 2004-02-06 at 12:54, H. J. Lu wrote:
> When I built glibc, I got
> iofgetpos.s: Assembler messages:
> iofgetpos.s:428: Internal error!
> Assertion failure in ia64_convert_frag at
This is a problem with .handlerdata, which I had forgotten about, and
which is not used by the kernel. This is a second entry into the
generate_unwind_image function. The endp unwind record was not present
in this case. This is easy to fix, I changed the place where I emit the
endp unwind record so it is present in both cases.
This works for your testcase, and passes the binutils testsuite. I
haven't tried a complete glibc build yet.
2004-02-06 James E Wilson <wilson@specifixinc.com>
* config/tc-ia64.c (dot_endp): Delete call to output_endp.
(generate_unwind_image): Re-add it here.
Index: tc-ia64.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.c,v
retrieving revision 1.99
diff -p -r1.99 tc-ia64.c
*** tc-ia64.c 5 Feb 2004 23:50:21 -0000 1.99
--- tc-ia64.c 7 Feb 2004 02:31:26 -0000
*************** generate_unwind_image (text_name)
*** 3254,3259 ****
--- 3254,3263 ----
int size, pad;
unw_rec_list *list;
+ /* Mark the end of the unwind info, so that we can compute the size of the
+ last unwind region. */
+ add_unwind_entry (output_endp ());
+
/* Force out pending instructions, to make sure all unwind records have
a valid slot_number field. */
ia64_flush_insns ();
*************** dot_endp (dummy)
*** 4045,4052 ****
text_name = "";
insn_group_break (1, 0, 0);
-
- add_unwind_entry (output_endp ());
/* If there wasn't a .handlerdata, we haven't generated an image yet. */
if (!unwind.info)
--- 4049,4054 ----
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com