linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [ERROR] perf build failure on current tip:perf/core
@ 2012-01-07 15:42 Namhyung Kim
  2012-01-07 17:35 ` Arnaldo Carvalho de Melo
  2012-01-08  9:00 ` Ingo Molnar
  0 siblings, 2 replies; 14+ messages in thread
From: Namhyung Kim @ 2012-01-07 15:42 UTC (permalink / raw)
  To: Ingo Molnar, Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras
  Cc: linux-kernel

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.


-- 
Regards,
Namhyung Kim



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-07 15:42 [ERROR] perf build failure on current tip:perf/core Namhyung Kim
@ 2012-01-07 17:35 ` Arnaldo Carvalho de Melo
  2012-01-08  9:00 ` Ingo Molnar
  1 sibling, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-07 17:35 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: Ingo Molnar, Peter Zijlstra, Paul Mackerras, linux-kernel

Em Sun, Jan 08, 2012 at 12:42:29AM +0900, Namhyung Kim escreveu:
> 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:

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
 
> 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.
> 
> 
> -- 
> Regards,
> Namhyung Kim
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-07 15:42 [ERROR] perf build failure on current tip:perf/core Namhyung Kim
  2012-01-07 17:35 ` Arnaldo Carvalho de Melo
@ 2012-01-08  9:00 ` Ingo Molnar
  2012-01-08  9:41   ` Namhyung Kim
  1 sibling, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2012-01-08  9:00 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel


* Namhyung Kim <namhyung@gmail.com> wrote:

> 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:

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

diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
index ac6830d..ba8b024 100644
--- a/tools/perf/util/trace-event-info.c
+++ b/tools/perf/util/trace-event-info.c
@@ -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);
 }
 

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-08  9:00 ` Ingo Molnar
@ 2012-01-08  9:41   ` Namhyung Kim
  2012-01-08 11:34     ` Ingo Molnar
  0 siblings, 1 reply; 14+ messages in thread
From: Namhyung Kim @ 2012-01-08  9:41 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel

2012-01-08 (일), 10:00 +0100, Ingo Molnar:
> * Namhyung Kim <namhyung@gmail.com> wrote:
> 
> > 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:
> 
> 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
> 
> diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
> index ac6830d..ba8b024 100644
> --- a/tools/perf/util/trace-event-info.c
> +++ b/tools/perf/util/trace-event-info.c
> @@ -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.


-- 
Regards,
Namhyung Kim



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-08  9:41   ` Namhyung Kim
@ 2012-01-08 11:34     ` Ingo Molnar
  2012-01-08 12:30       ` Namhyung Kim
  0 siblings, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2012-01-08 11:34 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel


* Namhyung Kim <namhyung@gmail.com> wrote:

> 2012-01-08 (일), 10:00 +0100, Ingo Molnar:
> > * Namhyung Kim <namhyung@gmail.com> wrote:
> > 
> > > 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:
> > 
> > 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
> > 
> > diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
> > index ac6830d..ba8b024 100644
> > --- a/tools/perf/util/trace-event-info.c
> > +++ b/tools/perf/util/trace-event-info.c
> > @@ -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:

'man pwrite' i wanted to say.

>   $ 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

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-08 11:34     ` Ingo Molnar
@ 2012-01-08 12:30       ` Namhyung Kim
  2012-01-08 14:03         ` Ingo Molnar
  0 siblings, 1 reply; 14+ messages in thread
From: Namhyung Kim @ 2012-01-08 12:30 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel

Ingo Molnar <mingo@elte.hu> wrote:

> * Namhyung Kim <namhyung@gmail.com> wrote:
>
>> 2012-01-08 (일), 10:00 +0100, Ingo Molnar:
>> > * Namhyung Kim <namhyung@gmail.com> wrote:
>> > 
>> > > 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:
>> > 
>> > 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
>> > 
>> > diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
>> > index ac6830d..ba8b024 100644
>> > --- a/tools/perf/util/trace-event-info.c
>> > +++ b/tools/perf/util/trace-event-info.c
>> > @@ -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:
>
> '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.


