Skip to contentSkip to conversation

perf build failure on current tip:perf/core

ERROR In review Namhyung Kim 3 participants 14 messages Jan 7, 2012 – Jan 9, 2012 perf events

lore
Share & tools
lore
#0 lore raw

Hi,

When I tried to build perf, I was faced with following error:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’
util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

The code I tried was latest tip:perf/core - 9e183426bfb5 ("perf kvm: Fix copy & paste error in description") and code in mainline (v3.2) doesn't have this problem. Looking at the code, I couldn't find any clue to this. Any idea?

FYI, my system is Ubuntu 10.04 on x86_64. gcc version is 4.4.3:

namhyung@leonhard:perf$ gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--enable-shared --enable-multiarch --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4
--program-suffix=-4.4 --enable-nls --enable-clocale=gnu
--enable-libstdcxx-debug --enable-plugin --enable-objc-gc
--disable-werror --with-arch-32=i486 --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) 

Thanks.

Signature · 2 lines
Regards,
Namhyung Kim
#1 lore raw

Em Sun, Jan 08, 2012 at 12:42:29AM +0900, Namhyung Kim escreveu:

Quoted 13 lines

Hi,

When I tried to build perf, I was faced with following error:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’
util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

Quoted 6 lines

The code I tried was latest tip:perf/core - 9e183426bfb5 ("perf kvm: Fix copy & paste error in description") and code in mainline (v3.2) doesn't have this problem. Looking at the code, I couldn't find any clue to this. Any idea?

FYI, my system is Ubuntu 10.04 on x86_64. gcc version is 4.4.3:

Yeah, yesterday Joerg reported this as well, I managed to reproduce it on a newly installed ubuntu 10.04.3 (LTS) i686 VM, haven't had time to investigate yet tho.

- Arnaldo

Quoted 24 lines
namhyung@leonhard:perf$ gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--enable-shared --enable-multiarch --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4
--program-suffix=-4.4 --enable-nls --enable-clocale=gnu
--enable-libstdcxx-debug --enable-plugin --enable-objc-gc
--disable-werror --with-arch-32=i486 --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) 

Thanks.

Signature · 2 lines
Regards,
Namhyung Kim
#2 lore raw
In reply to Namhyung Kim
Quoted 13 lines · Namhyung Kim

Hi,

When I tried to build perf, I was faced with following error:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’
util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

Quoted 6 lines

The code I tried was latest tip:perf/core - 9e183426bfb5 ("perf kvm: Fix copy & paste error in description") and code in mainline (v3.2) doesn't have this problem. Looking at the code, I couldn't find any clue to this. Any idea?

FYI, my system is Ubuntu 10.04 on x86_64. gcc version is 4.4.3:

Which header does pwrite() belong to on that system - what does 'map pwrite' say? It ought to be unistd.h, which is directly included in util/trace-event-info.c.

My guess is that it might be related to:

tools/perf/Makefile:ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

Which introduces pwrite64() and defines pwrite() to them.

Does the patch below help? It's only a workaround really as pwrite() ought to exist ... Also, i have only tested this on 64-bit.

Thanks,

Ingo

tools/perf/util/trace-event-info.c +1 -1
index ac6830d..ba8b024 100644
@@ -189,7 +189,7 @@ static void record_file(const char *file, size_t hdr_sz)
 	if (bigendian())
 		sizep += sizeof(u64) - hdr_sz;
 
-	if (hdr_sz && pwrite(output_fd, sizep, hdr_sz, hdr_pos) < 0)
+	if (hdr_sz && pwrite64(output_fd, sizep, hdr_sz, hdr_pos) < 0)
 		die("writing to %s", output_file);
 }
 
#3 lore raw

2012-01-08 (일), 10:00 +0100, Ingo Molnar:

Quoted 45 lines · Namhyung Kim
Quoted 14 lines

Hi,

When I tried to build perf, I was faced with following error:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’
util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

Quoted 6 lines

The code I tried was latest tip:perf/core - 9e183426bfb5 ("perf kvm: Fix copy & paste error in description") and code in mainline (v3.2) doesn't have this problem. Looking at the code, I couldn't find any clue to this. Any idea?

FYI, my system is Ubuntu 10.04 on x86_64. gcc version is 4.4.3:

Which header does pwrite() belong to on that system - what does 'map pwrite' say? It ought to be unistd.h, which is directly included in util/trace-event-info.c.

My guess is that it might be related to:

tools/perf/Makefile:ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

Which introduces pwrite64() and defines pwrite() to them.

Does the patch below help? It's only a workaround really as pwrite() ought to exist ... Also, i have only tested this on 64-bit.

