amd64 doesn't define __LP64__ in the compiler, but it definately needs

this definition.  It fixes gnome for starters.  I haven't tried *emacs yet.
Like IA64, amd64 uses registers for the first few arguments and then
the stack for the rest.  This means the 64 bit promotion of the NULL (0)
value is lost and its just pushed on as an 'int' in a varargs call.
When the consumer walks the list and expects to pull off void * pointers
via va_arg, then all hell breaks loose.

Marcel: thanks a million for finding this!
This commit is contained in:
Peter Wemm 2003-12-15 10:25:18 +00:00
parent ad1c13f493
commit 61cf13a8cf

View File

@ -28,7 +28,7 @@
#ifndef NULL
#ifdef __LP64__
#if defined(__LP64__) || defined(__amd64__)
#define NULL 0L
#else
#define NULL 0