On 05/05/2017 07:40 AM, Don Zickus wrote: > On Thu, May 04, 2017 at 04:38:25PM -0700, Laura Abbott wrote: >> >> Once upon a time, the kernel needed a lot of special handling to >> generate proper debuginfo as the kernel was ahead in technology. These >> days, rpm has improved debuginfo support. The kernel has not kept up >> with this and it's forward looking calls are now out of date. Switch to >> more standard invocations of debuginfo calls. >> --- >> v3: Adds the new flag to never touch the buildids. I think I got the >> BuildConflicts tag correct? > > > Hi Laura, > > Thanks for the work! The patch seems reasonable to me. I will let Mark > comment on it too. Do you have a scratch build that I could look at? > > Cheers, > Don > Sorry for the slow response, here is one you can test https://koji.fedoraproject.org/koji/taskinfo?taskID=19489850 Thanks, Laura >> --- >> kbuild-AFTER_LINK.patch | 126 ------------------------------------------------ >> kernel.spec | 49 ++++++++----------- >> 2 files changed, 19 insertions(+), 156 deletions(-) >> delete mode 100644 kbuild-AFTER_LINK.patch >> >> diff --git a/kbuild-AFTER_LINK.patch b/kbuild-AFTER_LINK.patch >> deleted file mode 100644 >> index ab738c62..00000000 >> --- a/kbuild-AFTER_LINK.patch >> +++ /dev/null >> @@ -1,126 +0,0 @@ >> -From 649d991ca7737dd227f2a1ca4f30247daf6a7b4b Mon Sep 17 00:00:00 2001 >> -From: Roland McGrath <roland@xxxxxxxxxx> >> -Date: Mon, 6 Oct 2008 23:03:03 -0700 >> -Subject: [PATCH] kbuild: AFTER_LINK >> - >> -If the make variable AFTER_LINK is set, it is a command line to run >> -after each final link. This includes vmlinux itself and vDSO images. >> - >> -Bugzilla: N/A >> -Upstream-status: ?? >> - >> -Signed-off-by: Roland McGrath <roland@xxxxxxxxxx> >> ---- >> - arch/arm64/kernel/vdso/Makefile | 3 ++- >> - arch/powerpc/kernel/vdso32/Makefile | 3 ++- >> - arch/powerpc/kernel/vdso64/Makefile | 3 ++- >> - arch/s390/kernel/vdso32/Makefile | 3 ++- >> - arch/s390/kernel/vdso64/Makefile | 3 ++- >> - arch/x86/entry/vdso/Makefile | 5 +++-- >> - scripts/link-vmlinux.sh | 4 ++++ >> - 7 files changed, 17 insertions(+), 7 deletions(-) >> - >> -diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile >> -index 62c84f7..f44236a 100644 >> ---- a/arch/arm64/kernel/vdso/Makefile >> -+++ b/arch/arm64/kernel/vdso/Makefile >> -@@ -54,7 +54,8 @@ $(obj-vdso): %.o: %.S FORCE >> - >> - # Actual build commands >> - quiet_cmd_vdsold = VDSOL $@ >> -- cmd_vdsold = $(CC) $(c_flags) -Wl,-n -Wl,-T $^ -o $@ >> -+ cmd_vdsold = $(CC) $(c_flags) -Wl,-n -Wl,-T $^ -o $@ \ >> -+ $(if $(AFTER_LINK),;$(AFTER_LINK)) >> - quiet_cmd_vdsoas = VDSOA $@ >> - cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $< >> - >> -diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile >> -index 78a7449..c9592c0 100644 >> ---- a/arch/powerpc/kernel/vdso32/Makefile >> -+++ b/arch/powerpc/kernel/vdso32/Makefile >> -@@ -44,7 +44,8 @@ $(obj-vdso32): %.o: %.S FORCE >> - >> - # actual build commands >> - quiet_cmd_vdso32ld = VDSO32L $@ >> -- cmd_vdso32ld = $(CROSS32CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) >> -+ cmd_vdso32ld = $(CROSS32CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) \ >> -+ $(if $(AFTER_LINK),; $(AFTER_LINK)) >> - quiet_cmd_vdso32as = VDSO32A $@ >> - cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $< >> - >> -diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile >> -index 31107bf..96aded3 100644 >> ---- a/arch/powerpc/kernel/vdso64/Makefile >> -+++ b/arch/powerpc/kernel/vdso64/Makefile >> -@@ -33,7 +33,8 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE >> - >> - # actual build commands >> - quiet_cmd_vdso64ld = VDSO64L $@ >> -- cmd_vdso64ld = $(CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) >> -+ cmd_vdso64ld = $(CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) \ >> -+ $(if $(AFTER_LINK),; $(AFTER_LINK)) >> - >> - # install commands for the unstripped file >> - quiet_cmd_vdso_install = INSTALL $@ >> -diff --git a/arch/s390/kernel/vdso32/Makefile b/arch/s390/kernel/vdso32/Makefile >> -index 6cc9478..94fb536 100644 >> ---- a/arch/s390/kernel/vdso32/Makefile >> -+++ b/arch/s390/kernel/vdso32/Makefile >> -@@ -46,7 +46,8 @@ $(obj-vdso32): %.o: %.S >> - >> - # actual build commands >> - quiet_cmd_vdso32ld = VDSO32L $@ >> -- cmd_vdso32ld = $(CC) $(c_flags) -Wl,-T $^ -o $@ >> -+ cmd_vdso32ld = $(CC) $(c_flags) -Wl,-T $^ -o $@ \ >> -+ $(if $(AFTER_LINK),; $(AFTER_LINK)) >> - quiet_cmd_vdso32as = VDSO32A $@ >> - cmd_vdso32as = $(CC) $(a_flags) -c -o $@ $< >> - >> -diff --git a/arch/s390/kernel/vdso64/Makefile b/arch/s390/kernel/vdso64/Makefile >> -index 2d54c18..a0e3e9d 100644 >> ---- a/arch/s390/kernel/vdso64/Makefile >> -+++ b/arch/s390/kernel/vdso64/Makefile >> -@@ -46,7 +46,8 @@ $(obj-vdso64): %.o: %.S >> - >> - # actual build commands >> - quiet_cmd_vdso64ld = VDSO64L $@ >> -- cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $^ -o $@ >> -+ cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $^ -o $@ \ >> -+ $(if $(AFTER_LINK),; $(AFTER_LINK)) >> - quiet_cmd_vdso64as = VDSO64A $@ >> - cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $< >> - >> -diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile >> -index d540966..eeb47b6 100644 >> ---- a/arch/x86/entry/vdso/Makefile >> -+++ b/arch/x86/entry/vdso/Makefile >> -@@ -167,8 +167,9 @@ $(obj)/vdso32.so.dbg: FORCE \ >> - quiet_cmd_vdso = VDSO $@ >> - cmd_vdso = $(CC) -nostdlib -o $@ \ >> - $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ >> -- -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \ >> -- sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' >> -+ -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) \ >> -+ $(if $(AFTER_LINK),; $(AFTER_LINK)) && \ >> -+ sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' >> - >> - VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=both) \ >> - $(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic $(LTO_CFLAGS) >> -diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh >> -index f742c65..526eee4 100755 >> ---- a/scripts/link-vmlinux.sh >> -+++ b/scripts/link-vmlinux.sh >> -@@ -111,6 +111,10 @@ vmlinux_link() >> - -lutil -lrt -lpthread >> - rm -f linux >> - fi >> -+ if [ -n "${AFTER_LINK}" ]; then >> -+ /usr/lib/rpm/debugedit -b ${RPM_BUILD_DIR} -d /usr/src/debug -i ${2} \ >> -+ > ${2}.id >> -+ fi >> - } >> - >> - >> --- >> -2.7.4 >> - >> diff --git a/kernel.spec b/kernel.spec >> index 27c4fe13..06fcf3d4 100644 >> --- a/kernel.spec >> +++ b/kernel.spec >> @@ -395,7 +395,16 @@ BuildRequires: pciutils-devel gettext ncurses-devel >> BuildConflicts: rhbuildsys(DiskFree) < 500Mb >> %if %{with_debuginfo} >> BuildRequires: rpm-build, elfutils >> -%define debuginfo_args --strict-build-id -r >> +BuildConflicts: rpm < 4.13.0.1-19 >> +# Most of these should be enabled after more investigation >> +%undefine _include_minidebuginfo >> +%undefine _find_debuginfo_dwz_opts >> +%undefine _unique_build_ids >> +%undefine _unique_debug_names >> +%undefine _unique_debug_srcs >> +%global _find_debuginfo_opts -r >> +%global _missing_build_ids_terminate_build 1 >> +%global _no_recompute_build_ids 1 >> %endif >> >> %if %{signkernel}%{signmodules} >> @@ -492,9 +501,6 @@ Source5000: patch-4.%{base_sublevel}-git%{gitrev}.xz >> >> ## Patches needed for building this package >> >> -# build tweak for build ID magic, even for -vanilla >> -Patch001: kbuild-AFTER_LINK.patch >> - >> ## compile fixes >> >> # ongoing complaint, full discussion delayed until ksummit/plumbers >> @@ -706,7 +712,7 @@ This package provides debug information for the perf package. >> # symlinks because of the trailing nonmatching alternation and >> # the leading .*, because of find-debuginfo.sh's buggy handling >> # of matching the pattern against the symlinks file. >> -%{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{_bindir}/perf(\.debug)?|.*%%{_libexecdir}/perf-core/.*|.*%%{_libdir}/traceevent/plugins/.*|XXX' -o perf-debuginfo.list} >> +%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_bindir}/perf(\.debug)?|.*%%{_libexecdir}/perf-core/.*|.*%%{_libdir}/traceevent/plugins/.*|XXX' -o perf-debuginfo.list} >> >> %package -n python-perf >> Summary: Python bindings for apps which will manipulate perf events >> @@ -727,7 +733,7 @@ AutoReqProv: no >> This package provides debug information for the perf python bindings. >> >> # the python_sitearch macro should already be defined from above >> -%{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{python_sitearch}/perf.so(\.debug)?|XXX' -o python-perf-debuginfo.list} >> +%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{python_sitearch}/perf.so(\.debug)?|XXX' -o python-perf-debuginfo.list} >> >> >> %endif # with_perf >> @@ -782,7 +788,7 @@ This package provides debug information for package kernel-tools. >> # symlinks because of the trailing nonmatching alternation and >> # the leading .*, because of find-debuginfo.sh's buggy handling >> # of matching the pattern against the symlinks file. >> -%{expand:%%global debuginfo_args %{?debuginfo_args} -p '.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|.*%%{_bindir}/tmon(\.debug)?|.*%%{_bindir}/lsgpio(\.debug)?|.*%%{_bindir}/gpio-hammer(\.debug)?|.*%%{_bindir}/gpio-event-mon(\.debug)?|.*%%{_bindir}/iio_event_monitor(\.debug)?|.*%%{_bindir}/iio_generic_buffer(\.debug)?|.*%%{_bindir}/lsiio(\.debug)?|XXX' -o kernel-tools-debuginfo.list} >> +%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|.*%%{_bindir}/tmon(\.debug)?|.*%%{_bindir}/lsgpio(\.debug)?|.*%%{_bindir}/gpio-hammer(\.debug)?|.*%%{_bindir}/gpio-event-mon(\.debug)?|.*%%{_bindir}/iio_event_monitor(\.debug)?|.*%%{_bindir}/iio_generic_buffer(\.debug)?|.*%%{_bindir}/lsiio(\.debug)?|XXX' -o kernel-tools-debuginfo.list} >> >> %endif # with_tools >> >> @@ -802,7 +808,7 @@ AutoReqProv: no\ >> %description %{?1:%{1}-}debuginfo\ >> This package provides debug information for package %{name}%{?1:-%{1}}.\ >> This is required to use SystemTap with %{name}%{?1:-%{1}}-%{KVERREL}.\ >> -%{expand:%%global debuginfo_args %{?debuginfo_args} -p '/.*/%%{KVERREL}%{?1:[+]%{1}}/.*|/.*%%{KVERREL}%{?1:\+%{1}}(\.debug)?' -o debuginfo%{?1}.list}\ >> +%{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '/.*/%%{KVERREL}%{?1:[+]%{1}}/.*|/.*%%{KVERREL}%{?1:\+%{1}}(\.debug)?' -o debuginfo%{?1}.list}\ >> %{nil} >> >> # >> @@ -1283,18 +1289,6 @@ cd .. >> %define sparse_mflags C=1 >> %endif >> >> -%if %{with_debuginfo} >> -# This override tweaks the kernel makefiles so that we run debugedit on an >> -# object before embedding it. When we later run find-debuginfo.sh, it will >> -# run debugedit again. The edits it does change the build ID bits embedded >> -# in the stripped object, but repeating debugedit is a no-op. We do it >> -# beforehand to get the proper final build ID bits into the embedded image. >> -# This affects the vDSO images in vmlinux, and the vmlinux image in bzImage. >> -export AFTER_LINK=\ >> -'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug \ >> - -i $@ > $@.id"' >> -%endif >> - >> cp_vmlinux() >> { >> eu-strip --remove-comment -o "$2" "$1" >> @@ -1506,12 +1500,8 @@ BuildKernel() { >> cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf >> >> %if %{with_debuginfo} >> - if test -s vmlinux.id; then >> - cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id >> - else >> - echo >&2 "*** ERROR *** no vmlinux build ID! ***" >> - exit 1 >> - fi >> + eu-readelf -n vmlinux | grep "Build ID" | awk '{print $NF}' > vmlinux.id >> + cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id >> >> # >> # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm >> @@ -1748,10 +1738,6 @@ popd >> >> %if %{with_debuginfo} >> >> -%define __debug_install_post \ >> - /usr/lib/rpm/find-debuginfo.sh %{debuginfo_args} %{_builddir}/%{?buildsubdir}\ >> -%{nil} >> - >> %ifnarch noarch >> %global __debug_package 1 >> %files -f debugfiles.list debuginfo-common-%{_target_cpu} >> @@ -2178,6 +2164,9 @@ fi >> # >> # >> %changelog >> +* Mon May 01 2017 Laura Abbott <labbott@xxxxxxxxxxxxxxxxx> >> +- Update debuginfo generation >> + >> * Thu May 04 2017 Justin M. Forbes <jforbes@xxxxxxxxxxxxxxxxx> - 4.12.0-0.rc0.git3.1 >> - Linux v4.11-7650-ga1be8ed >> >> -- >> 2.12.2 >> _______________________________________________ >> kernel mailing list -- kernel@xxxxxxxxxxxxxxxxxxxxxxx >> To unsubscribe send an email to kernel-leave@xxxxxxxxxxxxxxxxxxxxxxx _______________________________________________ kernel mailing list -- kernel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to kernel-leave@xxxxxxxxxxxxxxxxxxxxxxx