Thanks,

Ingo

tools/perf/util/trace-event-info.c +0 -0
index ac6830d..ba8b024 100644

tools/perf/util/trace-event-info.c static void record_file(const char *file, size_t hdr_sz) · line 195

Quoted 8 lines
tools/perf/util/trace-event-info.c +1 -1
@@ -189,7 +189,7 @@ static void record_file(const char *file, size_t hdr_sz)
 	if (bigendian())
 		sizep += sizeof(u64) - hdr_sz;
 
-	if (hdr_sz && pwrite(output_fd, sizep, hdr_sz, hdr_pos) < 0)
+	if (hdr_sz && pwrite64(output_fd, sizep, hdr_sz, hdr_pos) < 0)
 		die("writing to %s", output_file);
 }
 

Hello,

Unfortunately, above patch doesn't work for my system:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function
‘pwrite64’
util/trace-event-info.c:192: error: nested extern declaration of
‘pwrite64’

And 'map pwrite' on terminal says:

  $ map pwrite
  The program 'map' is currently not installed.  You can install it by
typing:
  sudo apt-get install sgt-puzzles

I don't think this is the package what you said. Anyway quick grep'ing pwrite tells me it's in the unistd.h:

  $ grep pwrite /usr/include/unistd.h
  extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
			     pwrite64) __wur;
  #   define pwrite pwrite64

Thanks.

Signature · 2 lines
Regards,
Namhyung Kim
#4 lore raw
Quoted 67 lines · Namhyung Kim

2012-01-08 (일), 10:00 +0100, Ingo Molnar:

Quoted 45 lines · Namhyung Kim
Quoted 14 lines

Hi,

When I tried to build perf, I was faced with following error:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’
util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

Quoted 6 lines

The code I tried was latest tip:perf/core - 9e183426bfb5 ("perf kvm: Fix copy & paste error in description") and code in mainline (v3.2) doesn't have this problem. Looking at the code, I couldn't find any clue to this. Any idea?

FYI, my system is Ubuntu 10.04 on x86_64. gcc version is 4.4.3:

Which header does pwrite() belong to on that system - what does 'map pwrite' say? It ought to be unistd.h, which is directly included in util/trace-event-info.c.

My guess is that it might be related to:

tools/perf/Makefile:ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

Which introduces pwrite64() and defines pwrite() to them.

Does the patch below help? It's only a workaround really as pwrite() ought to exist ... Also, i have only tested this on 64-bit.

Thanks,

Ingo

tools/perf/util/trace-event-info.c +0 -0
index ac6830d..ba8b024 100644

tools/perf/util/trace-event-info.c static void record_file(const char *file, size_t hdr_sz) · line 195

Quoted 8 lines
tools/perf/util/trace-event-info.c +1 -1
@@ -189,7 +189,7 @@ static void record_file(const char *file, size_t hdr_sz)
 	if (bigendian())
 		sizep += sizeof(u64) - hdr_sz;
 
-	if (hdr_sz && pwrite(output_fd, sizep, hdr_sz, hdr_pos) < 0)
+	if (hdr_sz && pwrite64(output_fd, sizep, hdr_sz, hdr_pos) < 0)
 		die("writing to %s", output_file);
 }
 

Hello,

Unfortunately, above patch doesn't work for my system:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function
‘pwrite64’
util/trace-event-info.c:192: error: nested extern declaration of
‘pwrite64’

Quoted 1 line

And 'map pwrite' on terminal says:

'man pwrite' i wanted to say.

Quoted 5 lines
  $ map pwrite
  The program 'map' is currently not installed.  You can install it by
typing:
  sudo apt-get install sgt-puzzles
Quoted 8 lines

I don't think this is the package what you said. Anyway quick grep'ing pwrite tells me it's in the unistd.h:

  $ grep pwrite /usr/include/unistd.h
  extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
			     pwrite64) __wur;
  #   define pwrite pwrite64

There's multiple definitions there, and we get lost somehow - as unistd.h is included:

~/tip/tools/perf> grep -n unistd.h util/trace-event-info.c 34:#include <unistd.h>

Thanks,

Ingo

#5 lore raw
Quoted 69 lines · Ingo Molnar
Quoted 67 lines · Namhyung Kim

2012-01-08 (일), 10:00 +0100, Ingo Molnar:

Quoted 45 lines · Namhyung Kim
Quoted 14 lines

Hi,

When I tried to build perf, I was faced with following error:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’
util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

Quoted 6 lines

The code I tried was latest tip:perf/core - 9e183426bfb5 ("perf kvm: Fix copy & paste error in description") and code in mainline (v3.2) doesn't have this problem. Looking at the code, I couldn't find any clue to this. Any idea?

