John Fine wrote:
Ulrich Drepper wrote:
It's most certainly not that simple. I haven't looked at the sources.
But the asm code does not really correspond to the code above. The
function above is most certainly inlined. The problem might very well
(and most likely is) in the use of this function. Look at the
cmELF::GetRPath()
function and where it directly or indirectly uses the Valid function.
It is very simple and not a compiler bug, and you are correct that the
error is in GetRPath.
The code is
if(this->Valid() &&
this->Internal->GetFileType() == cmELF::FileTypeExecutable ||
this->Internal->GetFileType() == cmELF::FileTypeSharedLibrary)
Notice the lack of () around the || lines
So that if Valid returns false it then tries
this->Internal->GetFileType() ==
and crashes.
Oops! Ok, that looks consistent with the disassembly, thanks for the
analysis! Hehe, someone isn't listening to the 'suggest parentheses'
warning I bet ;-). CC'ing gcc-help one last time so those folk know it's
resolved, but I imagine we can drop them from any future correspondence.
Obviously this should be fixed upstream, but will we be able to do a
patched fedora build before this goes into F10-stable? (And, er,
incidentally, so I can install a fixed rpm? Guess I have good timing
catching it now, eh? ;-) )
--
Matthew
Person A: It's an ISO standard.
Person B: ...And that means what?
--mal (http://theangryadmin.blogspot.com/2008/04/future.html)