From: Wesley E. <wes...@go...> - 2006-03-31 00:52:33
|
I just downloaded the 2.6.16-bb1 patch and tried to compile against 2.6.16. I encountered a problem in arch/um/drivers/cow_sys.h,cow.h, and cow_user.c arch/um/drivers/cow_sys.h: In function `cow_file_size': arch/um/drivers/cow_sys.h:33: warning: passing arg 2 of `os_file_size' from incompatible pointer type arch/um/drivers/cow_user.c: In function `write_cow_header': arch/um/drivers/cow_user.c:232: warning: passing arg 2 of `cow_file_size' from incompatible pointer type arch/um/drivers/cow_user.c: At top level: arch/um/drivers/cow_user.c:274: error: conflicting types for 'read_cow_header' arch/um/drivers/cow.h:50: error: previous declaration of 'read_cow_header' was here arch/um/drivers/cow_user.c:274: error: conflicting types for 'read_cow_header' arch/um/drivers/cow.h:50: error: previous declaration of 'read_cow_header' was here The simple and obvious fix is to change "__u64" in cow_sys.h and cow.h to be "unsigned long long", but this makes me think that I am missing something like an include file with a definition somewhere. Any ideas? Thanks, Wesley |
From: Blaisorblade <bla...@ya...> - 2006-03-31 11:23:15
|
On Friday 31 March 2006 02:52, Wesley Emeneker wrote: > I just downloaded the 2.6.16-bb1 patch and tried to compile against 2.6.16. > I encountered a problem in arch/um/drivers/cow_sys.h,cow.h, and cow_user.c > > arch/um/drivers/cow_sys.h: In function `cow_file_size': > arch/um/drivers/cow_sys.h:33: warning: passing arg 2 of `os_file_size' > from incompatible pointer type > arch/um/drivers/cow_user.c: In function `write_cow_header': > arch/um/drivers/cow_user.c:232: warning: passing arg 2 of > `cow_file_size' from incompatible pointer type > arch/um/drivers/cow_user.c: At top level: > arch/um/drivers/cow_user.c:274: error: conflicting types for > 'read_cow_header' > arch/um/drivers/cow.h:50: error: previous declaration of > 'read_cow_header' was here > arch/um/drivers/cow_user.c:274: error: conflicting types for > 'read_cow_header' > arch/um/drivers/cow.h:50: error: previous declaration of > 'read_cow_header' was here > > > The simple and obvious fix is to change "__u64" in cow_sys.h and cow.h > to be "unsigned long long", Are you compiling a 64-bit kernel? With which GCC release? In that case I can guess what's going on: __u64 is being defined as "unsigned long", which is valid, and gcc is not recognizing it's the same thing as unsigned long (and it's right since normally they're different). However, I've never seen that (possibly I tested only before doing some changes about this, which are in -bb1). > but this makes me think that I am missing something like an include file > with a definition somewhere. > Any ideas? -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894) http://www.user-mode-linux.org/~blaisorblade ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it |
From: Wesley E. <wes...@go...> - 2006-03-31 16:47:35
|
64-bit kernel, gcc 3.4.4-2, Centos 4.2 Blaisorblade wrote: >On Friday 31 March 2006 02:52, Wesley Emeneker wrote: > > >>I just downloaded the 2.6.16-bb1 patch and tried to compile against 2.6.16. >>I encountered a problem in arch/um/drivers/cow_sys.h,cow.h, and cow_user.c >> >>arch/um/drivers/cow_sys.h: In function `cow_file_size': >>arch/um/drivers/cow_sys.h:33: warning: passing arg 2 of `os_file_size' >>from incompatible pointer type >>arch/um/drivers/cow_user.c: In function `write_cow_header': >>arch/um/drivers/cow_user.c:232: warning: passing arg 2 of >>`cow_file_size' from incompatible pointer type >>arch/um/drivers/cow_user.c: At top level: >>arch/um/drivers/cow_user.c:274: error: conflicting types for >>'read_cow_header' >>arch/um/drivers/cow.h:50: error: previous declaration of >>'read_cow_header' was here >>arch/um/drivers/cow_user.c:274: error: conflicting types for >>'read_cow_header' >>arch/um/drivers/cow.h:50: error: previous declaration of >>'read_cow_header' was here >> >> >>The simple and obvious fix is to change "__u64" in cow_sys.h and cow.h >>to be "unsigned long long", >> >> > >Are you compiling a 64-bit kernel? With which GCC release? > >In that case I can guess what's going on: __u64 is being defined as "unsigned >long", which is valid, and gcc is not recognizing it's the same thing as >unsigned long (and it's right since normally they're different). > >However, I've never seen that (possibly I tested only before doing some >changes about this, which are in -bb1). > > > >>but this makes me think that I am missing something like an include file >>with a definition somewhere. >>Any ideas? >> >> > > > |
From: Blaisorblade <bla...@ya...> - 2006-04-01 00:46:11
|
On Friday 31 March 2006 18:47, Wesley Emeneker wrote: > 64-bit kernel, gcc 3.4.4-2, Centos 4.2 Ah, ok, then the key is in the CentOS kernel headers, which are different from normal ones (they use linux-libc-headers IIRC). Will put the proper patch in next -bb. > Blaisorblade wrote: > >On Friday 31 March 2006 02:52, Wesley Emeneker wrote: > >>I just downloaded the 2.6.16-bb1 patch and tried to compile against > >> 2.6.16. I encountered a problem in arch/um/drivers/cow_sys.h,cow.h, and > >> cow_user.c > >> > >>arch/um/drivers/cow_sys.h: In function `cow_file_size': > >>arch/um/drivers/cow_sys.h:33: warning: passing arg 2 of `os_file_size' > >>from incompatible pointer type > >>arch/um/drivers/cow_user.c: In function `write_cow_header': > >>arch/um/drivers/cow_user.c:232: warning: passing arg 2 of > >>`cow_file_size' from incompatible pointer type > >>arch/um/drivers/cow_user.c: At top level: > >>arch/um/drivers/cow_user.c:274: error: conflicting types for > >>'read_cow_header' > >>arch/um/drivers/cow.h:50: error: previous declaration of > >>'read_cow_header' was here > >>arch/um/drivers/cow_user.c:274: error: conflicting types for > >>'read_cow_header' > >>arch/um/drivers/cow.h:50: error: previous declaration of > >>'read_cow_header' was here > >> > >> > >>The simple and obvious fix is to change "__u64" in cow_sys.h and cow.h > >>to be "unsigned long long", > > > >Are you compiling a 64-bit kernel? With which GCC release? > > > >In that case I can guess what's going on: __u64 is being defined as > > "unsigned long", which is valid, and gcc is not recognizing it's the same > > thing as unsigned long (and it's right since normally they're different). > > > >However, I've never seen that (possibly I tested only before doing some > >changes about this, which are in -bb1). > > > >>but this makes me think that I am missing something like an include file > >>with a definition somewhere. > >>Any ideas? -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894) http://www.user-mode-linux.org/~blaisorblade ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it |
From: Blaisorblade <bla...@ya...> - 2006-04-07 06:31:42
Attachments:
uml-fix-back-types-no-warning
|
On Saturday 01 April 2006 02:45, Blaisorblade wrote: > On Friday 31 March 2006 18:47, Wesley Emeneker wrote: > > >On Friday 31 March 2006 02:52, Wesley Emeneker wrote: > > >>I just downloaded the 2.6.16-bb1 patch and tried to compile against > > >> 2.6.16. I encountered a problem in arch/um/drivers/cow_sys.h,cow.h, > > >> and cow_user.c [...] > > >>The simple and obvious fix is to change "__u64" in cow_sys.h and cow.h > > >>to be "unsigned long long", Ok, can you verify that the attached patch is exactly the correct one to fix this problem? I'll include it in next -bb and upstream release. Thanks for the report. -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894) http://www.user-mode-linux.org/~blaisorblade |
From: Wesley E. <wes...@go...> - 2006-04-07 16:29:56
|
Actually, the patch doesn't apply for me. Running a "patch -p1 < uml-fix-back-types-no-warning" from the linux-2.6.16 directory gives me this error: Hunk #1 FAILED at 46. 1 out of 1 hunk FAILED -- saving rejects to file arch/um/drivers/cow.h.rej patching file arch/um/drivers/cow_sys.h Hunk #1 succeeded at 28 with fuzz 2. Here is cow.h.rej *************** *** 46,52 **** extern int read_cow_header(int (*reader)(__u64, char *, int, void *), void *arg, __u32 *version_out, char **backing_file_out, time_t *mtime_out, - __u64 *size_out, int *sectorsize_out, __u32 *align_out, int *bitmap_offset_out); extern int write_cow_header(char *cow_file, int fd, char *backing_file, --- 46,52 ---- extern int read_cow_header(int (*reader)(__u64, char *, int, void *), void *arg, __u32 *version_out, char **backing_file_out, time_t *mtime_out, + unsigned long long *size_out, int *sectorsize_out, __u32 *align_out, int *bitmap_offset_out); extern int write_cow_header(char *cow_file, int fd, char *backing_file, I thought this was weird, so I did my own patch: diff -Naur linux-2.6.16/arch/um/drivers/cow.h linux-2.6.16.new/arch/um/drivers/cow.h --- linux-2.6.16/arch/um/drivers/cow.h 2006-04-07 09:14:20.000000000 -0700 +++ linux-2.6.16.new/arch/um/drivers/cow.h 2006-04-07 08:59:41.000000000 -0700 @@ -46,7 +46,7 @@ extern int read_cow_header(int (*reader)(__u64, char *, int, void *), void *arg, __u32 *version_out, char **backing_file_out, time_t *mtime_out, - __u64 *size_out, int *sectorsize_out, + unsigned long long *size_out, int *sectorsize_out, __u32 *align_out, int *bitmap_offset_out); extern int write_cow_header(char *cow_file, int fd, char *backing_file, diff -Naur linux-2.6.16/arch/um/drivers/cow_sys.h linux-2.6.16.new/arch/um/drivers/cow_sys.h --- linux-2.6.16/arch/um/drivers/cow_sys.h 2006-04-07 09:14:20.000000000 -0700 +++ linux-2.6.16.new/arch/um/drivers/cow_sys.h 2006-04-07 08:59:57.000000000 -0700 @@ -28,7 +28,7 @@ return(os_seek_file(fd, offset)); } -static inline int cow_file_size(char *file, __u64 *size_out) +static inline int cow_file_size(char *file, unsigned long long *size_out) { return(os_file_size(file, size_out)); } Now, running a "patch -p1 < my_diff" in the linux-2.6.16 directory works. I can't tell a difference between the two patches. Aside from that, the patch compiles and gives me a working binary. Thanks. Blaisorblade wrote: >On Saturday 01 April 2006 02:45, Blaisorblade wrote: > > >>On Friday 31 March 2006 18:47, Wesley Emeneker wrote: >> >> > > > >>>>On Friday 31 March 2006 02:52, Wesley Emeneker wrote: >>>> >>>> >>>>>I just downloaded the 2.6.16-bb1 patch and tried to compile against >>>>>2.6.16. I encountered a problem in arch/um/drivers/cow_sys.h,cow.h, >>>>>and cow_user.c >>>>> >>>>> > >[...] > > > >>>>>The simple and obvious fix is to change "__u64" in cow_sys.h and cow.h >>>>>to be "unsigned long long", >>>>> >>>>> > >Ok, can you verify that the attached patch is exactly the correct one to fix >this problem? I'll include it in next -bb and upstream release. Thanks for >the report. > > > >------------------------------------------------------------------------ > >uml: avoid warnings for diffent names for an unsigned quadword > >From: Paolo 'Blaisorblade' Giarrusso <bla...@ya...> > >Since on some 64-bit systems __u64 is rightfully defined to unsigned long and >GCC recognizes anyway unsigned long and unsigned long long as different, fix >some types back to being unsigned long long to avoid warnings and errors (for >prototype mismatch) on those systems. > >Thanks to the report by Wesley Emeneker wesleyemeneker (at) google (dot) com > >Signed-off-by: Paolo 'Blaisorblade' Giarrusso <bla...@ya...> >Index: linux-2.6.16/arch/um/drivers/cow.h >=================================================================== >--- linux-2.6.16.orig/arch/um/drivers/cow.h >+++ linux-2.6.16/arch/um/drivers/cow.h >@@ -46,7 +46,7 @@ extern int file_reader(__u64 offset, cha > extern int read_cow_header(int (*reader)(__u64, char *, int, void *), > void *arg, __u32 *version_out, > char **backing_file_out, time_t *mtime_out, >- __u64 *size_out, int *sectorsize_out, >+ unsigned long long *size_out, int *sectorsize_out, > __u32 *align_out, int *bitmap_offset_out); > > extern int write_cow_header(char *cow_file, int fd, char *backing_file, >Index: linux-2.6.16/arch/um/drivers/cow_sys.h >=================================================================== >--- linux-2.6.16.orig/arch/um/drivers/cow_sys.h >+++ linux-2.6.16/arch/um/drivers/cow_sys.h >@@ -28,7 +28,7 @@ static inline int cow_seek_file(int fd, > return(os_seek_file(fd, offset)); > } > >-static inline int cow_file_size(char *file, __u64 *size_out) >+static inline int cow_file_size(char *file, unsigned long long *size_out) > { > return(os_file_size(file, size_out)); > } > > |
From: Blaisorblade <bla...@ya...> - 2006-04-07 22:02:33
|
On Friday 07 April 2006 18:29, Wesley Emeneker wrote: > Actually, the patch doesn't apply for me. > Running a "patch -p1 < uml-fix-back-types-no-warning" from the > linux-2.6.16 directory gives me this error: > I thought this was weird, so I did my own patch: Indeed it is - this is likely due to misplaced tabs/spaces, however everything is ok so I can include the patch now. Thanks -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894) http://www.user-mode-linux.org/~blaisorblade ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it |