FYI, my system is Ubuntu 10.04 on x86_64. gcc version is 4.4.3:

Which header does pwrite() belong to on that system - what does 'map pwrite' say? It ought to be unistd.h, which is directly included in util/trace-event-info.c.

My guess is that it might be related to:

tools/perf/Makefile:ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

Which introduces pwrite64() and defines pwrite() to them.

Does the patch below help? It's only a workaround really as pwrite() ought to exist ... Also, i have only tested this on 64-bit.

Thanks,

Ingo

tools/perf/util/trace-event-info.c +0 -0
index ac6830d..ba8b024 100644

tools/perf/util/trace-event-info.c static void record_file(const char *file, size_t hdr_sz) · line 195

Quoted 8 lines
tools/perf/util/trace-event-info.c +1 -1
@@ -189,7 +189,7 @@ static void record_file(const char *file, size_t hdr_sz)
 	if (bigendian())
 		sizep += sizeof(u64) - hdr_sz;
 
-	if (hdr_sz && pwrite(output_fd, sizep, hdr_sz, hdr_pos) < 0)
+	if (hdr_sz && pwrite64(output_fd, sizep, hdr_sz, hdr_pos) < 0)
 		die("writing to %s", output_file);
 }
 

Hello,

Unfortunately, above patch doesn't work for my system:

CC util/trace-event-info.o
cc1: warnings being treated as errors util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function
‘pwrite64’
util/trace-event-info.c:192: error: nested extern declaration of
‘pwrite64’

Quoted 3 lines
Quoted 1 line

And 'map pwrite' on terminal says:

'man pwrite' i wanted to say.

Ah, OK :) here it is.

PREAD(2) Linux Programmer's Manual PREAD(2)

NAME
pread, pwrite - read from or write to a file descriptor at a given offset

SYNOPSIS

       #define _XOPEN_SOURCE 500

       #include <unistd.h>

       ssize_t pread(int fd, void *buf, size_t count, off_t offset);

       ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);

...

And #defining _XOPEN_SOURCE to 500 before the #include doesn't resolve the issue.

Quoted 18 lines
Quoted 6 lines
  $ map pwrite
  The program 'map' is currently not installed.  You can install it by
typing:
  sudo apt-get install sgt-puzzles
Quoted 8 lines

I don't think this is the package what you said. Anyway quick grep'ing pwrite tells me it's in the unistd.h:

  $ grep pwrite /usr/include/unistd.h
  extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
			     pwrite64) __wur;
  #   define pwrite pwrite64

There's multiple definitions there, and we get lost somehow - as unistd.h is included:

Quoted 6 lines

~/tip/tools/perf> grep -n unistd.h util/trace-event-info.c 34:#include <unistd.h>

Thanks,

Ingo

This is the content of my /usr/include/unistd.h:

#ifdef __USE_UNIX98

# ifndef __USE_FILE_OFFSET64
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
		      __off_t __offset) __wur;
extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
		       __off_t __offset) __wur;
# else
#  ifdef __REDIRECT
extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
				   __off64_t __offset),
			   pread64) __wur;
extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
				    size_t __nbytes, __off64_t __offset),
			   pwrite64) __wur;
#  else
#   define pread pread64
#   define pwrite pwrite64
#  endif
# endif
# ifdef __USE_LARGEFILE64
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
			__off64_t __offset) __wur;
extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
			 __off64_t __offset) __wur;
# endif
#endif

I think all of pread/write functions are properly defined here:

  $ echo '#include <unistd.h>' | \
Quoted 2 lines

gcc -xc -E -dM -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - | \
grep -e UNIX98 -e LARGEFILE64 -e FILE_OFFSET

#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" #define _LARGEFILE64_SOURCE 1
#define __USE_UNIX98 1
#define __USE_LARGEFILE64 1
#define _FILE_OFFSET_BITS 64
#define __USE_FILE_OFFSET64 1

Thanks,
Namhyung

#6 lore raw
Quoted 57 lines · Namhyung Kim
Quoted 17 lines
Quoted 5 lines
  $ map pwrite
  The program 'map' is currently not installed.  You can install it by
typing:
  sudo apt-get install sgt-puzzles
Quoted 8 lines

I don't think this is the package what you said. Anyway quick grep'ing pwrite tells me it's in the unistd.h:

  $ grep pwrite /usr/include/unistd.h
  extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
			     pwrite64) __wur;
  #   define pwrite pwrite64

There's multiple definitions there, and we get lost somehow - as unistd.h is included:

Quoted 6 lines

