Accessing IP on IA-64 with RTL

James E Wilson wilson@specifixinc.com
Sat Jan 29 01:15:00 GMT 2005


Steve Ellcey wrote:
> It works (modulo the problem reported in PR 12455) but it is not being
> called after the prologue.
> From config/ia/ia64.h:
> 	#undef  PROFILE_BEFORE_PROLOGUE
> 	#define PROFILE_BEFORE_PROLOGUE 1

Yes, we always call it before the prologue on IA-64.  Richard was 
mistaken.  Most other linux targets are probably calling it after the 
prologue nowadays.

If you use PROFILE_HOOK, then yes, it will be called after the prologue. 
  We don't support emitting rtl before the prologue.

If you move the profile after the prologue, you will have to change the 
calling sequence.  The current one assumes we are before the prologue, 
and creates its own register window for output arguments, which then 
gets overwritten by the register window created by the prologue.  After 
the prologue, it should look like pretty much like any other function call.

If we do call it after the prologue, that would fix PR 12455.

>     7	foo:
>     8		.data
>     9		.align 8
>    10	.LP2:
>    11		data8	0
>    12		.text
>    13		alloc out0 = ar.pfs, 8, 0, 4, 0

Yuck.  This should be fixed.  We shouldn't be switching sections inside 
a function.  This should use xdata instead of data.  Probably better is 
to define NO_PROFILE_COUNTERS, as we shouldn't need this counter 
anyways, unless perhaps HPUX uses it.  I'm pretty sure glibc won't use 
it.  There are already a number of other linux targets that define this.

Just because _mcount takes a counter address, that doesn't mean that it 
is actually using the counter.  You'd have to check the library sources 
or docs, or try passing NULL and see if mcount still works.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list