It failed to build perf on my ubuntu 10.04 box (gcc 4.4.3):
CC util/strlist.o
cc1: warnings being treated as errors
util/strlist.c: In function ‘str_node__delete’:
util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
CC util/strfilter.o
make: *** [util/strlist.o] Error 1
CC util/srcline.o
cc1: warnings being treated as errors
util/srcline.c: In function ‘addr2line_init’:
util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
util/srcline.c: In function ‘addr2line_cleanup’:
util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
make: *** [util/srcline.o] Error 1
It seems it only allows to remove 'const' qualifier.
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/util/srcline.c | 4 ++--
tools/perf/util/strlist.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
index 7e67879ebd25..f3e4bc5fe5d2 100644
--- a/tools/perf/util/srcline.c
+++ b/tools/perf/util/srcline.c
@@ -129,7 +129,7 @@ static struct a2l_data *addr2line_init(const char *path)
out:
if (a2l) {
- zfree((void **)&a2l->input);
+ zfree((char **)&a2l->input);
free(a2l);
}
bfd_close(abfd);
@@ -140,7 +140,7 @@ static void addr2line_cleanup(struct a2l_data *a2l)
{
if (a2l->abfd)
bfd_close(a2l->abfd);
- zfree((void **)&a2l->input);
+ zfree((char **)&a2l->input);
zfree(&a2l->syms);
free(a2l);
}
diff --git a/tools/perf/util/strlist.c b/tools/perf/util/strlist.c
index 61a90bf24b4d..71f9d102b96f 100644
--- a/tools/perf/util/strlist.c
+++ b/tools/perf/util/strlist.c
@@ -39,7 +39,7 @@ out_delete:
static void str_node__delete(struct str_node *snode, bool dupstr)
{
if (dupstr)
- zfree((void **)&snode->s);
+ zfree((char **)&snode->s);
free(snode);
}
--
1.7.9.2
Em Thu, Jan 09, 2014 at 11:07:59PM +0900, Namhyung Kim escreveu:
> It failed to build perf on my ubuntu 10.04 box (gcc 4.4.3):
>
> CC util/strlist.o
> cc1: warnings being treated as errors
> util/strlist.c: In function ‘str_node__delete’:
> util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
> util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
> CC util/strfilter.o
> make: *** [util/strlist.o] Error 1
>
> CC util/srcline.o
> cc1: warnings being treated as errors
> util/srcline.c: In function ‘addr2line_init’:
> util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
> util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
> util/srcline.c: In function ‘addr2line_cleanup’:
> util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
> util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
> make: *** [util/srcline.o] Error 1
>
> It seems it only allows to remove 'const' qualifier.
Humm, I just tried building it here on:
acme@ubuntu13:~/git/linux$ uname -a
Linux ubuntu13 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
acme@ubuntu13:~/git/linux$ cat /etc/debian_version
wheezy/sid
acme@ubuntu13:~/git/linux$
acme@ubuntu13:~/git/linux$ make O=/tmp/build/perf -C tools/perf install
make: Entering directory `/home/acme/git/linux/tools/perf'
BUILD: Doing 'make -j4' parallel build
Auto-detecting system features:
... backtrace: [ on ]
... dwarf: [ OFF ]
... fortify-source: [ on ]
... glibc: [ on ]
... gtk2: [ OFF ]
... gtk2-infobar: [ OFF ]
... libaudit: [ OFF ]
... libbfd: [ OFF ]
... libelf: [ OFF ]
... libelf-getphdrnum: [ OFF ]
... libelf-mmap: [ OFF ]
... libnuma: [ OFF ]
... libperl: [ OFF ]
... libpython: [ OFF ]
... libpython-version: [ OFF ]
... libslang: [ OFF ]
... libunwind: [ OFF ]
... on-exit: [ on ]
... stackprotector-all: [ on ]
... timerfd: [ on ]
config/Makefile:276: No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev
config/Makefile:327: No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 1.1
config/Makefile:350: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev
config/Makefile:364: slang not found, disables TUI support. Please install slang-devel or libslang-dev
config/Makefile:377: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
config/Makefile:438: The path '/usr/bin/python-config' is not executable.
config/Makefile:442: No python-config tool was found
config/Makefile:442: Python support will not be built
config/Makefile:532: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev
MKDIR /tmp/build/perf/arch
<SNIP>
CC /tmp/build/perf/util/strlist.o
<SNIP>
CC /tmp/build/perf/util/parse-events.o
CC /tmp/build/perf/util/parse-events-flex.o
AR /tmp/build/perf/libperf.a
LINK /tmp/build/perf/perf
INSTALL binaries
INSTALL libexec
INSTALL perf-archive
INSTALL perf_completion-script
INSTALL tests
make: Leaving directory `/home/acme/git/linux/tools/perf'
acme@ubuntu13:~/git/linux$
Works just fine, can you provide more details about your system? Is it 32-bit?
I'm installing more devel packages to this just installed 64-bit VM system and
will install another VM with a 32-bit Ubuntu with the same version as you.
- Arnaldo
2014-01-13 (월), 15:00 -0300, Arnaldo Carvalho de Melo:
> Em Thu, Jan 09, 2014 at 11:07:59PM +0900, Namhyung Kim escreveu:
> > It failed to build perf on my ubuntu 10.04 box (gcc 4.4.3):
> >
> > CC util/strlist.o
> > cc1: warnings being treated as errors
> > util/strlist.c: In function ‘str_node__delete’:
> > util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
> > util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
> > CC util/strfilter.o
> > make: *** [util/strlist.o] Error 1
> >
> > CC util/srcline.o
> > cc1: warnings being treated as errors
> > util/srcline.c: In function ‘addr2line_init’:
> > util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
> > util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
> > util/srcline.c: In function ‘addr2line_cleanup’:
> > util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
> > util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
> > make: *** [util/srcline.o] Error 1
> >
> > It seems it only allows to remove 'const' qualifier.
>
> Humm, I just tried building it here on:
>
> acme@ubuntu13:~/git/linux$ uname -a
> Linux ubuntu13 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
> acme@ubuntu13:~/git/linux$ cat /etc/debian_version
> wheezy/sid
> acme@ubuntu13:~/git/linux$
>
> acme@ubuntu13:~/git/linux$ make O=/tmp/build/perf -C tools/perf install
> make: Entering directory `/home/acme/git/linux/tools/perf'
> BUILD: Doing 'make -j4' parallel build
>
> Auto-detecting system features:
> ... backtrace: [ on ]
> ... dwarf: [ OFF ]
> ... fortify-source: [ on ]
> ... glibc: [ on ]
> ... gtk2: [ OFF ]
> ... gtk2-infobar: [ OFF ]
> ... libaudit: [ OFF ]
> ... libbfd: [ OFF ]
> ... libelf: [ OFF ]
> ... libelf-getphdrnum: [ OFF ]
> ... libelf-mmap: [ OFF ]
> ... libnuma: [ OFF ]
> ... libperl: [ OFF ]
> ... libpython: [ OFF ]
> ... libpython-version: [ OFF ]
> ... libslang: [ OFF ]
> ... libunwind: [ OFF ]
> ... on-exit: [ on ]
> ... stackprotector-all: [ on ]
> ... timerfd: [ on ]
>
> config/Makefile:276: No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev
> config/Makefile:327: No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 1.1
> config/Makefile:350: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev
> config/Makefile:364: slang not found, disables TUI support. Please install slang-devel or libslang-dev
> config/Makefile:377: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
> config/Makefile:438: The path '/usr/bin/python-config' is not executable.
> config/Makefile:442: No python-config tool was found
> config/Makefile:442: Python support will not be built
> config/Makefile:532: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev
> MKDIR /tmp/build/perf/arch
> <SNIP>
> CC /tmp/build/perf/util/strlist.o
> <SNIP>
> CC /tmp/build/perf/util/parse-events.o
> CC /tmp/build/perf/util/parse-events-flex.o
> AR /tmp/build/perf/libperf.a
> LINK /tmp/build/perf/perf
> INSTALL binaries
> INSTALL libexec
> INSTALL perf-archive
> INSTALL perf_completion-script
> INSTALL tests
> make: Leaving directory `/home/acme/git/linux/tools/perf'
> acme@ubuntu13:~/git/linux$
>
> Works just fine, can you provide more details about your system? Is it 32-bit?
Nope, it's a 64-bit machine.
$ uname -a
Linux leonhard 2.6.32-45-generic #104-Ubuntu SMP Tue Feb 19 21:20:09 UTC
2013 x86_64 GNU/Linux
$ cat /etc/debian_version
squeeze/sid
$ make
BUILD: Doing 'make -j4' parallel build
Auto-detecting system features:
... backtrace: [ on ]
... dwarf: [ on ]
... fortify-source: [ on ]
... glibc: [ on ]
... gtk2: [ on ]
... gtk2-infobar: [ on ]
... libaudit: [ on ]
... libbfd: [ on ]
... libelf: [ on ]
... libelf-getphdrnum: [ OFF ]
... libelf-mmap: [ on ]
... libnuma: [ OFF ]
... libperl: [ on ]
... libpython: [ on ]
... libpython-version: [ on ]
... libslang: [ on ]
... libunwind: [ OFF ]
... on-exit: [ on ]
... stackprotector-all: [ on ]
... timerfd: [ on ]
config/Makefile:327: No libunwind found, disabling post unwind support.
Please install libunwind-dev[el] >= 1.1
config/Makefile:532: No numa.h found, disables 'perf bench numa mem'
benchmark, please install numactl-devel/libnuma-devel/libnuma-dev
GEN common-cmds.h
<SNIP>
CC util/strlist.o
CC util/string.o
cc1: warnings being treated as errors
util/strlist.c: In function ‘str_node__delete’:
util/strlist.c:42: error: dereferencing type-punned pointer will break
strict-aliasing rules
util/strlist.c:42: error: dereferencing type-punned pointer will break
strict-aliasing rules
make[1]: *** [util/strlist.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
$ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
Thanks,
Namhyung
Commit-ID: 7d16c634233c411f54b89d0f1d51750dc85c5f7e
Gitweb: http://git.kernel.org/tip/7d16c634233c411f54b89d0f1d51750dc85c5f7e
Author: Namhyung Kim <[email protected]>
AuthorDate: Thu, 9 Jan 2014 23:07:59 +0900
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Wed, 15 Jan 2014 15:10:04 -0300
perf tools: Fix build error due to zfree() cast
It failed to build perf on my ubuntu 10.04 box (gcc 4.4.3):
CC util/strlist.o
cc1: warnings being treated as errors
util/strlist.c: In function ‘str_node__delete’:
util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
util/strlist.c:42: error: dereferencing type-punned pointer will break strict-aliasing rules
CC util/strfilter.o
make: *** [util/strlist.o] Error 1
CC util/srcline.o
cc1: warnings being treated as errors
util/srcline.c: In function ‘addr2line_init’:
util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
util/srcline.c:132: error: dereferencing type-punned pointer will break strict-aliasing rules
util/srcline.c: In function ‘addr2line_cleanup’:
util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
util/srcline.c:143: error: dereferencing type-punned pointer will break strict-aliasing rules
make: *** [util/srcline.o] Error 1
It seems it only allows to remove 'const' qualifier.
Signed-off-by: Namhyung Kim <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/srcline.c | 4 ++--
tools/perf/util/strlist.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
index 7e67879..f3e4bc5 100644
--- a/tools/perf/util/srcline.c
+++ b/tools/perf/util/srcline.c
@@ -129,7 +129,7 @@ static struct a2l_data *addr2line_init(const char *path)
out:
if (a2l) {
- zfree((void **)&a2l->input);
+ zfree((char **)&a2l->input);
free(a2l);
}
bfd_close(abfd);
@@ -140,7 +140,7 @@ static void addr2line_cleanup(struct a2l_data *a2l)
{
if (a2l->abfd)
bfd_close(a2l->abfd);
- zfree((void **)&a2l->input);
+ zfree((char **)&a2l->input);
zfree(&a2l->syms);
free(a2l);
}
diff --git a/tools/perf/util/strlist.c b/tools/perf/util/strlist.c
index 61a90bf..71f9d10 100644
--- a/tools/perf/util/strlist.c
+++ b/tools/perf/util/strlist.c
@@ -39,7 +39,7 @@ out_delete:
static void str_node__delete(struct str_node *snode, bool dupstr)
{
if (dupstr)
- zfree((void **)&snode->s);
+ zfree((char **)&snode->s);
free(snode);
}