~/tip/tools/perf> grep -n unistd.h util/trace-event-info.c 34:#include <unistd.h>

Thanks,

Ingo

This is the content of my /usr/include/unistd.h:

#ifdef __USE_UNIX98

# ifndef __USE_FILE_OFFSET64
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
		      __off_t __offset) __wur;
extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
		       __off_t __offset) __wur;
# else
#  ifdef __REDIRECT
extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
				   __off64_t __offset),
			   pread64) __wur;
extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
				    size_t __nbytes, __off64_t __offset),
			   pwrite64) __wur;
#  else
#   define pread pread64
#   define pwrite pwrite64
#  endif
# endif
# ifdef __USE_LARGEFILE64
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
			__off64_t __offset) __wur;
extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
			 __off64_t __offset) __wur;
# endif
#endif

I think all of pread/write functions are properly defined here:

  $ echo '#include <unistd.h>' | \
Quoted 8 lines
Quoted 2 lines

gcc -xc -E -dM -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - | \
grep -e UNIX98 -e LARGEFILE64 -e FILE_OFFSET

#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" #define _LARGEFILE64_SOURCE 1
#define __USE_UNIX98 1
#define __USE_LARGEFILE64 1
#define _FILE_OFFSET_BITS 64
#define __USE_FILE_OFFSET64 1

So which preprocessor branch within unistd.h does it get into on your system and why isnt there a pwrite()/pwrite64() prototype once it goes along that path?

You could try an ugly approach and edit your unistd.h and put in debug lines like this:

#warn got here: __LINE__

and thus see which branch it really gets into.

(save a backup copy of unistd.h first ;-)

Thanks,

Ingo

#7 lore raw
Quoted 77 lines · Ingo Molnar
Quoted 57 lines · Namhyung Kim
Quoted 17 lines
Quoted 5 lines
  $ map pwrite
  The program 'map' is currently not installed.  You can install it by
typing:
  sudo apt-get install sgt-puzzles
Quoted 8 lines

I don't think this is the package what you said. Anyway quick grep'ing pwrite tells me it's in the unistd.h:

  $ grep pwrite /usr/include/unistd.h
  extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
			     pwrite64) __wur;
  #   define pwrite pwrite64

There's multiple definitions there, and we get lost somehow - as unistd.h is included:

Quoted 6 lines

~/tip/tools/perf> grep -n unistd.h util/trace-event-info.c 34:#include <unistd.h>

Thanks,

Ingo

This is the content of my /usr/include/unistd.h:

#ifdef __USE_UNIX98

# ifndef __USE_FILE_OFFSET64
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
		      __off_t __offset) __wur;
extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
		       __off_t __offset) __wur;
# else
#  ifdef __REDIRECT
extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
				   __off64_t __offset),
			   pread64) __wur;
extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
				    size_t __nbytes, __off64_t __offset),
			   pwrite64) __wur;
#  else
#   define pread pread64
#   define pwrite pwrite64
#  endif
# endif
# ifdef __USE_LARGEFILE64
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
			__off64_t __offset) __wur;
extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
			 __off64_t __offset) __wur;
# endif
#endif

I think all of pread/write functions are properly defined here:

  $ echo '#include <unistd.h>' | \
Quoted 8 lines
Quoted 2 lines

gcc -xc -E -dM -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - | \
grep -e UNIX98 -e LARGEFILE64 -e FILE_OFFSET

#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" #define _LARGEFILE64_SOURCE 1
#define __USE_UNIX98 1
#define __USE_LARGEFILE64 1
#define _FILE_OFFSET_BITS 64
#define __USE_FILE_OFFSET64 1

So which preprocessor branch within unistd.h does it get into on your system and why isnt there a pwrite()/pwrite64() prototype once it goes along that path?

You could try an ugly approach and edit your unistd.h and put in debug lines like this:

#warn got here: __LINE__

Quoted 7 lines

and thus see which branch it really gets into.

(save a backup copy of unistd.h first ;-)

Thanks,

Ingo

Hi, Ingo

Putting the debug lines told me __USE_UNIX98 is not defined for the file. It's because ctype.h gets included without _GNU_SOURCE and then it includes feature.h AFAICS. Encompassing ctype.h with #define/#undef _GNU_SOURCE or just adding __USE_UNIX98 before unistd.h makes the file compiled, but it seems like an improper solution. What is the right way?

Thanks.

Signature · 2 lines
Regards,
Namhyung Kim
#8 lore raw
Quoted 6 lines · Namhyung Kim