>
>>   $ 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
>
> 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

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>' | \
  > 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


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-08 12:30       ` Namhyung Kim
@ 2012-01-08 14:03         ` Ingo Molnar
  2012-01-08 14:50           ` Namhyung Kim
  0 siblings, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2012-01-08 14:03 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel


* Namhyung Kim <namhyung@gmail.com> wrote:

> >>   $ 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
> >
> > 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
> 
> 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>' | \
>   > 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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-08 14:03         ` Ingo Molnar
@ 2012-01-08 14:50           ` Namhyung Kim
  2012-01-08 15:00             ` Ingo Molnar
  0 siblings, 1 reply; 14+ messages in thread
From: Namhyung Kim @ 2012-01-08 14:50 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel

2012-01-08 (Sun), 15:03 +0100, Ingo Molnar wrote:
> * Namhyung Kim <namhyung@gmail.com> wrote:
> 
> > >>   $ 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
> > >
> > > 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
> > 
> > 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>' | \
> >   > 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

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.

-- 
Regards,
Namhyung Kim



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [ERROR] perf build failure on current tip:perf/core
  2012-01-08 14:50           ` Namhyung Kim
@ 2012-01-08 15:00             ` Ingo Molnar
  2012-01-08 15:10               ` [PATCH] perf tools: Fix compile error on x86_64 Ubuntu Namhyung Kim
  0 siblings, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2012-01-08 15:00 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel


* Namhyung Kim <namhyung@gmail.com> wrote:

> 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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH] perf tools: Fix compile error on x86_64 Ubuntu
  2012-01-08 15:00             ` Ingo Molnar
@ 2012-01-08 15:10               ` Namhyung Kim
  2012-01-08 15:12                 ` Arnaldo Carvalho de Melo
  2012-01-09  7:29                 ` [tip:perf/core] " tip-bot for Namhyung Kim
  0 siblings, 2 replies; 14+ messages in thread
From: Namhyung Kim @ 2012-01-08 15:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel

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

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
---
 tools/perf/util/trace-event-info.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
index ac6830d8292b..fc22cf5c605f 100644
--- a/tools/perf/util/trace-event-info.c
+++ b/tools/perf/util/trace-event-info.c
@@ -18,7 +18,6 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#include <ctype.h>
 #include "util.h"
 #include <dirent.h>
 #include <mntent.h>
-- 
1.7.8.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] perf tools: Fix compile error on x86_64 Ubuntu
  2012-01-08 15:10               ` [PATCH] perf tools: Fix compile error on x86_64 Ubuntu Namhyung Kim
@ 2012-01-08 15:12                 ` Arnaldo Carvalho de Melo
  2012-01-08 15:32                   ` Ingo Molnar
  2012-01-09  7:29                 ` [tip:perf/core] " tip-bot for Namhyung Kim
  1 sibling, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-08 15:12 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: Ingo Molnar, Peter Zijlstra, Paul Mackerras, linux-kernel

Em Mon, Jan 09, 2012 at 12:10:30AM +0900, Namhyung Kim escreveu:
> 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
 
>     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
> 
> Signed-off-by: Namhyung Kim <namhyung@gmail.com>
> ---
>  tools/perf/util/trace-event-info.c |    1 -
>  1 files changed, 0 insertions(+), 1 deletions(-)
> 
> diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
> index ac6830d8292b..fc22cf5c605f 100644
> --- a/tools/perf/util/trace-event-info.c
> +++ b/tools/perf/util/trace-event-info.c
> @@ -18,7 +18,6 @@
>   *
>   * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   */
> -#include <ctype.h>
>  #include "util.h"
>  #include <dirent.h>
>  #include <mntent.h>
> -- 
> 1.7.8.2

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] perf tools: Fix compile error on x86_64 Ubuntu
  2012-01-08 15:12                 ` Arnaldo Carvalho de Melo
