All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Perf tool fixes for ARC + uClibc
@ 2015-01-10 11:10 ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

Hi,

This series based off linux-next of 20150105 allows us to build/use perf
for ARC with uClibc based userland.

v2: Change since v1 [1]

* [1-3]/5 : no changes
* 4/5     : Make perf_evsel__alloc_id agnostic of zero threads [Namhyung Kim]
* 5/5     : Add missing test file

v1:
* 1/5 is really a resend of old patch posted by Alexey a while back
* 2/5 is uClibc build spew seen on ARM as well
* 3/5 likewise
* 4/5 is uClibc config specific
* 5/5 is uClibc pthread library flavour specific
  It adds a stub for pthread_attr_setaffinity_np
  I can rework it to disable the futex tests altogether if people think that is
  cleaner

Please review and consider applying.
W/o these perf doesn't build and/or work for ARC.

[1] http://www.spinics.net/linux/lists/kernel/msg1897268.html

Thx,
-Vineet

Alexey Brodkin (1):
  perf tools: [uclibc] fix statfs.f_type data type mismatch build error

Vineet Gupta (4):
  perf tools: [uclibc] Elide strlcpy warning
  perf tools: [uclibc] Avoid build splat for syscall numbers
  perf tools: [uclibc] don't rely on glibc malloc working for sz 0
  perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np

 tools/lib/api/fs/debugfs.c                                 |  2 +-
 tools/lib/api/fs/fs.c                                      |  2 +-
 tools/perf/bench/futex.h                                   | 13 +++++++++++++
 tools/perf/bench/sched-pipe.c                              |  1 -
 tools/perf/builtin-top.c                                   |  1 -
 tools/perf/config/Makefile                                 |  6 ++++++
 tools/perf/config/feature-checks/Makefile                  |  4 ++++
 tools/perf/config/feature-checks/test-all.c                |  5 +++++
 .../feature-checks/test-pthread-attr-setaffinity-np.c      | 14 ++++++++++++++
 tools/perf/perf-sys.h                                      |  1 -
 tools/perf/util/cache.h                                    |  2 ++
 tools/perf/util/evsel.c                                    |  3 +++
 12 files changed, 49 insertions(+), 5 deletions(-)
 create mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c

-- 
1.9.1


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

* [PATCH v2 0/5] Perf tool fixes for ARC + uClibc
@ 2015-01-10 11:10 ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

Hi,

This series based off linux-next of 20150105 allows us to build/use perf
for ARC with uClibc based userland.

v2: Change since v1 [1]

* [1-3]/5 : no changes
* 4/5     : Make perf_evsel__alloc_id agnostic of zero threads [Namhyung Kim]
* 5/5     : Add missing test file

v1:
* 1/5 is really a resend of old patch posted by Alexey a while back
* 2/5 is uClibc build spew seen on ARM as well
* 3/5 likewise
* 4/5 is uClibc config specific
* 5/5 is uClibc pthread library flavour specific
  It adds a stub for pthread_attr_setaffinity_np
  I can rework it to disable the futex tests altogether if people think that is
  cleaner

Please review and consider applying.
W/o these perf doesn't build and/or work for ARC.

[1] http://www.spinics.net/linux/lists/kernel/msg1897268.html

Thx,
-Vineet

Alexey Brodkin (1):
  perf tools: [uclibc] fix statfs.f_type data type mismatch build error

Vineet Gupta (4):
  perf tools: [uclibc] Elide strlcpy warning
  perf tools: [uclibc] Avoid build splat for syscall numbers
  perf tools: [uclibc] don't rely on glibc malloc working for sz 0
  perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np

 tools/lib/api/fs/debugfs.c                                 |  2 +-
 tools/lib/api/fs/fs.c                                      |  2 +-
 tools/perf/bench/futex.h                                   | 13 +++++++++++++
 tools/perf/bench/sched-pipe.c                              |  1 -
 tools/perf/builtin-top.c                                   |  1 -
 tools/perf/config/Makefile                                 |  6 ++++++
 tools/perf/config/feature-checks/Makefile                  |  4 ++++
 tools/perf/config/feature-checks/test-all.c                |  5 +++++
 .../feature-checks/test-pthread-attr-setaffinity-np.c      | 14 ++++++++++++++
 tools/perf/perf-sys.h                                      |  1 -
 tools/perf/util/cache.h                                    |  2 ++
 tools/perf/util/evsel.c                                    |  3 +++
 12 files changed, 49 insertions(+), 5 deletions(-)
 create mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c

-- 
1.9.1

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

* [PATCH v2 1/5] perf tools: [uclibc] fix statfs.f_type data type mismatch build error
  2015-01-10 11:10 ` Vineet Gupta
@ 2015-01-10 11:10   ` Vineet Gupta
  -1 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Borislav Petkov, Cody P Schafer, Vineet Gupta

From: Alexey Brodkin <abrodkin@synopsys.com>

ARC Linux uses the no legacy syscalls abi and corresponding uClibc headers
statfs defines f_type to be U32 which causes perf build breakage

http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common-generic/bits/statfs.h

----------->8---------------
  CC       fs/fs.o
fs/fs.c: In function 'fs__valid_mount':
fs/fs.c:82:24: error: comparison between signed and unsigned integer
expressions [-Werror=sign-compare]
  else if (st_fs.f_type != magic)
                        ^
cc1: all warnings being treated as errors
----------->8---------------

Cc: Borislav Petkov <bp@suse.de>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Cody P Schafer <dev@codyps.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: linux-perf-users@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

---
v3: Changes since v2 [2]
 * Made Changelog a bit more concise, no code changes [vgupta]

v2: Changes since v1 [1]
 * Added type cast to DEBUGFS_MAGIC in "debugfs.c" [Arnaldo]
 * Added verbose explanation of root cause

[2] https://lkml.org/lkml/2014/9/16/296
[1] https://lkml.org/lkml/2014/8/13/529

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/lib/api/fs/debugfs.c | 2 +-
 tools/lib/api/fs/fs.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c
index a74fba6d7743..93aa4cd2416f 100644
--- a/tools/lib/api/fs/debugfs.c
+++ b/tools/lib/api/fs/debugfs.c
@@ -67,7 +67,7 @@ int debugfs_valid_mountpoint(const char *debugfs)
 
 	if (statfs(debugfs, &st_fs) < 0)
 		return -ENOENT;
-	else if (st_fs.f_type != (long) DEBUGFS_MAGIC)
+	else if ((long) st_fs.f_type != (long) DEBUGFS_MAGIC)
 		return -ENOENT;
 
 	return 0;
diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c
index 65d9be3f9887..15e64921ea84 100644
--- a/tools/lib/api/fs/fs.c
+++ b/tools/lib/api/fs/fs.c
@@ -79,7 +79,7 @@ static int fs__valid_mount(const char *fs, long magic)
 
 	if (statfs(fs, &st_fs) < 0)
 		return -ENOENT;
-	else if (st_fs.f_type != magic)
+	else if ((long) st_fs.f_type != magic)
 		return -ENOENT;
 
 	return 0;
-- 
1.9.1


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

* [PATCH v2 1/5] perf tools: [uclibc] fix statfs.f_type data type mismatch build error
@ 2015-01-10 11:10   ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Borislav Petkov, Cody P Schafer, Vineet Gupta

From: Alexey Brodkin <abrodkin@synopsys.com>