Putting the debug lines told me __USE_UNIX98 is not defined for the file. It's because ctype.h gets included without _GNU_SOURCE and then it includes feature.h AFAICS. Encompassing ctype.h with #define/#undef _GNU_SOURCE or just adding __USE_UNIX98 before unistd.h makes the file compiled, but it seems like an improper solution. What is the right way?

Could you just remove the ctype.h include? AFAICS it's not needed in that file.

Thanks,

Ingo

#9 lore raw

PATCH 1/1 perf tools: Fix compile error on x86_64 Ubuntu

ctype.h is not needed here and it breaks build on some system (at least 64bit Ubuntu 10.04) like below. Just get rid of it.

CC util/trace-event-info.o
cc1: warnings being treated as errors
util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’ util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

---
 tools/perf/util/trace-event-info.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
tools/perf/util/trace-event-info.c +0 -1
index ac6830d8292b..fc22cf5c605f 100644
@@ -18,7 +18,6 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#include <ctype.h>
 #include "util.h"
 #include <dirent.h>
 #include <mntent.h>
Signature · 1 line
1.7.8.2
#10 lore raw

Re: [PATCH] perf tools: Fix compile error on x86_64 Ubuntu

Em Mon, Jan 09, 2012 at 12:10:30AM +0900, Namhyung Kim escreveu:

Quoted 2 lines

ctype.h is not needed here and it breaks build on some system (at least 64bit Ubuntu 10.04) like below. Just get rid of it.

Thanks, applying it together with your previous patchset.

- Arnaldo

Quoted 26 lines

CC util/trace-event-info.o
cc1: warnings being treated as errors
util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’ util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

---
 tools/perf/util/trace-event-info.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
tools/perf/util/trace-event-info.c +0 -1
index ac6830d8292b..fc22cf5c605f 100644
@@ -18,7 +18,6 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#include <ctype.h>
 #include "util.h"
 #include <dirent.h>
 #include <mntent.h>
Signature · 1 line
1.7.8.2
#11 lore raw

Re: [PATCH] perf tools: Fix compile error on x86_64 Ubuntu

Quoted 5 lines · Arnaldo Carvalho de Melo

Em Mon, Jan 09, 2012 at 12:10:30AM +0900, Namhyung Kim escreveu:

Quoted 2 lines

ctype.h is not needed here and it breaks build on some system (at least 64bit Ubuntu 10.04) like below. Just get rid of it.

Thanks, applying it together with your previous patchset.

Note that there are other ctype.h inclusions elsewhere as well, which should be considered for removal as well.

Thanks,

Ingo

#12 lore raw

Re: [PATCH] perf tools: Fix compile error on x86_64 Ubuntu

2012-01-08 (일), 16:32 +0100, Ingo Molnar:

Quoted 6 lines · Arnaldo Carvalho de Melo
Quoted 5 lines

Em Mon, Jan 09, 2012 at 12:10:30AM +0900, Namhyung Kim escreveu:

Quoted 2 lines

ctype.h is not needed here and it breaks build on some system (at least 64bit Ubuntu 10.04) like below. Just get rid of it.

Quoted 8 lines
Quoted 1 line

Thanks, applying it together with your previous patchset.

Note that there are other ctype.h inclusions elsewhere as well, which should be considered for removal as well.

Thanks,

Ingo

Hi,

I'll look into them as well later.

Thanks.

Signature · 2 lines
Regards,
Namhyung Kim
#13 lore raw

[tip:perf/core] perf tools: Fix compile error on x86_64 Ubuntu

In reply to Namhyung Kim
Commit-ID:  172d1b0b73256551f100fc00c69e356d047103f5
Gitweb:     http://git.kernel.org/tip/172d1b0b73256551f100fc00c69e356d047103f5
Author:     Namhyung Kim <[email protected]>
AuthorDate: Mon, 9 Jan 2012 00:10:30 +0900
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Sun, 8 Jan 2012 13:34:55 -0200

perf tools: Fix compile error on x86_64 Ubuntu

The ctype.h include is not needed here and it breaks build on some systems (at least 64bit Ubuntu 10.04) like below. Just get rid of it.

CC util/trace-event-info.o
cc1: warnings being treated as errors
util/trace-event-info.c: In function ‘record_file’:
util/trace-event-info.c:192: error: implicit declaration of function ‘pwrite’ util/trace-event-info.c:192: error: nested extern declaration of ‘pwrite’
make: *** [util/trace-event-info.o] Error 1

---
 tools/perf/util/trace-event-info.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
tools/perf/util/trace-event-info.c +0 -1
index ac6830d..fc22cf5 100644
@@ -18,7 +18,6 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#include <ctype.h>
 #include "util.h"
 #include <dirent.h>
 #include <mntent.h>