diff --git a/debian/changelog b/debian/changelog index 9c511e5fd..e575026aa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +linux (4.9.2-2) UNRELEASED; urgency=medium + + * [sparc64] Export memcpy and memset to modules again (fixes FTBFS) + + -- Ben Hutchings Thu, 12 Jan 2017 00:14:36 +0000 + linux (4.9.2-1) unstable; urgency=medium * New upstream stable update: diff --git a/debian/patches/bugfix/sparc/revert-sparc-move-exports-to-definitions.patch b/debian/patches/bugfix/sparc/revert-sparc-move-exports-to-definitions.patch index 355582c77..59f634c8d 100644 --- a/debian/patches/bugfix/sparc/revert-sparc-move-exports-to-definitions.patch +++ b/debian/patches/bugfix/sparc/revert-sparc-move-exports-to-definitions.patch @@ -1,5 +1,5 @@ From: Ben Hutchings -Date: Thu, 1 Dec 2016 23:10:49 +0000 +Date: Thu, 12 Jan 2017 00:08:36 +0000 Subject: Revert "sparc: move exports to definitions" Forwarded: not-needed @@ -8,8 +8,11 @@ symbols exported from assembly don't automatically get modversions (ABI hashes). Commit 70a6fcf3283a "[sparc] unify 32bit and 64bit string.h" removed -the exports of __memmove, memcpy, memset, and memscan; don't try to -export them again. +the export of __memmove; don't try to export it again. It also +completely disabled declaration of prototypes of memscan, memcpy and +memset, which are defined as macros. gcc will still generate implicit +calls to memcpy and memset, so restore both exports and prototypes for +them. Don't restore the export of memscan. Commit aa95ce361ed9 "sparc64: Delete __ret_efault." did what it says; don't try to export that symbol. @@ -793,7 +796,7 @@ don't try to export that symbol. -EXPORT_SYMBOL(ip_fast_csum) --- /dev/null +++ b/arch/sparc/lib/ksyms.c -@@ -0,0 +1,167 @@ +@@ -0,0 +1,173 @@ +/* + * Export of symbols defined in assembler + */ @@ -813,11 +816,17 @@ don't try to export that symbol. +/* mem* functions */ +extern void *__memscan_zero(void *, size_t); +extern void *__memscan_generic(void *, int, size_t); ++#undef memcpy ++extern void *memcpy(void *, const void *, size_t); ++#undef memset ++extern void *memset(void *, int, size_t); +extern void *__bzero(void *, size_t); + +EXPORT_SYMBOL(__memscan_zero); +EXPORT_SYMBOL(__memscan_generic); +EXPORT_SYMBOL(memcmp); ++EXPORT_SYMBOL(memcpy); ++EXPORT_SYMBOL(memset); +EXPORT_SYMBOL(memmove); +EXPORT_SYMBOL(__bzero); +