@ 2012-01-08 15:32                   ` Ingo Molnar
  2012-01-08 15:49                     ` Namhyung Kim
  0 siblings, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2012-01-08 15:32 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Namhyung Kim, Peter Zijlstra, Paul Mackerras, linux-kernel

* Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:

> Em Mon, Jan 09, 2012 at 12:10:30AM +0900, Namhyung Kim escreveu:
> > 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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] perf tools: Fix compile error on x86_64 Ubuntu
  2012-01-08 15:32                   ` Ingo Molnar
@ 2012-01-08 15:49                     ` Namhyung Kim
  0 siblings, 0 replies; 14+ messages in thread
From: Namhyung Kim @ 2012-01-08 15:49 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Paul Mackerras, linux-kernel

2012-01-08 (일), 16:32 +0100, Ingo Molnar: 
> * Arnaldo Carvalho de Melo <acme@ghostprotocols.net> wrote:
> 
> > Em Mon, Jan 09, 2012 at 12:10:30AM +0900, Namhyung Kim escreveu:
> > > 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

Hi,

I'll look into them as well later.

Thanks.


-- 
Regards,
Namhyung Kim




^ permalink raw reply	[flat|nested] 14+ messages in thread

* [tip:perf/core] perf tools: Fix compile error on x86_64 Ubuntu
  2012-01-08 15:10               ` [PATCH] perf tools: Fix compile error on x86_64 Ubuntu Namhyung Kim
  2012-01-08 15:12                 ` Arnaldo Carvalho de Melo
@ 2012-01-09  7:29                 ` tip-bot for Namhyung Kim
  1 sibling, 0 replies; 14+ messages in thread
From: tip-bot for Namhyung Kim @ 2012-01-09  7:29 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: acme, linux-kernel, paulus, hpa, mingo, a.p.zijlstra,
	joerg.roedel, namhyung, tglx, mingo

Commit-ID:  172d1b0b73256551f100fc00c69e356d047103f5
Gitweb:     http://git.kernel.org/tip/172d1b0b73256551f100fc00c69e356d047103f5
Author:     Namhyung Kim <namhyung@gmail.com>
AuthorDate: Mon, 9 Jan 2012 00:10:30 +0900
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
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

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Joerg Roedel <joerg.roedel@amd.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1326035430-7621-1-git-send-email-namhyung@gmail.com
Signed-off-by: Namhyung Kim <namhyung@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/trace-event-info.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
index ac6830d..fc22cf5 100644
--- a/tools/perf/util/trace-event-info.c
+++ b/tools/perf/util/trace-event-info.c
@@ -18,7 +18,6 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#include <ctype.h>
 #include "util.h"
 #include <dirent.h>
 #include <mntent.h>

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-01-09  7:29 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-07 15:42 [ERROR] perf build failure on current tip:perf/core Namhyung Kim
2012-01-07 17:35 ` Arnaldo Carvalho de Melo
2012-01-08  9:00 ` Ingo Molnar
2012-01-08  9:41   ` Namhyung Kim
2012-01-08 11:34     ` Ingo Molnar
2012-01-08 12:30       ` Namhyung Kim
2012-01-08 14:03         ` Ingo Molnar
2012-01-08 14:50           ` Namhyung Kim
2012-01-08 15:00             ` Ingo Molnar
2012-01-08 15:10               ` [PATCH] perf tools: Fix compile error on x86_64 Ubuntu Namhyung Kim
2012-01-08 15:12                 ` Arnaldo Carvalho de Melo
2012-01-08 15:32                   ` Ingo Molnar
2012-01-08 15:49                     ` Namhyung Kim
2012-01-09  7:29                 ` [tip:perf/core] " tip-bot for Namhyung Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).