ARC Linux uses the no legacy syscalls abi and corresponding uClibc headers
statfs defines f_type to be U32 which causes perf build breakage

http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common-generic/bits/statfs.h

----------->8---------------
  CC       fs/fs.o
fs/fs.c: In function 'fs__valid_mount':
fs/fs.c:82:24: error: comparison between signed and unsigned integer
expressions [-Werror=sign-compare]
  else if (st_fs.f_type != magic)
                        ^
cc1: all warnings being treated as errors
----------->8---------------

Cc: Borislav Petkov <bp@suse.de>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Cody P Schafer <dev@codyps.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: linux-perf-users@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

---
v3: Changes since v2 [2]
 * Made Changelog a bit more concise, no code changes [vgupta]

v2: Changes since v1 [1]
 * Added type cast to DEBUGFS_MAGIC in "debugfs.c" [Arnaldo]
 * Added verbose explanation of root cause

[2] https://lkml.org/lkml/2014/9/16/296
[1] https://lkml.org/lkml/2014/8/13/529

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/lib/api/fs/debugfs.c | 2 +-
 tools/lib/api/fs/fs.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c
index a74fba6d7743..93aa4cd2416f 100644
--- a/tools/lib/api/fs/debugfs.c
+++ b/tools/lib/api/fs/debugfs.c
@@ -67,7 +67,7 @@ int debugfs_valid_mountpoint(const char *debugfs)
 
 	if (statfs(debugfs, &st_fs) < 0)
 		return -ENOENT;
-	else if (st_fs.f_type != (long) DEBUGFS_MAGIC)
+	else if ((long) st_fs.f_type != (long) DEBUGFS_MAGIC)
 		return -ENOENT;
 
 	return 0;
diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c
index 65d9be3f9887..15e64921ea84 100644
--- a/tools/lib/api/fs/fs.c
+++ b/tools/lib/api/fs/fs.c
@@ -79,7 +79,7 @@ static int fs__valid_mount(const char *fs, long magic)
 
 	if (statfs(fs, &st_fs) < 0)
 		return -ENOENT;
-	else if (st_fs.f_type != magic)
+	else if ((long) st_fs.f_type != magic)
 		return -ENOENT;
 
 	return 0;
-- 
1.9.1

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

* [PATCH v2 2/5] perf tools: [uclibc] Elide strlcpy warning
  2015-01-10 11:10 ` Vineet Gupta
@ 2015-01-10 11:10   ` Vineet Gupta
  -1 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

----------------->8------------------
  CC       bench/sched-pipe.o
In file included from builtin-annotate.c:13:0:
util/cache.h:76:15: warning: redundant redeclaration of 'strlcpy'
[-Wredundant-decls]
 extern size_t strlcpy(char *dest, const char *src, size_t size);
               ^
In file included from util/util.h:55:0,
                 from builtin.h:4,
                 from builtin-annotate.c:8:
