[syslinux] Re: Problem compiling syslinux-3.01
H. Peter Anvin
hpa at zytor.com
Tue Jan 4 18:50:53 PST 2005
Terry Chan wrote:
>
> b) grep -r BLKGETSIZE /usr/include says:
>
> /usr/include/sys/mount.h:#define BLKGETSIZE _IO(0x12, 96) /* Return device size. */
> /usr/include/linux/fs.h:#define BLKGETSIZE _IO(0x12,96) /* return device size /512 (long *arg) */
> /usr/include/linux/fs.h:#define BLKGETSIZE64 _IOR(0x12,114,sizeof(u64)) /* return device size in bytes (u64 *arg) */
Okay, your <linux/fs.h> is broken beyond repair. The proper definition
of BLKGETSIZE64 is:
#define BLKGETSIZE64 _IOR(0x12,114,size_t)
There is no "sizeof", and u64 doesn't belong in the user headers. I
suspect this particular screwup is probably the reason that it's size_t
instead of the proper __u64 in the current definition, because sizeof()
returns a size_t, so by putting sizeof(u64) they basically did
sizeof(sizeof(u64)), which is equivalent to sizeof(size_t) if u64 is
defined.
This is way ugly. The best bet is to add right after
#include <inttypes.h>
+typedef uint64_t u64;
... and see if that helps.
Barf, puke.
-hpa
More information about the Syslinux
mailing list