Fix perf build with hardening

So.  Because of the joys of how perf builds up its LDFLAGS, builds started
failing in rawhide with the latest perl build.  See, perf thinks it is a
good idea to look at perl (and python too) and see what ld options were
used to build it, then just slam those into what it uses.  That's cute, and
probably kind of works, but with the hardening changes it totally broke
the build.  One of the final links failed with:

/usr/bin/ld: perf-in.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
perf-in.o: error adding symbols: Bad value

because it sucked in the hardened build LD options from perl, but didn't
we didn't pass in the required CFLAGS options.  Isn't that special?

Fix this by specifying both LDFLAGS (so it isn't magically getting applied
without thought) and EXTRA_CFLAGS for the perf build.

I hate everything.
This commit is contained in:
Josh Boyer 2015-07-10 15:37:08 -04:00
parent 00b03ffa70
commit 91185af140

View File

@ -1739,7 +1739,7 @@ BuildKernel %make_target %kernel_image
%endif
%global perf_make \
make -s %{?cross_opts} %{?_smp_mflags} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 prefix=%{_prefix}
make -s EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} %{?_smp_mflags} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 prefix=%{_prefix}
%if %{with_perf}
# perf
%{perf_make} DESTDIR=$RPM_BUILD_ROOT all