~/vineetg/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/string.h:396:15:
note: previous declaration of 'strlcpy' was here
 extern size_t strlcpy(char *__restrict dst, const char *__restrict src,
----------------->8------------------

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/util/cache.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/cache.h b/tools/perf/util/cache.h
index 5cf9e1b5989d..d04d770d90f6 100644
--- a/tools/perf/util/cache.h
+++ b/tools/perf/util/cache.h
@@ -71,7 +71,9 @@ extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2
 extern char *perf_pathdup(const char *fmt, ...)
 	__attribute__((format (printf, 1, 2)));
 
+#ifndef __UCLIBC__
 /* Matches the libc/libbsd function attribute so we declare this unconditionally: */
 extern size_t strlcpy(char *dest, const char *src, size_t size);
+#endif
 
 #endif /* __PERF_CACHE_H */
-- 
1.9.1


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

* [PATCH v2 2/5] perf tools: [uclibc] Elide strlcpy warning
@ 2015-01-10 11:10   ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

----------------->8------------------
  CC       bench/sched-pipe.o
In file included from builtin-annotate.c:13:0:
util/cache.h:76:15: warning: redundant redeclaration of 'strlcpy'
[-Wredundant-decls]
 extern size_t strlcpy(char *dest, const char *src, size_t size);
               ^
In file included from util/util.h:55:0,
                 from builtin.h:4,
                 from builtin-annotate.c:8:
~/vineetg/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/string.h:396:15:
note: previous declaration of 'strlcpy' was here
 extern size_t strlcpy(char *__restrict dst, const char *__restrict src,
----------------->8------------------

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/util/cache.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/cache.h b/tools/perf/util/cache.h
index 5cf9e1b5989d..d04d770d90f6 100644
--- a/tools/perf/util/cache.h
+++ b/tools/perf/util/cache.h
@@ -71,7 +71,9 @@ extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2
 extern char *perf_pathdup(const char *fmt, ...)
 	__attribute__((format (printf, 1, 2)));
 
+#ifndef __UCLIBC__
 /* Matches the libc/libbsd function attribute so we declare this unconditionally: */
 extern size_t strlcpy(char *dest, const char *src, size_t size);
+#endif
 
 #endif /* __PERF_CACHE_H */
-- 
1.9.1

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

* [PATCH v2 3/5] perf tools: [uclibc] Avoid build splat for syscall numbers
  2015-01-10 11:10 ` Vineet Gupta
@ 2015-01-10 11:10   ` Vineet Gupta
  -1 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

This is due to duplicated unistd inclusion (via uClibc headers + kernel headers)
Also seen on ARM uClibc based tools

------- ARC build ---------->8-------------

  CC       util/evlist.o
In file included from
~/arc/k.org/arch/arc/include/uapi/asm/unistd.h:25:0,
                 from util/../perf-sys.h:10,
                 from util/../perf.h:15,
                 from util/event.h:7,
                 from util/event.c:3:
~/arc/k.org/include/uapi/asm-generic/unistd.h:906:0:
warning: "__NR_fcntl64" redefined [enabled by default]
 #define __NR_fcntl64 __NR3264_fcntl
 ^
In file included from
~/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/sys/syscall.h:24:0,
                 from util/../perf-sys.h:6,
----------------->8-------------------

------- ARM build ---------->8-------------

  CC FPIC  plugin_scsi.o
In file included from util/../perf-sys.h:9:0,
                 from util/../perf.h:15,
                 from util/cache.h:7,
                 from perf.c:12:
~/arc/k.org/arch/arm/include/uapi/asm/unistd.h:28:0:
warning: "__NR_restart_syscall" redefined [enabled by default]
In file included from
~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/syscall.h:25:0,
                 from util/../perf-sys.h:6,
                 from util/../perf.h:15,
                 from util/cache.h:7,
                 from perf.c:12:
~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/sysnum.h:17:0:
note: this is the location of the previous definition
----------------->8-------------------

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/bench/sched-pipe.c | 1 -
 tools/perf/builtin-top.c      | 1 -
 tools/perf/perf-sys.h         | 1 -
 3 files changed, 3 deletions(-)

diff --git a/tools/perf/bench/sched-pipe.c b/tools/perf/bench/sched-pipe.c
index 07a8d7646a15..59b1af5b9447 100644
--- a/tools/perf/bench/sched-pipe.c
+++ b/tools/perf/bench/sched-pipe.c
@@ -19,7 +19,6 @@
 #include <stdlib.h>
 #include <signal.h>
 #include <sys/wait.h>
-#include <linux/unistd.h>
 #include <string.h>
 #include <errno.h>
 #include <assert.h>
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 0aa7747ff139..233ffff1b31b 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -66,7 +66,6 @@
 #include <sys/utsname.h>
 #include <sys/mman.h>
 
-#include <linux/unistd.h>
 #include <linux/types.h>
 
 static volatile int done;
diff --git a/tools/perf/perf-sys.h b/tools/perf/perf-sys.h
index 3183809ff6d9..7b7cb7396b69 100644
--- a/tools/perf/perf-sys.h
+++ b/tools/perf/perf-sys.h
@@ -6,7 +6,6 @@
 #include <sys/syscall.h>
 #include <linux/types.h>
 #include <linux/perf_event.h>
-#include <asm/unistd.h>
 
 #if defined(__i386__)
 #define mb()		asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
-- 
1.9.1


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

* [PATCH v2 3/5] perf tools: [uclibc] Avoid build splat for syscall numbers
@ 2015-01-10 11:10   ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

This is due to duplicated unistd inclusion (via uClibc headers + kernel headers)
Also seen on ARM uClibc based tools

------- ARC build ---------->8-------------

  CC       util/evlist.o
In file included from
~/arc/k.org/arch/arc/include/uapi/asm/unistd.h:25:0,
                 from util/../perf-sys.h:10,
                 from util/../perf.h:15,
                 from util/event.h:7,
                 from util/event.c:3:
~/arc/k.org/include/uapi/asm-generic/unistd.h:906:0:
warning: "__NR_fcntl64" redefined [enabled by default]
 #define __NR_fcntl64 __NR3264_fcntl
 ^
In file included from
~/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/sys/syscall.h:24:0,
                 from util/../perf-sys.h:6,
----------------->8-------------------

------- ARM build ---------->8-------------

  CC FPIC  plugin_scsi.o
In file included from util/../perf-sys.h:9:0,
                 from util/../perf.h:15,
                 from util/cache.h:7,
                 from perf.c:12:
~/arc/k.org/arch/arm/include/uapi/asm/unistd.h:28:0:
warning: "__NR_restart_syscall" redefined [enabled by default]
In file included from
~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/syscall.h:25:0,
                 from util/../perf-sys.h:6,
                 from util/../perf.h:15,
                 from util/cache.h:7,
                 from perf.c:12:
~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/sysnum.h:17:0:
note: this is the location of the previous definition
----------------->8-------------------

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/bench/sched-pipe.c | 1 -
 tools/perf/builtin-top.c      | 1 -
 tools/perf/perf-sys.h         | 1 -
 3 files changed, 3 deletions(-)

diff --git a/tools/perf/bench/sched-pipe.c b/tools/perf/bench/sched-pipe.c
index 07a8d7646a15..59b1af5b9447 100644
--- a/tools/perf/bench/sched-pipe.c
+++ b/tools/perf/bench/sched-pipe.c
@@ -19,7 +19,6 @@
 #include <stdlib.h>
 #include <signal.h>
 #include <sys/wait.h>
-#include <linux/unistd.h>
 #include <string.h>
 #include <errno.h>
 #include <assert.h>
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 0aa7747ff139..233ffff1b31b 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -66,7 +66,6 @@
 #include <sys/utsname.h>
 #include <sys/mman.h>
 
-#include <linux/unistd.h>
 #include <linux/types.h>
 
 static volatile int done;
diff --git a/tools/perf/perf-sys.h b/tools/perf/perf-sys.h
index 3183809ff6d9..7b7cb7396b69 100644
--- a/tools/perf/perf-sys.h
+++ b/tools/perf/perf-sys.h
@@ -6,7 +6,6 @@
 #include <sys/syscall.h>
 #include <linux/types.h>
 #include <linux/perf_event.h>
-#include <asm/unistd.h>
 
 #if defined(__i386__)
 #define mb()		asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
-- 
1.9.1

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

* [PATCH v2 4/5] perf tools: [uclibc] don't rely on glibc malloc working for sz 0
  2015-01-10 11:10 ` Vineet Gupta
@ 2015-01-10 11:10   ` Vineet Gupta
  -1 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

When running perf on ARC (uClibc based userspace), ran into this issue
------------->8----------------
	[ARCLinux]$ ./perf record ls
	bin             etc             perf            sys
	debug           init            perf.data       tmp
	[ perf record: Woken up 1 times to write data ]
	[ perf record: Captured and wrote 0.001 MB perf.data (~24 samples) ]

	[ARCLinux]$ ./perf report
	incompatible file format (rerun with -v to learn more)
------------->8----------------

The problem happens in the following call stack when zalloc is called
with size zero

glibc default / uClibc with MALLOC_GLIBC_COMPAT are OK, but not if that
config option is not enabled.

  cmd_report
     perf_session__new
	perf_session__open
	    perf_session__read_header
		read_attr(fd, header, &f_attr)
		nr_ids = f_attr.ids.size / sizeof(u64); <-- 0
		perf_evsel__alloc_id(vsel, 1, nr_ids)
			zalloc(ncpus * nthreads * sizeof(u64)) <-- 0

header.c: read_attr()

(gdb) p *f_attr
$17 = {
  attr = {
    type = 0,
    size = 96,
    config = 0,
    {
      sample_period = 4000,
      sample_freq = 4000
    },
...
  ids = {
    offset = 104,
    size = 0      <------
  }
}

Suggested-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/util/evsel.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 1e90c8557ede..1d826d63bc20 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -797,6 +797,9 @@ int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads)
 
 int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads)
 {
+	if (ncpus == 0 || nthreads == 0)
+		return 0;
+
 	if (evsel->system_wide)
 		nthreads = 1;
 
-- 
1.9.1


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

* [PATCH v2 4/5] perf tools: [uclibc] don't rely on glibc malloc working for sz 0
@ 2015-01-10 11:10   ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

When running perf on ARC (uClibc based userspace), ran into this issue
------------->8----------------
	[ARCLinux]$ ./perf record ls
	bin             etc             perf            sys
	debug           init            perf.data       tmp
	[ perf record: Woken up 1 times to write data ]
	[ perf record: Captured and wrote 0.001 MB perf.data (~24 samples) ]

	[ARCLinux]$ ./perf report
	incompatible file format (rerun with -v to learn more)
------------->8----------------

The problem happens in the following call stack when zalloc is called
with size zero

glibc default / uClibc with MALLOC_GLIBC_COMPAT are OK, but not if that
config option is not enabled.

  cmd_report
     perf_session__new
	perf_session__open
	    perf_session__read_header
		read_attr(fd, header, &f_attr)
		nr_ids = f_attr.ids.size / sizeof(u64); <-- 0
		perf_evsel__alloc_id(vsel, 1, nr_ids)
			zalloc(ncpus * nthreads * sizeof(u64)) <-- 0

header.c: read_attr()

(gdb) p *f_attr
$17 = {
  attr = {
    type = 0,
    size = 96,
    config = 0,
    {
      sample_period = 4000,
      sample_freq = 4000
    },
...
  ids = {
    offset = 104,
    size = 0      <------
  }
}

Suggested-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/util/evsel.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 1e90c8557ede..1d826d63bc20 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -797,6 +797,9 @@ int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads)
 
 int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads)
 {
+	if (ncpus == 0 || nthreads == 0)
+		return 0;
+
 	if (evsel->system_wide)
 		nthreads = 1;
 
-- 
1.9.1

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

* [PATCH v2 5/5] perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np
  2015-01-10 11:10 ` Vineet Gupta
@ 2015-01-10 11:10   ` Vineet Gupta
  -1 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

uClibc Linuxthreads.old doesnt support pthread_attr_setaffinity_np()
call

----------------->8-----------------------
  CC       bench/futex-hash.o
  CC       bench/futex-wake.o
bench/futex-hash.c: In function 'bench_futex_hash':
bench/futex-hash.c:161:3: error: implicit declaration of function
'pthread_attr_setaffinity_np' [-Werror=implicit-function-declaration]
   ret = pthread_attr_setaffinity_np(&thread_attr, sizeof(cpu_set_t),
&cpu);
   ^
bench/futex-hash.c:161:3: error: nested extern declaration of
'pthread_attr_setaffinity_np' [-Werror=nested-externs]
----------------->8-----------------------

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/bench/futex.h                                   | 13 +++++++++++++
 tools/perf/config/Makefile                                 |  6 ++++++
 tools/perf/config/feature-checks/Makefile                  |  4 ++++
 tools/perf/config/feature-checks/test-all.c                |  5 +++++
 .../feature-checks/test-pthread-attr-setaffinity-np.c      | 14 ++++++++++++++
 5 files changed, 42 insertions(+)
 create mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c

diff --git a/tools/perf/bench/futex.h b/tools/perf/bench/futex.h
index 71f2844cf97f..7ed22ff1e1ac 100644
--- a/tools/perf/bench/futex.h
+++ b/tools/perf/bench/futex.h
@@ -68,4 +68,17 @@ futex_cmp_requeue(u_int32_t *uaddr, u_int32_t val, u_int32_t *uaddr2, int nr_wak
 		 val, opflags);
 }
 
+#ifndef HAVE_PTHREAD_ATTR_SETAFFINITY_NP
+#include <pthread.h>
+static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
+					      size_t cpusetsize,
+					      cpu_set_t *cpuset)
+{
+	attr = attr;
+	cpusetsize = cpusetsize;
+	cpuset = cpuset;
+	return 0;
+}
+#endif
+
 #endif /* _FUTEX_H */
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 5d4b039fe1ed..6b59662136fa 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -198,6 +198,7 @@ CORE_FEATURE_TESTS =			\
 	libpython-version		\
 	libslang			\
 	libunwind			\
