Following http://trac.webkit.org/changeset/74690, WebKit 2 does not compile on 64 bits with a recent GCC. The problem comes from the use of the type "unsigned long long" in the encoders and decoders. This type can be different from uint64_t on 64 bits, in which case it does not have any specialization for encoding and decoding.
Created attachment 77686 [details] Patch
Comment on attachment 77686 [details] Patch You should instead change the type in OriginAndDatabases.h to be uint64_t.
(In reply to comment #2) > (From update of attachment 77686 [details]) > You should instead change the type in OriginAndDatabases.h to be uint64_t. Ok, I'll do that tomorrow. I thought about changing the class to use uint64_t but the type is almost never used in WebKit so I assumed it not commonly used by the project.
Created attachment 77777 [details] Sorry for the delay, quick update :)
*** Bug 51781 has been marked as a duplicate of this bug. ***
I better like my patch (what a cocky person I am) because that allows using either int, long, long long, int32_t and int64_t and the appropriate unsigned types at the call sites so hopefully it eliminates the possibility of further build breakage. If you agree, please invert the duplicate marking :)
(In reply to comment #6) > I better like my patch (what a cocky person I am) because that allows using > either int, long, long long, int32_t and int64_t and the appropriate unsigned types > at the call sites so hopefully it eliminates the possibility of further build breakage. It already does support the types up to 64 bits. The problem is, "long long int" is not necessarily 64 bits, that is why gcc refuses passing this type to a "long int". stdint have been introduced to solve the problem that different compilers have different size of types. I would use that :)
Comment on attachment 77777 [details] Sorry for the delay, quick update :) Clearing flags on attachment: 77777 Committed r74882: <http://trac.webkit.org/changeset/74882>
All reviewed patches have been landed. Closing bug.