This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [PATCH] ia64 unwind directive semantics
- From: "Jan Beulich" <JBeulich at novell dot com>
- To: <amodra at bigpond dot net dot au>
- Cc: <binutils at sources dot redhat dot com>
- Date: Wed, 02 Feb 2005 14:57:16 +0100
- Subject: Re: [PATCH] ia64 unwind directive semantics
Sure, that's exactly what the (generated) assembly file asks for: .proc
and .endp are there, but the symbol surely can't get defined there
(because it has to live in crti.s). You have to either remove the ill
.proc/.endp pairs (and thus also the unwind info), or give these
(currently anonymous) functions names (i.e. .init and .fini, hiding them
completely from the outside world).
The whole setup seems a little odd to me, though: By having these
procedures split into two pieces (with, in the final executable, an
intervening range not covered by a procedure at all), unwind information
will be useless during the execution of all the init/fini functions (not
even their sizes will be set correctly), and thus the use of .proc/.endp
is pointless here except for the implict setting of the symbol's type.
I'd consider it much cleaner if it used just a label and a .type
directive.
In any case, the change to gas is correct (and both Jim Wilson, who
approved it, and I expected cases like this to come up).
Jan
>>> Alan Modra <amodra@bigpond.net.au> 02.02.05 09:16:15 >>>
On Mon, Jan 24, 2005 at 12:29:07PM +0100, Jan Beulich wrote:
> (dot_endp): Call in_procedure. Declare proc_end. Check for
non-zero-
> length entry point names. Check that entry points became
defined.
This one breaks glibc build.
csu/crtn.S: Assembler messages:
csu/crtn.S:22: Error: `_init#' was not defined within procedure
csu/crtn.S:36: Error: `_fini#' was not defined within procedure
--
Alan Modra
IBM OzLabs - Linux Technology Centre