+	pthread-attr-setaffinity-np	\
 	stackprotector-all		\
 	timerfd				\
 	libdw-dwarf-unwind		\
@@ -226,6 +227,7 @@ VF_FEATURE_TESTS =			\
 	libelf-getphdrnum		\
 	libelf-mmap			\
 	libpython-version		\
+	pthread-attr-setaffinity-np	\
 	stackprotector-all		\
 	timerfd				\
 	libunwind-debug-frame		\
@@ -301,6 +303,10 @@ ifeq ($(feature-sync-compare-and-swap), 1)
   CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
 endif
 
+ifeq ($(feature-pthread-attr-setaffinity-np), 1)
+  CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
+endif
+
 ifndef NO_BIONIC
   $(call feature_check,bionic)
   ifeq ($(feature-bionic), 1)
diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
index 53f19b5dbc37..e9b99bb29348 100644
--- a/tools/perf/config/feature-checks/Makefile
+++ b/tools/perf/config/feature-checks/Makefile
@@ -25,6 +25,7 @@ FILES=					\
 	test-libslang.bin		\
 	test-libunwind.bin		\
 	test-libunwind-debug-frame.bin	\
+	test-pthread-attr-setaffinity-np.bin	\
 	test-stackprotector-all.bin	\
 	test-timerfd.bin		\
 	test-libdw-dwarf-unwind.bin	\
@@ -47,6 +48,9 @@ test-all.bin:
 test-hello.bin:
 	$(BUILD)
 
+test-pthread-attr-setaffinity-np.bin:
+	$(BUILD) -Werror
+
 test-stackprotector-all.bin:
 	$(BUILD) -Werror -fstack-protector-all
 
diff --git a/tools/perf/config/feature-checks/test-all.c b/tools/perf/config/feature-checks/test-all.c
index 652e0098eba6..6d4d09323922 100644
--- a/tools/perf/config/feature-checks/test-all.c
+++ b/tools/perf/config/feature-checks/test-all.c
@@ -97,6 +97,10 @@
 # include "test-zlib.c"
 #undef main
 
+#define main main_test_pthread_attr_setaffinity_np
+# include "test-pthread_attr_setaffinity_np.c"
+#undef main
+
 int main(int argc, char *argv[])
 {
 	main_test_libpython();
@@ -121,6 +125,7 @@ int main(int argc, char *argv[])
 	main_test_libdw_dwarf_unwind();
 	main_test_sync_compare_and_swap(argc, argv);
 	main_test_zlib();
+	main_test_pthread_attr_setaffinity_np();
 
 	return 0;
 }
diff --git a/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c b/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
new file mode 100644
index 000000000000..0a0d3ecb4e8a
--- /dev/null
+++ b/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
@@ -0,0 +1,14 @@
+#include <stdint.h>
+#include <pthread.h>
+
+int main(void)
+{
+	int ret = 0;
+	pthread_attr_t thread_attr;
+
+	pthread_attr_init(&thread_attr);
+	/* don't care abt exact args, just the API itself in libpthread */
+	ret = pthread_attr_setaffinity_np(&thread_attr, 0, NULL);
+
+	return ret;
+}
-- 
1.9.1


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

* [PATCH v2 5/5] perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np
@ 2015-01-10 11:10   ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-10 11:10 UTC (permalink / raw)
  To: acme, namhyung
  Cc: peterz, jolsa, mingo, linux-kernel, linux-perf-users, linux-arch,
	Alexey.Brodkin, Vineet Gupta

uClibc Linuxthreads.old doesnt support pthread_attr_setaffinity_np()
call

----------------->8-----------------------
  CC       bench/futex-hash.o
  CC       bench/futex-wake.o
bench/futex-hash.c: In function 'bench_futex_hash':
bench/futex-hash.c:161:3: error: implicit declaration of function
'pthread_attr_setaffinity_np' [-Werror=implicit-function-declaration]
   ret = pthread_attr_setaffinity_np(&thread_attr, sizeof(cpu_set_t),
&cpu);
   ^
bench/futex-hash.c:161:3: error: nested extern declaration of
'pthread_attr_setaffinity_np' [-Werror=nested-externs]
----------------->8-----------------------

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 tools/perf/bench/futex.h                                   | 13 +++++++++++++
 tools/perf/config/Makefile                                 |  6 ++++++
 tools/perf/config/feature-checks/Makefile                  |  4 ++++
 tools/perf/config/feature-checks/test-all.c                |  5 +++++
 .../feature-checks/test-pthread-attr-setaffinity-np.c      | 14 ++++++++++++++
 5 files changed, 42 insertions(+)
 create mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c

diff --git a/tools/perf/bench/futex.h b/tools/perf/bench/futex.h
index 71f2844cf97f..7ed22ff1e1ac 100644
--- a/tools/perf/bench/futex.h
+++ b/tools/perf/bench/futex.h
@@ -68,4 +68,17 @@ futex_cmp_requeue(u_int32_t *uaddr, u_int32_t val, u_int32_t *uaddr2, int nr_wak
 		 val, opflags);
 }
 
