Re: [PATCHv3] Update debuginfo generation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux