[webkit-dev] Strang problem with the linux port.

Kimmo Kinnunen kimmok at iki.fi
Thu Mar 9 10:00:45 PST 2006


Mike Emmel wrote:
> Hi all I'm having a strange problem with the linux port and maybe
> someone can help.
> 
> The problem is that the macros in
> 
> khtml/html/htmlnames.cpp  fail under linux
> 
> I dumped the cpp code and  I'm getting generated code like the following.
> 
>  new ((void*)&abbrTag) QualifiedName(nullAtom, "abbr", xhtmlNS);
> 
> Now when I looked at the constructor for QualifiedName it takes as args
> 
> QualifiedName::QualifiedName(const AtomicString& p, const
> AtomicString& l, const AtomicString& n)

I've experienced this. I think it's g++-4.0 inlining bug.. It happened 
for me also, exactly at "abbr" tag..

In dom_qname.cpp (I don't know if this has been renamed) there's a hash 
function

inline unsigned hashComponents(const QualifiedNameComponents& buf)

which I believe will get optimized somehow wrong, and it always hashes 
to zero. I got it working by adding printf("%x", hash); before the zero 
comparison :)

Doesn't make sense unless the printf disables some optimization. In my 
old code there seems also to be 0x80000000u instead of  0x80000000, 
which I believe was some sort of hazard at trying to make sure that 
signedness+bigendian/little endian differences don't matter..

I know this sounds rediculous, but try it if you don't have any other 
clues. My compiler was (GCC) 4.0.2 20050728 (prerelease) [FreeBSD]..

Kimmo





More information about the webkit-dev mailing list