+#ifndef HAVE_PTHREAD_ATTR_SETAFFINITY_NP
+#include <pthread.h>
+static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
+					      size_t cpusetsize,
+					      cpu_set_t *cpuset)
+{
+	attr = attr;
+	cpusetsize = cpusetsize;
+	cpuset = cpuset;
+	return 0;
+}
+#endif
+
 #endif /* _FUTEX_H */
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 5d4b039fe1ed..6b59662136fa 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -198,6 +198,7 @@ CORE_FEATURE_TESTS =			\
 	libpython-version		\
 	libslang			\
 	libunwind			\
+	pthread-attr-setaffinity-np	\
 	stackprotector-all		\
 	timerfd				\
 	libdw-dwarf-unwind		\
@@ -226,6 +227,7 @@ VF_FEATURE_TESTS =			\
 	libelf-getphdrnum		\
 	libelf-mmap			\
 	libpython-version		\
+	pthread-attr-setaffinity-np	\
 	stackprotector-all		\
 	timerfd				\
 	libunwind-debug-frame		\
@@ -301,6 +303,10 @@ ifeq ($(feature-sync-compare-and-swap), 1)
   CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
 endif
 
+ifeq ($(feature-pthread-attr-setaffinity-np), 1)
+  CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
+endif
+
 ifndef NO_BIONIC
   $(call feature_check,bionic)
   ifeq ($(feature-bionic), 1)
diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
index 53f19b5dbc37..e9b99bb29348 100644
--- a/tools/perf/config/feature-checks/Makefile
+++ b/tools/perf/config/feature-checks/Makefile
@@ -25,6 +25,7 @@ FILES=					\
 	test-libslang.bin		\
 	test-libunwind.bin		\
 	test-libunwind-debug-frame.bin	\
+	test-pthread-attr-setaffinity-np.bin	\
 	test-stackprotector-all.bin	\
 	test-timerfd.bin		\
 	test-libdw-dwarf-unwind.bin	\
@@ -47,6 +48,9 @@ test-all.bin:
 test-hello.bin:
 	$(BUILD)
 
+test-pthread-attr-setaffinity-np.bin:
+	$(BUILD) -Werror
+
 test-stackprotector-all.bin:
 	$(BUILD) -Werror -fstack-protector-all
 
diff --git a/tools/perf/config/feature-checks/test-all.c b/tools/perf/config/feature-checks/test-all.c
index 652e0098eba6..6d4d09323922 100644
--- a/tools/perf/config/feature-checks/test-all.c
+++ b/tools/perf/config/feature-checks/test-all.c
@@ -97,6 +97,10 @@
 # include "test-zlib.c"
 #undef main
 
+#define main main_test_pthread_attr_setaffinity_np
+# include "test-pthread_attr_setaffinity_np.c"
+#undef main
+
 int main(int argc, char *argv[])
 {
 	main_test_libpython();
@@ -121,6 +125,7 @@ int main(int argc, char *argv[])
 	main_test_libdw_dwarf_unwind();
 	main_test_sync_compare_and_swap(argc, argv);
 	main_test_zlib();
+	main_test_pthread_attr_setaffinity_np();
 
 	return 0;
 }
diff --git a/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c b/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
new file mode 100644
index 000000000000..0a0d3ecb4e8a
--- /dev/null
+++ b/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
@@ -0,0 +1,14 @@
+#include <stdint.h>
+#include <pthread.h>
+
+int main(void)
+{
+	int ret = 0;
+	pthread_attr_t thread_attr;
+
+	pthread_attr_init(&thread_attr);
+	/* don't care abt exact args, just the API itself in libpthread */
+	ret = pthread_attr_setaffinity_np(&thread_attr, 0, NULL);
+
+	return ret;
+}
-- 
1.9.1

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

* Re: [PATCH v2 5/5] perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np
  2015-01-10 11:10   ` Vineet Gupta
  (?)
@ 2015-01-12 11:04   ` Jiri Olsa
  2015-01-12 11:13     ` Vineet Gupta
  -1 siblings, 1 reply; 20+ messages in thread
From: Jiri Olsa @ 2015-01-12 11:04 UTC (permalink / raw)
  To: Vineet Gupta
  Cc: acme, namhyung, peterz, jolsa, mingo, linux-kernel,
	linux-perf-users, linux-arch, Alexey.Brodkin

On Sat, Jan 10, 2015 at 04:40:54PM +0530, Vineet Gupta wrote:

SNIP

> @@ -198,6 +198,7 @@ CORE_FEATURE_TESTS =			\
>  	libpython-version		\
>  	libslang			\
>  	libunwind			\
> +	pthread-attr-setaffinity-np	\
>  	stackprotector-all		\
>  	timerfd				\
>  	libdw-dwarf-unwind		\
> @@ -226,6 +227,7 @@ VF_FEATURE_TESTS =			\
>  	libelf-getphdrnum		\
>  	libelf-mmap			\
>  	libpython-version		\
> +	pthread-attr-setaffinity-np	\
>  	stackprotector-all		\
>  	timerfd				\
>  	libunwind-debug-frame		\
> @@ -301,6 +303,10 @@ ifeq ($(feature-sync-compare-and-swap), 1)
>    CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
>  endif
>  
> +ifeq ($(feature-pthread-attr-setaffinity-np), 1)
> +  CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
> +endif
> +
>  ifndef NO_BIONIC
>    $(call feature_check,bionic)
>    ifeq ($(feature-bionic), 1)
> diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
> index 53f19b5dbc37..e9b99bb29348 100644
> --- a/tools/perf/config/feature-checks/Makefile
> +++ b/tools/perf/config/feature-checks/Makefile
> @@ -25,6 +25,7 @@ FILES=					\
>  	test-libslang.bin		\
>  	test-libunwind.bin		\
>  	test-libunwind-debug-frame.bin	\
> +	test-pthread-attr-setaffinity-np.bin	\
>  	test-stackprotector-all.bin	\
>  	test-timerfd.bin		\
>  	test-libdw-dwarf-unwind.bin	\
> @@ -47,6 +48,9 @@ test-all.bin:
>  test-hello.bin:
>  	$(BUILD)
>  
> +test-pthread-attr-setaffinity-np.bin:
> +	$(BUILD) -Werror

this does not works for me unless I add -lpthread (check patch below)
is it possible you pushed that through LDFLAGS?

otherwise I'm getting following error:
	---
	In file included from bench/futex-hash.c:17:0:
	bench/futex.h:73:19: error: conflicting types for ‘pthread_attr_setaffinity_np’
	 static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
			   ^
	In file included from bench/futex.h:72:0,
			 from bench/futex-hash.c:17:
	/usr/include/pthread.h:407:12: note: previous declaration of ‘pthread_attr_setaffinity_np’ was here
	 extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
		    ^
	make[1]: *** [bench/futex-hash.o] Error 1
	make[1]: *** Waiting for unfinished jobs....
	In file included from bench/futex-wake.c:17:0:
	bench/futex.h:73:19: error: conflicting types for ‘pthread_attr_setaffinity_np’
	 static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
			   ^
	In file included from bench/futex.h:72:0,
			 from bench/futex-wake.c:17:
	/usr/include/pthread.h:407:12: note: previous declaration of ‘pthread_attr_setaffinity_np’ was here
	 extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
		    ^
	make[1]: *** [bench/futex-wake.o] Error 1
	In file included from bench/futex-requeue.c:17:0:
	bench/futex.h:73:19: error: conflicting types for ‘pthread_attr_setaffinity_np’
	 static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
			   ^
	In file included from bench/futex.h:72:0,
			 from bench/futex-requeue.c:17:
	/usr/include/pthread.h:407:12: note: previous declaration of ‘pthread_attr_setaffinity_np’ was here
	 extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
		    ^
	make[1]: *** [bench/futex-requeue.o] Error 1
	make: *** [all] Error 2
	---

my system is x86_64 on F20

thanks,
jirka


diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
index e9b99bb29348..42ac05aaf8ac 100644
--- a/tools/perf/config/feature-checks/Makefile
+++ b/tools/perf/config/feature-checks/Makefile
@@ -49,7 +49,7 @@ test-hello.bin:
 	$(BUILD)
 
 test-pthread-attr-setaffinity-np.bin:
-	$(BUILD) -Werror
+	$(BUILD) -Werror -lpthread
 
 test-stackprotector-all.bin:
 	$(BUILD) -Werror -fstack-protector-all

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

* Re: [PATCH v2 1/5] perf tools: [uclibc] fix statfs.f_type data type mismatch build error
  2015-01-10 11:10   ` Vineet Gupta
  (?)
