[PATCH] move __gmon_start__ call out of .init section
David Mosberger
davidm@napali.hpl.hp.com
Thu Nov 7 14:32:00 GMT 2002
>>>>> On Thu, 7 Nov 2002 14:27:35 -0800, Roland McGrath <roland@redhat.com> said:
>> The problem is that the unwind info for the .init/.fini section
>> will be incorrect if it contains any function call.
Roland> I don't really see why it should matter for these functions
Roland> (when do you unwind through them?), but I can take your word
Roland> for it that it does.
It matters during debugging for example (that's how I originally found
the problem). There are other reasons. For example, a profiling tool
might want to periodically create a stack trace to create call-graph
profiles.
Roland> It's a weak reference and so might be zero. There is no
Roland> provision in the spec for preinit_array elements being zero,
Roland> so it would be questionable to have it skip them (rather
Roland> than a user putting a random zero into the array getting the
Roland> crash he deserves).
We wouldn't be putting __gmon_init__ directly into .preinit---we would
put a function there which will then check whether __gmon_init__ is
NULL and, if not, call it.
Roland> It sounds like this is really an ia64-specific issue and so
Roland> there isn't any question of wanting to do this for the other
Roland> platforms. So I will put your change in.
OK, thanks.
Roland> Please fix whatever you are using to munge your diffs so
Roland> that it produces correct file names instead of the garbage
Roland> all your recent patches have contained. After today I won't
Roland> be in the mood to manually unmunge patches that can't be
Roland> applied by any single -pN setting.
Hmmh, I'm sorry about that. I was using a script that Uli sent me
some time ago. I'm not a (heavy) CVS user but Uli told me that the
patches created by "cvs diff -U" are broken. What's the recommend way
to create a diff from the glibc CVS?
--david
More information about the Libc-hacker
mailing list