lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+5PVA5SWV-pWxfisAVXB-PkARqRsHiaWOne2sXiG7r1D5M6Rg@mail.gmail.com>
Date:	Tue, 21 Jan 2014 19:58:41 -0500
From:	Josh Boyer <jwboyer@...oraproject.org>
To:	Jiri Olsa <jolsa@...hat.com>, Ingo Molnar <mingo@...e.hu>,
	Steven Rostedt <rostedt@...dmis.org>,
	Arnaldo Carvalho de Melo <acme@...hat.com>
Cc:	"Linux-Kernel@...r. Kernel. Org" <linux-kernel@...r.kernel.org>
Subject: Re: Weird plugin paths in perf and perf.so binaries with 3.14 merge window

On Tue, Jan 21, 2014 at 3:02 PM, Josh Boyer <jwboyer@...oraproject.org> wrote:
> Hi All,
>
> I went to build Linux v3.13-737-g7fe67a1 in Fedora this morning and it
> resulted in RPM complaining that the perf and perf.so binaries had
> strings in them that matched the RPM_BUILD_ROOT string.  That fails
> the RPM build.
>
> Looking over the logs, I see that the traceevent plugins are getting a
> rather weird -DPLUGIN_DIR define passed to them.  E.g.:
>
> gcc -c -g -Wall   -I. -I
> /home/jwboyer/kernel/kernel-3.13.fc21/linux-3.14.0-0.rc0.git1.1.fc21.x86_64/tools/lib/traceevent/../../include
>  '-DPLUGIN_DIR="/home/jwboyer/rpmbuild/BUILDROOT/kernel-3.14.0-0.rc0.git1.1.fc21.x86_64//usr//usr/lib64/traceevent/plugins"'
>  -D_GNU_SOURCE -std=gnu99 -fPIC
> /home/jwboyer/kernel/kernel-3.13.fc21/linux-3.14.0-0.rc0.git1.1.fc21.x86_64/tools/lib/traceevent/parse-filter.c
> -o parse-filter.o
>
> We're building perf like so:
>
> make -s -j8 -C tools/perf V=1 WERROR=0 NO_LIBUNWIND=1
> HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 NO_BIONIC=1
> prefix=/usr DESTDIR=/home/jwboyer/rpmbuild/BUILDROOT/kernel-3.14.0-0.rc0.git1.1.fc21.x86_64
> all
>
> and installing it via:
>
> make -s -j8 -C tools/perf V=1 WERROR=0 NO_LIBUNWIND=1
> HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 NO_BIONIC=1
> prefix=/usr DESTDIR=/home/jwboyer/rpmbuild/BUILDROOT/kernel-3.14.0-0.rc0.git1.1.fc21.x86_64
> install-bin
>
> make -s -j8 -C tools/perf V=1 WERROR=0 NO_LIBUNWIND=1
> HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 NO_BIONIC=1
> prefix=/usr DESTDIR=/home/jwboyer/rpmbuild/BUILDROOT/kernel-3.14.0-0.rc0.git1.1.fc21.x86_64
> install-python_ext
>
> This has worked for all the builds up until this point.
>
> Somehow the perf and perf.so binaries are getting the string being
> passed via -DPLUGIN_DIR into them, likely through the libtraceevent.a
> link.  I'm pretty sure that (1) the string being passed is totally
> broken and should be "/usr/lib64/traceevent/plugins" and (2) that I
> haven't come close to deciphering how to fix this.
>
> So, could you please look this over and see where the define is
> getting messed up?

With the patch below (also attached because I'm sure gmail is going to
mess this up), I get a much more sane PLUGIN_DIR value:

gcc -c -g -Wall   -I. -I
/home/jwboyer/kernel/kernel-3.13.fc21/linux-3.14.0-0.rc0.git1.1.fc21.x86_64/tools/lib/traceevent/../../include
 '-DPLUGIN_DIR="/usr/lib64/traceevent/plugins"'  -D_GNU_SOURCE -fPIC
-o plugin_scsi.o
/home/jwboyer/kernel/kernel-3.13.fc21/linux-3.14.0-0.rc0.git1.1.fc21.x86_64/tools/lib/traceevent/plugin_scsi.c

I'm not sure why DESTDIR is included in the -DPLUGIN_DIR definition in
tools/lib/traceevent/Makefile, nor why $(prefix) is in plugindir_SQ in
tools/perf/config/Makefile.

josh

diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
index 56d52a3..005c9cc 100644
--- a/tools/lib/traceevent/Makefile
+++ b/tools/lib/traceevent/Makefile
@@ -63,7 +63,7 @@ endif
 endif

 ifeq ($(set_plugin_dir),1)
-PLUGIN_DIR = -DPLUGIN_DIR="$(DESTDIR)/$(plugin_dir)"
+PLUGIN_DIR = -DPLUGIN_DIR="$(plugin_dir)"
 PLUGIN_DIR_SQ = '$(subst ','\'',$(PLUGIN_DIR))'
 endif

diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index d604e50..c48d449 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -600,5 +600,5 @@ perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
 # Otherwise we install plugins into the global $(libdir).
 ifdef DESTDIR
 plugindir=$(libdir)/traceevent/plugins
-plugindir_SQ= $(subst ','\'',$(prefix)/$(plugindir))
+plugindir_SQ= $(subst ','\'',$(plugindir))
 endif

View attachment "plugin-dir-perf.patch" of type "text/x-patch" (855 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