@ 2015-01-12 11:05   ` Jiri Olsa
  2015-01-13  1:47     ` Arnaldo Carvalho de Melo
  -1 siblings, 1 reply; 20+ messages in thread
From: Jiri Olsa @ 2015-01-12 11:05 UTC (permalink / raw)
  To: Vineet Gupta
  Cc: acme, namhyung, peterz, jolsa, mingo, linux-kernel,
	linux-perf-users, linux-arch, Alexey.Brodkin, Borislav Petkov,
	Cody P Schafer

On Sat, Jan 10, 2015 at 04:40:50PM +0530, Vineet Gupta wrote:
> From: Alexey Brodkin <abrodkin@synopsys.com>
> 
> ARC Linux uses the no legacy syscalls abi and corresponding uClibc headers
> statfs defines f_type to be U32 which causes perf build breakage
> 
> http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common-generic/bits/statfs.h
> 
> ----------->8---------------
>   CC       fs/fs.o
> fs/fs.c: In function 'fs__valid_mount':
> fs/fs.c:82:24: error: comparison between signed and unsigned integer
> expressions [-Werror=sign-compare]
>   else if (st_fs.f_type != magic)
>                         ^
> cc1: all warnings being treated as errors
> ----------->8---------------
> 
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Cody P Schafer <dev@codyps.com>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: linux-perf-users@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

Acked-by: Jiri Olsa <jolsa@kernel.org>

thanks,
jirka

> 
> ---
> v3: Changes since v2 [2]
>  * Made Changelog a bit more concise, no code changes [vgupta]
> 
> v2: Changes since v1 [1]
>  * Added type cast to DEBUGFS_MAGIC in "debugfs.c" [Arnaldo]
>  * Added verbose explanation of root cause
> 
> [2] https://lkml.org/lkml/2014/9/16/296
> [1] https://lkml.org/lkml/2014/8/13/529
> 
> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> ---
>  tools/lib/api/fs/debugfs.c | 2 +-
>  tools/lib/api/fs/fs.c      | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c
> index a74fba6d7743..93aa4cd2416f 100644
> --- a/tools/lib/api/fs/debugfs.c
> +++ b/tools/lib/api/fs/debugfs.c
> @@ -67,7 +67,7 @@ int debugfs_valid_mountpoint(const char *debugfs)
>  
>  	if (statfs(debugfs, &st_fs) < 0)
>  		return -ENOENT;
> -	else if (st_fs.f_type != (long) DEBUGFS_MAGIC)
> +	else if ((long) st_fs.f_type != (long) DEBUGFS_MAGIC)
>  		return -ENOENT;
>  
>  	return 0;
> diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c
> index 65d9be3f9887..15e64921ea84 100644
> --- a/tools/lib/api/fs/fs.c
> +++ b/tools/lib/api/fs/fs.c
> @@ -79,7 +79,7 @@ static int fs__valid_mount(const char *fs, long magic)
>  
>  	if (statfs(fs, &st_fs) < 0)
>  		return -ENOENT;
> -	else if (st_fs.f_type != magic)
> +	else if ((long) st_fs.f_type != magic)
>  		return -ENOENT;
>  
>  	return 0;
> -- 
> 1.9.1
> 

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

* Re: [PATCH v2 3/5] perf tools: [uclibc] Avoid build splat for syscall numbers
  2015-01-10 11:10   ` Vineet Gupta
  (?)
@ 2015-01-12 11:09   ` Jiri Olsa
  2015-01-12 12:00     ` Vineet Gupta
  -1 siblings, 1 reply; 20+ messages in thread
From: Jiri Olsa @ 2015-01-12 11:09 UTC (permalink / raw)
  To: Vineet Gupta
  Cc: acme, namhyung, peterz, jolsa, mingo, linux-kernel,
	linux-perf-users, linux-arch, Alexey.Brodkin

On Sat, Jan 10, 2015 at 04:40:52PM +0530, Vineet Gupta wrote:
> This is due to duplicated unistd inclusion (via uClibc headers + kernel headers)
> Also seen on ARM uClibc based tools
> 
> ------- ARC build ---------->8-------------
> 
>   CC       util/evlist.o
> In file included from
> ~/arc/k.org/arch/arc/include/uapi/asm/unistd.h:25:0,
>                  from util/../perf-sys.h:10,
>                  from util/../perf.h:15,
>                  from util/event.h:7,
>                  from util/event.c:3:
> ~/arc/k.org/include/uapi/asm-generic/unistd.h:906:0:
> warning: "__NR_fcntl64" redefined [enabled by default]
>  #define __NR_fcntl64 __NR3264_fcntl
>  ^
> In file included from
> ~/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/sys/syscall.h:24:0,
>                  from util/../perf-sys.h:6,
> ----------------->8-------------------
> 
> ------- ARM build ---------->8-------------
> 
>   CC FPIC  plugin_scsi.o
> In file included from util/../perf-sys.h:9:0,
>                  from util/../perf.h:15,
>                  from util/cache.h:7,
>                  from perf.c:12:
> ~/arc/k.org/arch/arm/include/uapi/asm/unistd.h:28:0:
> warning: "__NR_restart_syscall" redefined [enabled by default]
> In file included from
> ~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/syscall.h:25:0,
>                  from util/../perf-sys.h:6,
>                  from util/../perf.h:15,
>                  from util/cache.h:7,
>                  from perf.c:12:
> ~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/sysnum.h:17:0:
> note: this is the location of the previous definition
> ----------------->8-------------------

Could you please point out what's the right logic for including those headers?

I've always thought that just adding:

  #include <linux/unistd.h>

should be safe no matter what.. feels like bug in one of those
header files? (uClibc headers & kernel headers)

thanks for info,
jirka

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

* Re: [PATCH v2 5/5] perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np
  2015-01-12 11:04   ` Jiri Olsa
@ 2015-01-12 11:13     ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-12 11:13 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: acme, namhyung, peterz, jolsa, mingo, linux-kernel,
	linux-perf-users, linux-arch, Alexey.Brodkin

Hi Jiri,

