diff --git a/debian/changelog b/debian/changelog index 15993428e..caa445e84 100644 --- a/debian/changelog +++ b/debian/changelog @@ -50,6 +50,30 @@ linux (4.18~rc3-1~exp1) experimental; urgency=medium -- Ben Hutchings Tue, 03 Jul 2018 17:26:05 +0100 +linux (4.17.6-2) unstable; urgency=medium + + [ Ben Hutchings ] + * [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) + * debian/control: Fix arch/profile qualifications for libelf-dev + build-dependency + * debian/rules.real: Pass KERNEL_ARCH variable down to debian/rules.d + * debian/rules.d/tools/perf/Makefile: Use KERNEL_ARCH variable + * linux-kbuild: Fix the assumed host architecture for cross-built objtool + * [ppc64] linux-bootwrapper: Work around compiler include path quirk + (fixes FTBFS) + * Fix file conflicts between debug packages where a vDSO is identical + (Closes: #872263): + - kbuild: Add build salt to the kernel and modules + - [arm64,powerpc,x86] Add build salt to the vDSO + - Set BUILD_SALT equal to the release string + * init: Avoid ABI change for build salt + + [ Vagrant Cascadian ] + * [riscv64] Build linux-libc-dev (Closes: #886440). + Thanks to Manuel A. Fernandez Montecelo. + + -- Ben Hutchings Sun, 15 Jul 2018 23:45:56 +0100 + linux (4.17.6-1) unstable; urgency=medium * New upstream stable update: diff --git a/debian/config/defines b/debian/config/defines index e5434955a..823ca99dc 100644 --- a/debian/config/defines +++ b/debian/config/defines @@ -22,6 +22,7 @@ ignore-changes: module:arch/x86/kvm/* module:drivers/crypto/ccp/* module:drivers/hv/* + module:drivers/gpu/drm/sun4i/* module:drivers/iio/** module:drivers/misc/cxl/* module:drivers/mtd/nand/* @@ -96,6 +97,7 @@ arches: powerpcspe ppc64 ppc64el + riscv64 s390 s390x sh3 diff --git a/debian/config/riscv64/defines b/debian/config/riscv64/defines new file mode 100644 index 000000000..7d49f44d8 --- /dev/null +++ b/debian/config/riscv64/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: riscv +featuresets: +# empty; just building headers yet diff --git a/debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch b/debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch new file mode 100644 index 000000000..6e1ca5c91 --- /dev/null +++ b/debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch @@ -0,0 +1,105 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:37 -0700 +Subject: kbuild: Add build salt to the kernel and modules +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=8bc0ab58aca8a96fed7e9a38e21025d1737f4a4f +Bug-Debian: https://bugs.debian.org/872263 + +In Fedora, the debug information is packaged separately (foo-debuginfo) and +can be installed separately. There's been a long standing issue where only +one version of a debuginfo info package can be installed at a time. There's +been an effort for Fedora for parallel debuginfo to rectify this problem. + +Part of the requirement to allow parallel debuginfo to work is that build ids +are unique between builds. The existing upstream rpm implementation ensures +this by re-calculating the build-id using the version and release as a +seed. This doesn't work 100% for the kernel because of the vDSO which is +its own binary and doesn't get updated when embedded. + +Fix this by adding some data in an ELF note for both the kernel and modules. +The data is controlled via a Kconfig option so distributions can set it +to an appropriate value to ensure uniqueness between builds. + +Suggested-by: Masahiro Yamada +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + include/linux/build-salt.h | 20 ++++++++++++++++++++ + init/Kconfig | 9 +++++++++ + init/version.c | 3 +++ + scripts/mod/modpost.c | 3 +++ + 4 files changed, 35 insertions(+) + create mode 100644 include/linux/build-salt.h + +--- /dev/null ++++ b/include/linux/build-salt.h +@@ -0,0 +1,20 @@ ++#ifndef __BUILD_SALT_H ++#define __BUILD_SALT_H ++ ++#include ++ ++#define LINUX_ELFNOTE_BUILD_SALT 0x100 ++ ++#ifdef __ASSEMBLER__ ++ ++#define BUILD_SALT \ ++ ELFNOTE(Linux, LINUX_ELFNOTE_BUILD_SALT, .asciz CONFIG_BUILD_SALT) ++ ++#else ++ ++#define BUILD_SALT \ ++ ELFNOTE32("Linux", LINUX_ELFNOTE_BUILD_SALT, CONFIG_BUILD_SALT) ++ ++#endif ++ ++#endif /* __BUILD_SALT_H */ +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -109,6 +109,15 @@ config LOCALVERSION_AUTO + + which is done within the script "scripts/setlocalversion".) + ++config BUILD_SALT ++ string "Build ID Salt" ++ default "" ++ help ++ The build ID is used to link binaries and their debug info. Setting ++ this option will use the value in the calculation of the build id. ++ This is mostly useful for distributions which want to ensure the ++ build is unique between builds. It's safe to leave the default. ++ + config HAVE_KERNEL_GZIP + bool + +--- a/init/version.c ++++ b/init/version.c +@@ -7,6 +7,7 @@ + */ + + #include ++#include + #include + #include + #include +@@ -49,3 +50,5 @@ const char linux_proc_banner[] = + "%s version %s" + " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" + " (" LINUX_COMPILER ") %s\n"; ++ ++BUILD_SALT; +--- a/scripts/mod/modpost.c ++++ b/scripts/mod/modpost.c +@@ -2137,10 +2137,13 @@ static int check_modname_len(struct modu + **/ + static void add_header(struct buffer *b, struct module *mod) + { ++ buf_printf(b, "#include \n"); + buf_printf(b, "#include \n"); + buf_printf(b, "#include \n"); + buf_printf(b, "#include \n"); + buf_printf(b, "\n"); ++ buf_printf(b, "BUILD_SALT;\n"); ++ buf_printf(b, "\n"); + buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n"); + buf_printf(b, "MODULE_INFO(name, KBUILD_MODNAME);\n"); + buf_printf(b, "\n"); diff --git a/debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch b/debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch new file mode 100644 index 000000000..99e745fd1 --- /dev/null +++ b/debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch @@ -0,0 +1,29 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:40 -0700 +Subject: arm64: Add build salt to the vDSO +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=13351cdf75405e38c1b7bb927624d910d328be2b +Bug-Debian: https://bugs.debian.org/872263 + +The vDSO needs to have a unique build id in a similar manner +to the kernel and modules. Use the build salt macro. + +Acked-by: Will Deacon +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + arch/arm64/kernel/vdso/note.S | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/arm64/kernel/vdso/note.S ++++ b/arch/arm64/kernel/vdso/note.S +@@ -22,7 +22,10 @@ + #include + #include + #include ++#include + + ELFNOTE_START(Linux, 0, "a") + .long LINUX_VERSION_CODE + ELFNOTE_END ++ ++BUILD_SALT diff --git a/debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch b/debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch new file mode 100644 index 000000000..1d7c5cd1c --- /dev/null +++ b/debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch @@ -0,0 +1,31 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:39 -0700 +Subject: powerpc: Add build salt to the vDSO +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=29f07b97416a95d28ee62e70fd91b44956d3c8ce +Bug-Debian: https://bugs.debian.org/872263 + +The vDSO needs to have a unique build id in a similar manner +to the kernel and modules. Use the build salt macro. + +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + arch/powerpc/kernel/vdso32/note.S | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/powerpc/kernel/vdso32/note.S ++++ b/arch/powerpc/kernel/vdso32/note.S +@@ -5,6 +5,7 @@ + + #include + #include ++#include + + #define ASM_ELF_NOTE_BEGIN(name, flags, vendor, type) \ + .section name, flags; \ +@@ -23,3 +24,5 @@ + ASM_ELF_NOTE_BEGIN(".note.kernel-version", "a", UTS_SYSNAME, 0) + .long LINUX_VERSION_CODE + ASM_ELF_NOTE_END ++ ++BUILD_SALT diff --git a/debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch b/debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch new file mode 100644 index 000000000..2284e5e74 --- /dev/null +++ b/debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch @@ -0,0 +1,52 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:38 -0700 +Subject: x86: Add build salt to the vDSO +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=fdc3ae38182c7f983f4f8b97c86b753a3c16e269 +Bug-Debian: https://bugs.debian.org/872263 + +The vDSO needs to have a unique build id in a similar manner +to the kernel and modules. Use the build salt macro. + +Acked-by: Andy Lutomirski +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + arch/x86/entry/vdso/vdso-note.S | 3 +++ + arch/x86/entry/vdso/vdso32/note.S | 3 +++ + 2 files changed, 6 insertions(+) + +--- a/arch/x86/entry/vdso/vdso-note.S ++++ b/arch/x86/entry/vdso/vdso-note.S +@@ -3,6 +3,7 @@ + * Here we can supply some information useful to userland. + */ + ++#include + #include + #include + #include +@@ -10,3 +11,5 @@ + ELFNOTE_START(Linux, 0, "a") + .long LINUX_VERSION_CODE + ELFNOTE_END ++ ++BUILD_SALT +--- a/arch/x86/entry/vdso/vdso32/note.S ++++ b/arch/x86/entry/vdso/vdso32/note.S +@@ -4,6 +4,7 @@ + * Here we can supply some information useful to userland. + */ + ++#include + #include + #include + +@@ -14,6 +15,8 @@ ELFNOTE_START(Linux, 0, "a") + .long LINUX_VERSION_CODE + ELFNOTE_END + ++BUILD_SALT ++ + #ifdef CONFIG_XEN + /* + * Add a special note telling glibc's dynamic linker a fake hardware diff --git a/debian/patches/series b/debian/patches/series index 6524826bd..102e81e45 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -93,6 +93,10 @@ bugfix/all/i40e-build-for-64-bit-targets-only.patch bugfix/all/netfilter-ipvs-Fix-invalid-bytes-in-IP_VS_MH_TAB_IND.patch # Miscellaneous features +features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch +features/x86/x86-add-build-salt-to-the-vdso.patch +features/powerpc/powerpc-add-build-salt-to-the-vdso.patch +features/arm64/arm64-add-build-salt-to-the-vdso.patch # Lockdown (formerly 'securelevel') patchset features/all/lockdown/0001-Add-the-ability-to-lock-down-access-to-the-running-k.patch diff --git a/debian/rules.d/arch/powerpc/boot/Makefile b/debian/rules.d/arch/powerpc/boot/Makefile index ab8e9d74f..9dc418f26 100644 --- a/debian/rules.d/arch/powerpc/boot/Makefile +++ b/debian/rules.d/arch/powerpc/boot/Makefile @@ -9,3 +9,10 @@ SCRIPTS = \ include $(top_rulesdir)/Makefile.inc CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 + +# gcc for ppc64 currently seems to be treating -I like -isystem, and +# since arch/powerpc/boot has substitute versions of some standard +# headers for use at boot time, they are also included in these tools. +# In this case there is actually no need to use the -I option, so +# filter it out. +CPPFLAGS := $(filter-out -I%,$(CPPFLAGS)) diff --git a/debian/rules.d/tools/objtool/Makefile b/debian/rules.d/tools/objtool/Makefile index cc2ea9e22..6b42618d3 100644 --- a/debian/rules.d/tools/objtool/Makefile +++ b/debian/rules.d/tools/objtool/Makefile @@ -5,7 +5,7 @@ all: # for multiple targets and add a wrapper, same as for modpost. # objtool explicitly sets CC and LD to be native tools; we need to override # this on the command line to make cross-builds work. - $(MAKE) -C $(top_srcdir)/tools/objtool O=$(CURDIR) ARCH=x86 CC=$(CC) LD=$(CROSS_COMPILE)ld + $(MAKE) -C $(top_srcdir)/tools/objtool O=$(CURDIR) HOSTARCH=$(KERNEL_ARCH) ARCH=x86 CC=$(CC) LD=$(CROSS_COMPILE)ld install: install -D -m755 objtool $(DESTDIR)/$(installdir)/objtool diff --git a/debian/rules.d/tools/perf/Makefile b/debian/rules.d/tools/perf/Makefile index 3ac8945fc..e12b7759c 100644 --- a/debian/rules.d/tools/perf/Makefile +++ b/debian/rules.d/tools/perf/Makefile @@ -2,37 +2,21 @@ include $(top_rulesdir)/Makefile.inc ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) -DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) - -ifeq ($(DEB_HOST_ARCH_CPU),alpha) - KERNEL_ARCH_PERF = alpha -else ifeq ($(DEB_HOST_ARCH_CPU),arm) - KERNEL_ARCH_PERF = arm -else ifeq ($(DEB_HOST_ARCH_CPU),arm64) - KERNEL_ARCH_PERF = arm64 -else ifneq ($(filter mips%,$(DEB_HOST_ARCH_CPU)),) - KERNEL_ARCH_PERF = mips -else ifeq ($(DEB_HOST_ARCH_CPU),hppa) - KERNEL_ARCH_PERF = parisc -else ifneq ($(filter powerpc% ppc%,$(DEB_HOST_ARCH_CPU)),) - # But pure 32-bit toolchains currently don't work +ifneq ($(filter alpha arm arm64 mips parisc s390 sh sparc,$(KERNEL_ARCH)),) +HAVE_PERF := 1 +else ifeq ($(KERNEL_ARCH),powerpc) + # Pure 32-bit toolchains currently don't work ifneq ($(shell dpkg-architecture -qDEB_HOST_ARCH),powerpcspe) - KERNEL_ARCH_PERF = powerpc + HAVE_PERF := 1 endif -else ifneq ($(filter s390%,$(DEB_HOST_ARCH_CPU)),) - KERNEL_ARCH_PERF = s390 -else ifeq ($(DEB_HOST_ARCH_CPU),sh4) - KERNEL_ARCH_PERF = sh -else ifneq ($(filter sparc%,$(DEB_HOST_ARCH_CPU)),) - KERNEL_ARCH_PERF = sparc -else ifneq ($(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),) - # But x32 isn't supported yet +else ifeq ($(KERNEL_ARCH),x86) + # x32 isn't supported yet ifneq ($(shell dpkg-architecture -qDEB_HOST_ARCH),x32) - KERNEL_ARCH_PERF = x86 + HAVE_PERF := 1 endif endif -MAKE_PERF := $(MAKE) O=$(CURDIR) prefix=/usr V=1 ARCH=$(KERNEL_ARCH_PERF) EXTRA_WARNINGS=-Wno-error EXTRA_CFLAGS='$(CFLAGS) $(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' +MAKE_PERF := $(MAKE) O=$(CURDIR) prefix=/usr V=1 ARCH=$(KERNEL_ARCH) EXTRA_WARNINGS=-Wno-error EXTRA_CFLAGS='$(CFLAGS) $(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' # Disable Gtk UI until it's more usable MAKE_PERF += NO_GTK2=1 @@ -61,7 +45,7 @@ MAKE_PERF += USE_ASCIIDOCTOR=1 MAKE_PERF += PYTHON=/usr/bin/python3 all: -ifdef KERNEL_ARCH_PERF +ifdef HAVE_PERF # perf changes some default directories depending on whether DESTDIR is # set. We must define it even when building to avoid a rebuild when we # run 'make install'. @@ -77,7 +61,7 @@ endif endif install: -ifdef KERNEL_ARCH_PERF +ifdef HAVE_PERF +$(MAKE_PERF) -C $(top_srcdir)/tools/perf -f Makefile.perf install VERSION=$(VERSION) # Don't install a 'trace' alias yet: # - We need a wrapper for it anyway, so there's little point adding a diff --git a/debian/rules.real b/debian/rules.real index 8852ba399..a3be60ab2 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -175,6 +175,8 @@ $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/source_$(FEA rm -rf '$(DIR)' mkdir '$(DIR)' cp '$(CONFIG)' '$(DIR)/.config' +# Add "salt" to fix #872263 + echo 'CONFIG_BUILD_SALT="$(ABINAME)$(LOCALVERSION_IMAGE)"' >> '$(DIR)/.config' echo 'override ARCH = $(KERNEL_ARCH)' >> '$(DIR)/.kernelvariables' echo 'override KERNELRELEASE = $(ABINAME)$(LOCALVERSION_IMAGE)' >> '$(DIR)/.kernelvariables' echo 'CCACHE = ccache' >> '$(DIR)/.kernelvariables' @@ -587,14 +589,15 @@ install-config_$(ARCH): dh_testdir dh_testroot dh_installdirs /usr/src/linux-config-$(UPSTREAMVERSION) -# Fix the module signing configuration to work for custom kernels +# Fix the module signing configuration to work for custom kernels. Also delete +# CONFIG_BUILD_SALT which makes no sense for custom kernels. for triplet in $(TRIPLETS); do \ - sed '/CONFIG_\(MODULE_SIG_\(ALL\|KEY\)\|SYSTEM_TRUSTED_KEYS\)[ =]/d' $(BUILD_DIR)/build_$$triplet/.config | xz -c >debian/$(PACKAGE_NAME)/usr/src/linux-config-$(UPSTREAMVERSION)/config.$$triplet.xz; \ + sed '/CONFIG_\(MODULE_SIG_\(ALL\|KEY\)\|SYSTEM_TRUSTED_KEYS\|BUILD_SALT\)[ =]/d' $(BUILD_DIR)/build_$$triplet/.config | xz -c >debian/$(PACKAGE_NAME)/usr/src/linux-config-$(UPSTREAMVERSION)/config.$$triplet.xz; \ done +$(MAKE_SELF) install-base define make-tools -+mkdir -p $(BUILD_DIR)/build-tools/$(1) && $(MAKE_CLEAN) -C $(BUILD_DIR)/build-tools/$(1) -f $(CURDIR)/debian/rules.d/$(1)/Makefile top_srcdir=$(CURDIR) top_rulesdir=$(CURDIR)/debian/rules.d OUTDIR=$(1) VERSION=$(VERSION) ++mkdir -p $(BUILD_DIR)/build-tools/$(1) && $(MAKE_CLEAN) -C $(BUILD_DIR)/build-tools/$(1) -f $(CURDIR)/debian/rules.d/$(1)/Makefile top_srcdir=$(CURDIR) top_rulesdir=$(CURDIR)/debian/rules.d OUTDIR=$(1) VERSION=$(VERSION) KERNEL_ARCH=$(KERNEL_ARCH) endef $(STAMPS_DIR)/build-tools: diff --git a/debian/templates/control.source.in b/debian/templates/control.source.in index 4a06c465f..368860bb9 100644 --- a/debian/templates/control.source.in +++ b/debian/templates/control.source.in @@ -27,6 +27,9 @@ Build-Depends-Arch: # used by upstream to build signing tools and to process certificates libssl-dev:native , libssl-dev , openssl (>= 1.1.0-1~) , +# used by upstream to build objtool (native for amd64 images; host arch for +# linux-kbuild) and perf (host arch) + libelf-dev:native [amd64] , libelf-dev , # used by upstream to build perf documentation asciidoctor , # used by upstream to build perf @@ -36,8 +39,6 @@ Build-Depends-Arch: # - libbabeltrace-ctf-dev may or may not be needed as well libbabeltrace-dev (>= 1.5.3-2~) | libbabeltrace-ctf-dev (>= 1.5.0) , libdw-dev , -# needed for objtool with CONFIG_STACK_VALIDATION=y and CONFIG_UNWINDER_ORC=y - libelf-dev , libiberty-dev , libnewt-dev , libnuma-dev [amd64 arm64 hppa i386 mips mips64 mips64el mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc powerpcspe ppc64 ppc64el sparc x32] ,