On Monday 12 January 2015 04:35 PM, Jiri Olsa wrote:
> On Sat, Jan 10, 2015 at 04:40:54PM +0530, Vineet Gupta wrote:
>
> SNIP
>
>> [SNIP]
>>  	test-timerfd.bin		\
>>  	test-libdw-dwarf-unwind.bin	\
>> @@ -47,6 +48,9 @@ test-all.bin:
>>  test-hello.bin:
>>  	$(BUILD)
>>  
>> +test-pthread-attr-setaffinity-np.bin:
>> +	$(BUILD) -Werror
> this does not works for me unless I add -lpthread (check patch below)
> is it possible you pushed that through LDFLAGS?
>
> otherwise I'm getting following error:
> 	---
> 	In file included from bench/futex-hash.c:17:0:
> 	bench/futex.h:73:19: error: conflicting types for ‘pthread_attr_setaffinity_np’
> 	 static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
> [snip]
> 			   ^
> 	In file included from bench/futex.h:72:0,
> 			 from bench/futex-requeue.c:17:
> 	/usr/include/pthread.h:407:12: note: previous declaration of ‘pthread_attr_setaffinity_np’ was here
> 	 extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
> 		    ^
> 	make[1]: *** [bench/futex-requeue.o] Error 1
> 	make: *** [all] Error 2
> 	---
>
> my system is x86_64 on F20
>
> thanks,
> jirka
>
>
> diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
> index e9b99bb29348..42ac05aaf8ac 100644
> --- a/tools/perf/config/feature-checks/Makefile
> +++ b/tools/perf/config/feature-checks/Makefile
> @@ -49,7 +49,7 @@ test-hello.bin:
>  	$(BUILD)
>  
>  test-pthread-attr-setaffinity-np.bin:
> -	$(BUILD) -Werror
> +	$(BUILD) -Werror -lpthread
>  
>  test-stackprotector-all.bin:
>  	$(BUILD) -Werror -fstack-protector-all

Right - that fix is indeed needed to make it pass. Thing is, with my uClibc config
it always fails - so I couldn't make it fail because of this reason :-)

I'll add that hunk in v3.

Thx,
-Vineet

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

* Re: [PATCH v2 3/5] perf tools: [uclibc] Avoid build splat for syscall numbers
  2015-01-12 11:09   ` Jiri Olsa
@ 2015-01-12 12:00     ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-12 12:00 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: acme, namhyung, peterz, jolsa, mingo, linux-kernel,
	linux-perf-users, linux-arch, Alexey.Brodkin

Hi Jiri,

On Monday 12 January 2015 04:39 PM, Jiri Olsa wrote:
> On Sat, Jan 10, 2015 at 04:40:52PM +0530, Vineet Gupta wrote:
>> This is due to duplicated unistd inclusion (via uClibc headers + kernel headers)
>> Also seen on ARM uClibc based tools
>>
>> ------- ARC build ---------->8-------------
>>
>>   CC       util/evlist.o
>> In file included from
>> ~/arc/k.org/arch/arc/include/uapi/asm/unistd.h:25:0,
>>                  from util/../perf-sys.h:10,
>>                  from util/../perf.h:15,
>>                  from util/event.h:7,
>>                  from util/event.c:3:
>> ~/arc/k.org/include/uapi/asm-generic/unistd.h:906:0:
>> warning: "__NR_fcntl64" redefined [enabled by default]
>>  #define __NR_fcntl64 __NR3264_fcntl
>>  ^
>> In file included from
>> ~/arc/gnu/INSTALL_1412-arc-2014.12-rc1/arc-snps-linux-uclibc/sysroot/usr/include/sys/syscall.h:24:0,
>>                  from util/../perf-sys.h:6,
>> ----------------->8-------------------
>>
>> ------- ARM build ---------->8-------------
>>
>>   CC FPIC  plugin_scsi.o
>> In file included from util/../perf-sys.h:9:0,
>>                  from util/../perf.h:15,
>>                  from util/cache.h:7,
>>                  from perf.c:12:
>> ~/arc/k.org/arch/arm/include/uapi/asm/unistd.h:28:0:
>> warning: "__NR_restart_syscall" redefined [enabled by default]
>> In file included from
>> ~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/syscall.h:25:0,
>>                  from util/../perf-sys.h:6,
>>                  from util/../perf.h:15,
>>                  from util/cache.h:7,
>>                  from perf.c:12:
>> ~/buildroot/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/sysnum.h:17:0:
>> note: this is the location of the previous definition
>> ----------------->8-------------------
> Could you please point out what's the right logic for including those headers?

I'm not sure why you were including <linux/unistd.h> in first place. Vanilla
<unistd.h> shd suffice for the functions exported by that file. OTOH, if the
intent was to get SYS_xxx or NR_xxx, then per syscall man page, <sys/syscall.h> is
the recommended way.

I just tried a small test program which uses __NR_restart_syscall for both x86
(glibc) and ARC (uClibc) and including <sys/syscall.h> seems to work.

Also replacing <linux/unistd.h> with <sys/syscall.h> in the first 2 hunks of this
patch equally fixes my perf build splat. The 3rd one (perf-sys.h) already includes
<sys/syscall.h> so no change required there.

I'll send out a v3 to same effect.

>
> I've always thought that just adding:
>
>   #include <linux/unistd.h>
>
> should be safe no matter what.. feels like bug in one of those
> header files? (uClibc headers & kernel headers)

Well the design of asm-generic/unistd.h (no legacy syscalls ABI) which ARC uses
does require duplicate inclusion of asm/unistd.h so a simple guard in header is
not sufficient (and actually caused me embarrassing grief when I naively submitted
that into mainline some time last year)

Thx,
-Vineet

>
> thanks for info,
> jirka


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

* Re: [PATCH v2 1/5] perf tools: [uclibc] fix statfs.f_type data type mismatch build error
  2015-01-12 11:05   ` Jiri Olsa
@ 2015-01-13  1:47     ` Arnaldo Carvalho de Melo
  2015-01-13  4:49       ` Vineet Gupta
  0 siblings, 1 reply; 20+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-01-13  1:47 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Vineet Gupta, namhyung, peterz, jolsa, mingo, linux-kernel,
	linux-perf-users, linux-arch, Alexey.Brodkin, Borislav Petkov,
	Cody P Schafer

Em Mon, Jan 12, 2015 at 12:05:22PM +0100, Jiri Olsa escreveu:
> On Sat, Jan 10, 2015 at 04:40:50PM +0530, Vineet Gupta wrote:
> > From: Alexey Brodkin <abrodkin@synopsys.com>
> > 
> > ARC Linux uses the no legacy syscalls abi and corresponding uClibc headers
> > statfs defines f_type to be U32 which causes perf build breakage
> > 
> > http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common-generic/bits/statfs.h
> > 
> > ----------->8---------------
> >   CC       fs/fs.o
> > fs/fs.c: In function 'fs__valid_mount':
> > fs/fs.c:82:24: error: comparison between signed and unsigned integer
> > expressions [-Werror=sign-compare]
> >   else if (st_fs.f_type != magic)
> >                         ^
> > cc1: all warnings being treated as errors
> > ----------->8---------------
> > 
> > Cc: Borislav Petkov <bp@suse.de>
> > Cc: Jiri Olsa <jolsa@kernel.org>
> > Cc: Cody P Schafer <dev@codyps.com>
> > Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> > Cc: linux-perf-users@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> 
> Acked-by: Jiri Olsa <jolsa@kernel.org>

Thanks, applied, but please do not start lines in the changelog comment
with ---, that breaks some patch applying scripts. I fixed it up this
time.

- Arnaldo

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

* Re: [PATCH v2 1/5] perf tools: [uclibc] fix statfs.f_type data type mismatch build error
  2015-01-13  1:47     ` Arnaldo Carvalho de Melo
@ 2015-01-13  4:49       ` Vineet Gupta
  0 siblings, 0 replies; 20+ messages in thread
From: Vineet Gupta @ 2015-01-13  4:49 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Jiri Olsa
  Cc: namhyung, peterz, jolsa, mingo, linux-kernel, linux-perf-users,
	linux-arch, Alexey.Brodkin, Borislav Petkov, Cody P Schafer

On Tuesday 13 January 2015 07:18 AM, Arnaldo Carvalho de Melo wrote:

Em Mon, Jan 12, 2015 at 12:05:22PM +0100, Jiri Olsa escreveu:


> On Sat, Jan 10, 2015 at 04:40:50PM +0530, Vineet Gupta wrote:


> > From: Alexey Brodkin <abrodkin@synopsys.com><mailto:abrodkin@synopsys.com>
> >
> > ARC Linux uses the no legacy syscalls abi and corresponding uClibc headers
> > statfs defines f_type to be U32 which causes perf build breakage
> >
> > http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common-generic/bits/statfs.h
> >
> > ----------->8---------------
> >   CC       fs/fs.o
> > fs/fs.c: In function 'fs__valid_mount':
> > fs/fs.c:82:24: error: comparison between signed and unsigned integer
> > expressions [-Werror=sign-compare]
> >   else if (st_fs.f_type != magic)
> >                         ^
> > cc1: all warnings being treated as errors
> > ----------->8---------------
> >
> > Cc: Borislav Petkov <bp@suse.de><mailto:bp@suse.de>
> > Cc: Jiri Olsa <jolsa@kernel.org><mailto:jolsa@kernel.org>
> > Cc: Cody P Schafer <dev@codyps.com><mailto:dev@codyps.com>
> > Cc: Arnaldo Carvalho de Melo <acme@redhat.com><mailto:acme@redhat.com>
> > Cc: linux-perf-users@vger.kernel.org<mailto:linux-perf-users@vger.kernel.org>
> > Cc: linux-kernel@vger.kernel.org<mailto:linux-kernel@vger.kernel.org>
> > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com><mailto:abrodkin@synopsys.com>


>
> Acked-by: Jiri Olsa <jolsa@kernel.org><mailto:jolsa@kernel.org>


Thanks, applied, but please do not start lines in the changelog comment
with ---, that breaks some patch applying scripts. I fixed it up this
time.

Thx. I've udpated the changelogs so scissor lines start at column 3 with leading whitespace, is that OK or do you want me to remove those lines altogether. Also do u want me to drop this patch from v3 of series as I have some fixups for other patches.

Thx,
-Vineet



- Arnaldo




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

* [tip:perf/urgent] perf tools: Fix statfs.f_type data type mismatch build error with uclibc
  2015-01-10 11:10   ` Vineet Gupta
  (?)
  (?)
@ 2015-01-17 10:11   ` tip-bot for Alexey Brodkin
  -1 siblings, 0 replies; 20+ messages in thread
From: tip-bot for Alexey Brodkin @ 2015-01-17 10:11 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vineet.Gupta1, tglx, hpa, linux-kernel, namhyung, bp, peterz,
	mingo, acme, abrodkin, jolsa, dev

Commit-ID:  db1806edcfef007d9594435a331dcf7e7f1b8fac
Gitweb:     http://git.kernel.org/tip/db1806edcfef007d9594435a331dcf7e7f1b8fac
Author:     Alexey Brodkin <abrodkin@synopsys.com>
AuthorDate: Sat, 10 Jan 2015 16:40:50 +0530
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 16 Jan 2015 17:49:29 -0300

perf tools: Fix statfs.f_type data type mismatch build error with uclibc

ARC Linux uses the no legacy syscalls abi and corresponding uClibc headers
statfs defines f_type to be U32 which causes perf build breakage

http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common-generic/bits/statfs.h

  ----------->8---------------
    CC       fs/fs.o
  fs/fs.c: In function 'fs__valid_mount':
  fs/fs.c:82:24: error: comparison between signed and unsigned integer
  expressions [-Werror=sign-compare]
    else if (st_fs.f_type != magic)
                          ^
  cc1: all warnings being treated as errors
  ----------->8---------------

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Cody P Schafer <dev@codyps.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Link: http://lkml.kernel.org/r/1420888254-17504-2-git-send-email-vgupta@synopsys.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/lib/api/fs/debugfs.c | 2 +-
 tools/lib/api/fs/fs.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c
index a74fba6..86ea2d7 100644
--- a/tools/lib/api/fs/debugfs.c
+++ b/tools/lib/api/fs/debugfs.c
@@ -67,7 +67,7 @@ int debugfs_valid_mountpoint(const char *debugfs)
 
 	if (statfs(debugfs, &st_fs) < 0)
 		return -ENOENT;
-	else if (st_fs.f_type != (long) DEBUGFS_MAGIC)
+	else if ((long)st_fs.f_type != (long)DEBUGFS_MAGIC)
 		return -ENOENT;
 
 	return 0;
diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c
index 65d9be3..128ef63 100644
--- a/tools/lib/api/fs/fs.c
+++ b/tools/lib/api/fs/fs.c
@@ -79,7 +79,7 @@ static int fs__valid_mount(const char *fs, long magic)
 
 	if (statfs(fs, &st_fs) < 0)
 		return -ENOENT;
-	else if (st_fs.f_type != magic)
+	else if ((long)st_fs.f_type != magic)
 		return -ENOENT;
 
 	return 0;

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

end of thread, other threads:[~2015-01-17 10:12 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-10 11:10 [PATCH v2 0/5] Perf tool fixes for ARC + uClibc Vineet Gupta
2015-01-10 11:10 ` Vineet Gupta
2015-01-10 11:10 ` [PATCH v2 1/5] perf tools: [uclibc] fix statfs.f_type data type mismatch build error Vineet Gupta
2015-01-10 11:10   ` Vineet Gupta
2015-01-12 11:05   ` Jiri Olsa
2015-01-13  1:47     ` Arnaldo Carvalho de Melo
2015-01-13  4:49       ` Vineet Gupta
2015-01-17 10:11   ` [tip:perf/urgent] perf tools: Fix statfs.f_type data type mismatch build error with uclibc tip-bot for Alexey Brodkin
2015-01-10 11:10 ` [PATCH v2 2/5] perf tools: [uclibc] Elide strlcpy warning Vineet Gupta
2015-01-10 11:10   ` Vineet Gupta
2015-01-10 11:10 ` [PATCH v2 3/5] perf tools: [uclibc] Avoid build splat for syscall numbers Vineet Gupta
2015-01-10 11:10   ` Vineet Gupta
2015-01-12 11:09   ` Jiri Olsa
2015-01-12 12:00     ` Vineet Gupta
2015-01-10 11:10 ` [PATCH v2 4/5] perf tools: [uclibc] don't rely on glibc malloc working for sz 0 Vineet Gupta
2015-01-10 11:10   ` Vineet Gupta
2015-01-10 11:10 ` [PATCH v2 5/5] perf tools: [uclibc] provide stub for pthread_attr_setaffinity_np Vineet Gupta
2015-01-10 11:10   ` Vineet Gupta
2015-01-12 11:04   ` Jiri Olsa
2015-01-12 11:13     ` Vineet Gupta

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.