From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Date: Wed, 4 Oct 2017 14:19:51 -0700 Message-Id: <20171004212003.28296-16-thgarnie@google.com> In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Subject: [kernel-hardening] [RFC v3 15/27] compiler: Option to default to hidden symbols To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Boris Ostrovsky , Alexey Dobriyan , Andrew Morton , Paul Gortmaker , Chris Metcalf , "Paul E . McKenney" , Nicolas Pitre , Borislav Petkov , "Luis R . Rodriguez" , Greg Kroah-Hartman , Christopher Li , Steven Rostedt , Jason Baron , Dou Liyang , "Rafael J . Wysocki" , Mika Westerberg , Lukas Wunner , Masahiro Yamada , Alexei Starovoitov , Daniel Borkmann , Markus Trippelsdorf , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Rik van Riel , David Howells , Ard Biesheuvel , Waiman Long , Kyle Huey , Andrey Ryabinin , Jonathan Corbet , Matthew Wilcox , Michal Hocko , Peter Foley , Paul Bolle , Jiri Kosina , Rob Landley , "H . J . Lu" , Baoquan He , =?UTF-8?q?Jan=20H=20=2E=20Sch=C3=B6nherr?= , Daniel Micay Cc: x86@kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com List-ID: Provide an option to default visibility to hidden except for key symbols. This option is disabled by default and will be used by x86_64 PIE support to remove errors between compilation units. The default visibility is also enabled for external symbols that are compared as they maybe equals (start/end of sections). In this case, older versions of GCC will remove the comparison if the symbols are hidden. This issue exists at least on gcc 4.9 and before. Signed-off-by: Thomas Garnier --- arch/x86/boot/boot.h | 2 +- arch/x86/include/asm/setup.h | 2 +- arch/x86/kernel/cpu/microcode/core.c | 4 ++-- drivers/base/firmware_class.c | 4 ++-- include/asm-generic/sections.h | 6 ++++++ include/linux/compiler.h | 8 ++++++++ init/Kconfig | 7 +++++++ kernel/kallsyms.c | 16 ++++++++-------- kernel/trace/trace.h | 4 ++-- lib/dynamic_debug.c | 4 ++-- 10 files changed, 39 insertions(+), 18 deletions(-) diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h index ef5a9cc66fb8..d726c35bdd96 100644 --- a/arch/x86/boot/boot.h +++ b/arch/x86/boot/boot.h @@ -193,7 +193,7 @@ static inline bool memcmp_gs(const void *s1, addr_t s2, size_t len) } /* Heap -- available for dynamic lists. */ -extern char _end[]; +extern char _end[] __default_visibility; extern char *HEAP; extern char *heap_end; #define RESET_HEAP() ((void *)( HEAP = _end )) diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h index a65cf544686a..7e0b54f605c6 100644 --- a/arch/x86/include/asm/setup.h +++ b/arch/x86/include/asm/setup.h @@ -67,7 +67,7 @@ static inline void x86_ce4100_early_setup(void) { } * This is set up by the setup-routine at boot-time */ extern struct boot_params boot_params; -extern char _text[]; +extern char _text[] __default_visibility; static inline bool kaslr_enabled(void) { diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index 86e8f0b2537b..8f021783a929 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -144,8 +144,8 @@ static bool __init check_loader_disabled_bsp(void) return *res; } -extern struct builtin_fw __start_builtin_fw[]; -extern struct builtin_fw __end_builtin_fw[]; +extern struct builtin_fw __start_builtin_fw[] __default_visibility; +extern struct builtin_fw __end_builtin_fw[] __default_visibility; bool get_builtin_firmware(struct cpio_data *cd, const char *name) { diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 4b57cf5bc81d..77d4727f6594 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -45,8 +45,8 @@ MODULE_LICENSE("GPL"); #ifdef CONFIG_FW_LOADER -extern struct builtin_fw __start_builtin_fw[]; -extern struct builtin_fw __end_builtin_fw[]; +extern struct builtin_fw __start_builtin_fw[] __default_visibility; +extern struct builtin_fw __end_builtin_fw[] __default_visibility; static bool fw_get_builtin_firmware(struct firmware *fw, const char *name, void *buf, size_t size) diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index e5da44eddd2f..1aa5d6dac9e1 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -30,6 +30,9 @@ * __irqentry_text_start, __irqentry_text_end * __softirqentry_text_start, __softirqentry_text_end */ +#ifdef CONFIG_DEFAULT_HIDDEN +#pragma GCC visibility push(default) +#endif extern char _text[], _stext[], _etext[]; extern char _data[], _sdata[], _edata[]; extern char __bss_start[], __bss_stop[]; @@ -46,6 +49,9 @@ extern char __softirqentry_text_start[], __softirqentry_text_end[]; /* Start and end of .ctors section - used for constructor calls. */ extern char __ctors_start[], __ctors_end[]; +#ifdef CONFIG_DEFAULT_HIDDEN +#pragma GCC visibility pop +#endif extern __visible const void __nosave_begin, __nosave_end; diff --git a/include/linux/compiler.h b/include/linux/compiler.h index e95a2631e545..6997716f73bf 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -78,6 +78,14 @@ extern void __chk_io_ptr(const volatile void __iomem *); #include #endif +/* Useful for Position Independent Code to reduce global references */ +#ifdef CONFIG_DEFAULT_HIDDEN +#pragma GCC visibility push(hidden) +#define __default_visibility __attribute__((visibility ("default"))) +#else +#define __default_visibility +#endif + /* * Generic compiler-dependent macros required for kernel * build go below this comment. Actual compiler/compiler version diff --git a/init/Kconfig b/init/Kconfig index ccb1d8daf241..b640201fcff7 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1649,6 +1649,13 @@ config PROFILING config TRACEPOINTS bool +# +# Default to hidden visibility for all symbols. +# Useful for Position Independent Code to reduce global references. +# +config DEFAULT_HIDDEN + bool + source "arch/Kconfig" endmenu # General setup diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 127e7cfafa55..252019c8c3a9 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -32,24 +32,24 @@ * These will be re-linked against their real values * during the second link stage. */ -extern const unsigned long kallsyms_addresses[] __weak; -extern const int kallsyms_offsets[] __weak; -extern const u8 kallsyms_names[] __weak; +extern const unsigned long kallsyms_addresses[] __weak __default_visibility; +extern const int kallsyms_offsets[] __weak __default_visibility; +extern const u8 kallsyms_names[] __weak __default_visibility; /* * Tell the compiler that the count isn't in the small data section if the arch * has one (eg: FRV). */ extern const unsigned long kallsyms_num_syms -__attribute__((weak, section(".rodata"))); +__attribute__((weak, section(".rodata"))) __default_visibility; extern const unsigned long kallsyms_relative_base -__attribute__((weak, section(".rodata"))); +__attribute__((weak, section(".rodata"))) __default_visibility; -extern const u8 kallsyms_token_table[] __weak; -extern const u16 kallsyms_token_index[] __weak; +extern const u8 kallsyms_token_table[] __weak __default_visibility; +extern const u16 kallsyms_token_index[] __weak __default_visibility; -extern const unsigned long kallsyms_markers[] __weak; +extern const unsigned long kallsyms_markers[] __weak __default_visibility; static inline int is_kernel_inittext(unsigned long addr) { diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 652c682707cd..31cb920039a2 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1742,8 +1742,8 @@ extern int trace_event_enable_disable(struct trace_event_file *file, int enable, int soft_disable); extern int tracing_alloc_snapshot(void); -extern const char *__start___trace_bprintk_fmt[]; -extern const char *__stop___trace_bprintk_fmt[]; +extern const char *__start___trace_bprintk_fmt[] __default_visibility; +extern const char *__stop___trace_bprintk_fmt[] __default_visibility; extern const char *__start___tracepoint_str[]; extern const char *__stop___tracepoint_str[]; diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index da796e2dc4f5..10ed20177354 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -37,8 +37,8 @@ #include #include -extern struct _ddebug __start___verbose[]; -extern struct _ddebug __stop___verbose[]; +extern struct _ddebug __start___verbose[] __default_visibility; +extern struct _ddebug __stop___verbose[] __default_visibility; struct ddebug_table { struct list_head link; -- 2.14.2.920.gcf0c67979c-goog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 15/27] compiler: Option to default to hidden symbols Date: Wed, 4 Oct 2017 14:19:51 -0700 Message-ID: <20171004212003.28296-16-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter Bor Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org List-Id: linux-arch.vger.kernel.org UHJvdmlkZSBhbiBvcHRpb24gdG8gZGVmYXVsdCB2aXNpYmlsaXR5IHRvIGhpZGRlbiBleGNlcHQg Zm9yIGtleQpzeW1ib2xzLiBUaGlzIG9wdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCB3 aWxsIGJlIHVzZWQgYnkgeDg2XzY0ClBJRSBzdXBwb3J0IHRvIHJlbW92ZSBlcnJvcnMgYmV0d2Vl biBjb21waWxhdGlvbiB1bml0cy4KClRoZSBkZWZhdWx0IHZpc2liaWxpdHkgaXMgYWxzbyBlbmFi bGVkIGZvciBleHRlcm5hbCBzeW1ib2xzIHRoYXQgYXJlCmNvbXBhcmVkIGFzIHRoZXkgbWF5YmUg ZXF1YWxzIChzdGFydC9lbmQgb2Ygc2VjdGlvbnMpLiBJbiB0aGlzIGNhc2UsCm9sZGVyIHZlcnNp b25zIG9mIEdDQyB3aWxsIHJlbW92ZSB0aGUgY29tcGFyaXNvbiBpZiB0aGUgc3ltYm9scyBhcmUK aGlkZGVuLiBUaGlzIGlzc3VlIGV4aXN0cyBhdCBsZWFzdCBvbiBnY2MgNC45IGFuZCBiZWZvcmUu CgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2FybmllciA8dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLS0t CiBhcmNoL3g4Ni9ib290L2Jvb3QuaCAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYv aW5jbHVkZS9hc20vc2V0dXAuaCAgICAgICAgIHwgIDIgKy0KIGFyY2gveDg2L2tlcm5lbC9jcHUv bWljcm9jb2RlL2NvcmUuYyB8ICA0ICsrLS0KIGRyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5j ICAgICAgICB8ICA0ICsrLS0KIGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaCAgICAgICB8 ICA2ICsrKysrKwogaW5jbHVkZS9saW51eC9jb21waWxlci5oICAgICAgICAgICAgIHwgIDggKysr KysrKysKIGluaXQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKysK IGtlcm5lbC9rYWxsc3ltcy5jICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0t LS0KIGtlcm5lbC90cmFjZS90cmFjZS5oICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIGxpYi9k eW5hbWljX2RlYnVnLmMgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIDEwIGZpbGVzIGNoYW5n ZWQsIDM5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2Jvb3QvYm9vdC5oIGIvYXJjaC94ODYvYm9vdC9ib290LmgKaW5kZXggZWY1YTljYzY2ZmI4 Li5kNzI2YzM1YmRkOTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvYm9vdC5oCisrKyBiL2Fy Y2gveDg2L2Jvb3QvYm9vdC5oCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIGlubGluZSBib29s IG1lbWNtcF9ncyhjb25zdCB2b2lkICpzMSwgYWRkcl90IHMyLCBzaXplX3QgbGVuKQogfQogCiAv KiBIZWFwIC0tIGF2YWlsYWJsZSBmb3IgZHluYW1pYyBsaXN0cy4gKi8KLWV4dGVybiBjaGFyIF9l bmRbXTsKK2V4dGVybiBjaGFyIF9lbmRbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKIGV4dGVybiBj aGFyICpIRUFQOwogZXh0ZXJuIGNoYXIgKmhlYXBfZW5kOwogI2RlZmluZSBSRVNFVF9IRUFQKCkg KCh2b2lkICopKCBIRUFQID0gX2VuZCApKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9h c20vc2V0dXAuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NldHVwLmgKaW5kZXggYTY1Y2Y1NDQ2 ODZhLi43ZTBiNTRmNjA1YzYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NldHVw LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc2V0dXAuaApAQCAtNjcsNyArNjcsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgeDg2X2NlNDEwMF9lYXJseV9zZXR1cCh2b2lkKSB7IH0KICAqIFRo aXMgaXMgc2V0IHVwIGJ5IHRoZSBzZXR1cC1yb3V0aW5lIGF0IGJvb3QtdGltZQogICovCiBleHRl cm4gc3RydWN0IGJvb3RfcGFyYW1zIGJvb3RfcGFyYW1zOwotZXh0ZXJuIGNoYXIgX3RleHRbXTsK K2V4dGVybiBjaGFyIF90ZXh0W10gX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIHN0YXRpYyBpbmxp bmUgYm9vbCBrYXNscl9lbmFibGVkKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvY3B1L21pY3JvY29kZS9jb3JlLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21pY3JvY29kZS9j b3JlLmMKaW5kZXggODZlOGYwYjI1MzdiLi44ZjAyMTc4M2E5MjkgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2tlcm5lbC9jcHUvbWljcm9jb2RlL2NvcmUuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1 L21pY3JvY29kZS9jb3JlLmMKQEAgLTE0NCw4ICsxNDQsOCBAQCBzdGF0aWMgYm9vbCBfX2luaXQg Y2hlY2tfbG9hZGVyX2Rpc2FibGVkX2JzcCh2b2lkKQogCXJldHVybiAqcmVzOwogfQogCi1leHRl cm4gc3RydWN0IGJ1aWx0aW5fZncgX19zdGFydF9idWlsdGluX2Z3W107Ci1leHRlcm4gc3RydWN0 IGJ1aWx0aW5fZncgX19lbmRfYnVpbHRpbl9md1tdOworZXh0ZXJuIHN0cnVjdCBidWlsdGluX2Z3 IF9fc3RhcnRfYnVpbHRpbl9md1tdIF9fZGVmYXVsdF92aXNpYmlsaXR5OworZXh0ZXJuIHN0cnVj dCBidWlsdGluX2Z3IF9fZW5kX2J1aWx0aW5fZndbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKIAog Ym9vbCBnZXRfYnVpbHRpbl9maXJtd2FyZShzdHJ1Y3QgY3Bpb19kYXRhICpjZCwgY29uc3QgY2hh ciAqbmFtZSkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jIGIv ZHJpdmVycy9iYXNlL2Zpcm13YXJlX2NsYXNzLmMKaW5kZXggNGI1N2NmNWJjODFkLi43N2Q0NzI3 ZjY1OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jCisrKyBiL2Ry aXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jCkBAIC00NSw4ICs0NSw4IEBAIE1PRFVMRV9MSUNF TlNFKCJHUEwiKTsKIAogI2lmZGVmIENPTkZJR19GV19MT0FERVIKIAotZXh0ZXJuIHN0cnVjdCBi dWlsdGluX2Z3IF9fc3RhcnRfYnVpbHRpbl9md1tdOwotZXh0ZXJuIHN0cnVjdCBidWlsdGluX2Z3 IF9fZW5kX2J1aWx0aW5fZndbXTsKK2V4dGVybiBzdHJ1Y3QgYnVpbHRpbl9mdyBfX3N0YXJ0X2J1 aWx0aW5fZndbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKK2V4dGVybiBzdHJ1Y3QgYnVpbHRpbl9m dyBfX2VuZF9idWlsdGluX2Z3W10gX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIHN0YXRpYyBib29s IGZ3X2dldF9idWlsdGluX2Zpcm13YXJlKHN0cnVjdCBmaXJtd2FyZSAqZncsIGNvbnN0IGNoYXIg Km5hbWUsCiAJCQkJICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9pbmNs dWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25z LmgKaW5kZXggZTVkYTQ0ZWRkZDJmLi4xYWE1ZDZkYWM5ZTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv YXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25z LmgKQEAgLTMwLDYgKzMwLDkgQEAKICAqCV9faXJxZW50cnlfdGV4dF9zdGFydCwgX19pcnFlbnRy eV90ZXh0X2VuZAogICoJX19zb2Z0aXJxZW50cnlfdGV4dF9zdGFydCwgX19zb2Z0aXJxZW50cnlf dGV4dF9lbmQKICAqLworI2lmZGVmIENPTkZJR19ERUZBVUxUX0hJRERFTgorI3ByYWdtYSBHQ0Mg dmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCisjZW5kaWYKIGV4dGVybiBjaGFyIF90ZXh0W10sIF9z dGV4dFtdLCBfZXRleHRbXTsKIGV4dGVybiBjaGFyIF9kYXRhW10sIF9zZGF0YVtdLCBfZWRhdGFb XTsKIGV4dGVybiBjaGFyIF9fYnNzX3N0YXJ0W10sIF9fYnNzX3N0b3BbXTsKQEAgLTQ2LDYgKzQ5 LDkgQEAgZXh0ZXJuIGNoYXIgX19zb2Z0aXJxZW50cnlfdGV4dF9zdGFydFtdLCBfX3NvZnRpcnFl bnRyeV90ZXh0X2VuZFtdOwogCiAvKiBTdGFydCBhbmQgZW5kIG9mIC5jdG9ycyBzZWN0aW9uIC0g dXNlZCBmb3IgY29uc3RydWN0b3IgY2FsbHMuICovCiBleHRlcm4gY2hhciBfX2N0b3JzX3N0YXJ0 W10sIF9fY3RvcnNfZW5kW107CisjaWZkZWYgQ09ORklHX0RFRkFVTFRfSElEREVOCisjcHJhZ21h IEdDQyB2aXNpYmlsaXR5IHBvcAorI2VuZGlmCiAKIGV4dGVybiBfX3Zpc2libGUgY29uc3Qgdm9p ZCBfX25vc2F2ZV9iZWdpbiwgX19ub3NhdmVfZW5kOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2NvbXBpbGVyLmggYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgKaW5kZXggZTk1YTI2MzFl NTQ1Li42OTk3NzE2ZjczYmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaAor KysgYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgKQEAgLTc4LDYgKzc4LDE0IEBAIGV4dGVybiB2 b2lkIF9fY2hrX2lvX3B0cihjb25zdCB2b2xhdGlsZSB2b2lkIF9faW9tZW0gKik7CiAjaW5jbHVk ZSA8bGludXgvY29tcGlsZXItY2xhbmcuaD4KICNlbmRpZgogCisvKiBVc2VmdWwgZm9yIFBvc2l0 aW9uIEluZGVwZW5kZW50IENvZGUgdG8gcmVkdWNlIGdsb2JhbCByZWZlcmVuY2VzICovCisjaWZk ZWYgQ09ORklHX0RFRkFVTFRfSElEREVOCisjcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goaGlk ZGVuKQorI2RlZmluZSBfX2RlZmF1bHRfdmlzaWJpbGl0eSAgX19hdHRyaWJ1dGVfXygodmlzaWJp bGl0eSAoImRlZmF1bHQiKSkpCisjZWxzZQorI2RlZmluZSBfX2RlZmF1bHRfdmlzaWJpbGl0eQor I2VuZGlmCisKIC8qCiAgKiBHZW5lcmljIGNvbXBpbGVyLWRlcGVuZGVudCBtYWNyb3MgcmVxdWly ZWQgZm9yIGtlcm5lbAogICogYnVpbGQgZ28gYmVsb3cgdGhpcyBjb21tZW50LiBBY3R1YWwgY29t cGlsZXIvY29tcGlsZXIgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvaW5pdC9LY29uZmlnIGIvaW5pdC9L Y29uZmlnCmluZGV4IGNjYjFkOGRhZjI0MS4uYjY0MDIwMWZjZmY3IDEwMDY0NAotLS0gYS9pbml0 L0tjb25maWcKKysrIGIvaW5pdC9LY29uZmlnCkBAIC0xNjQ5LDYgKzE2NDksMTMgQEAgY29uZmln IFBST0ZJTElORwogY29uZmlnIFRSQUNFUE9JTlRTCiAJYm9vbAogCisjCisjIERlZmF1bHQgdG8g aGlkZGVuIHZpc2liaWxpdHkgZm9yIGFsbCBzeW1ib2xzLgorIyBVc2VmdWwgZm9yIFBvc2l0aW9u IEluZGVwZW5kZW50IENvZGUgdG8gcmVkdWNlIGdsb2JhbCByZWZlcmVuY2VzLgorIworY29uZmln IERFRkFVTFRfSElEREVOCisJYm9vbAorCiBzb3VyY2UgImFyY2gvS2NvbmZpZyIKIAogZW5kbWVu dQkJIyBHZW5lcmFsIHNldHVwCmRpZmYgLS1naXQgYS9rZXJuZWwva2FsbHN5bXMuYyBiL2tlcm5l bC9rYWxsc3ltcy5jCmluZGV4IDEyN2U3Y2ZhZmE1NS4uMjUyMDE5YzhjM2E5IDEwMDY0NAotLS0g YS9rZXJuZWwva2FsbHN5bXMuYworKysgYi9rZXJuZWwva2FsbHN5bXMuYwpAQCAtMzIsMjQgKzMy LDI0IEBACiAgKiBUaGVzZSB3aWxsIGJlIHJlLWxpbmtlZCBhZ2FpbnN0IHRoZWlyIHJlYWwgdmFs dWVzCiAgKiBkdXJpbmcgdGhlIHNlY29uZCBsaW5rIHN0YWdlLgogICovCi1leHRlcm4gY29uc3Qg dW5zaWduZWQgbG9uZyBrYWxsc3ltc19hZGRyZXNzZXNbXSBfX3dlYWs7Ci1leHRlcm4gY29uc3Qg aW50IGthbGxzeW1zX29mZnNldHNbXSBfX3dlYWs7Ci1leHRlcm4gY29uc3QgdTgga2FsbHN5bXNf bmFtZXNbXSBfX3dlYWs7CitleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZyBrYWxsc3ltc19hZGRy ZXNzZXNbXSBfX3dlYWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gY29uc3QgaW50IGth bGxzeW1zX29mZnNldHNbXSBfX3dlYWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gY29u c3QgdTgga2FsbHN5bXNfbmFtZXNbXSBfX3dlYWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIC8q CiAgKiBUZWxsIHRoZSBjb21waWxlciB0aGF0IHRoZSBjb3VudCBpc24ndCBpbiB0aGUgc21hbGwg ZGF0YSBzZWN0aW9uIGlmIHRoZSBhcmNoCiAgKiBoYXMgb25lIChlZzogRlJWKS4KICAqLwogZXh0 ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcga2FsbHN5bXNfbnVtX3N5bXMKLV9fYXR0cmlidXRlX18o KHdlYWssIHNlY3Rpb24oIi5yb2RhdGEiKSkpOworX19hdHRyaWJ1dGVfXygod2Vhaywgc2VjdGlv bigiLnJvZGF0YSIpKSkgX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIGV4dGVybiBjb25zdCB1bnNp Z25lZCBsb25nIGthbGxzeW1zX3JlbGF0aXZlX2Jhc2UKLV9fYXR0cmlidXRlX18oKHdlYWssIHNl Y3Rpb24oIi5yb2RhdGEiKSkpOworX19hdHRyaWJ1dGVfXygod2Vhaywgc2VjdGlvbigiLnJvZGF0 YSIpKSkgX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKLWV4dGVybiBjb25zdCB1OCBrYWxsc3ltc190 b2tlbl90YWJsZVtdIF9fd2VhazsKLWV4dGVybiBjb25zdCB1MTYga2FsbHN5bXNfdG9rZW5faW5k ZXhbXSBfX3dlYWs7CitleHRlcm4gY29uc3QgdTgga2FsbHN5bXNfdG9rZW5fdGFibGVbXSBfX3dl YWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gY29uc3QgdTE2IGthbGxzeW1zX3Rva2Vu X2luZGV4W10gX193ZWFrIF9fZGVmYXVsdF92aXNpYmlsaXR5OwogCi1leHRlcm4gY29uc3QgdW5z aWduZWQgbG9uZyBrYWxsc3ltc19tYXJrZXJzW10gX193ZWFrOworZXh0ZXJuIGNvbnN0IHVuc2ln bmVkIGxvbmcga2FsbHN5bXNfbWFya2Vyc1tdIF9fd2VhayBfX2RlZmF1bHRfdmlzaWJpbGl0eTsK IAogc3RhdGljIGlubGluZSBpbnQgaXNfa2VybmVsX2luaXR0ZXh0KHVuc2lnbmVkIGxvbmcgYWRk cikKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZS5oIGIva2VybmVsL3RyYWNlL3Ry YWNlLmgKaW5kZXggNjUyYzY4MjcwN2NkLi4zMWNiOTIwMDM5YTIgMTAwNjQ0Ci0tLSBhL2tlcm5l bC90cmFjZS90cmFjZS5oCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZS5oCkBAIC0xNzQyLDggKzE3 NDIsOCBAQCBleHRlcm4gaW50IHRyYWNlX2V2ZW50X2VuYWJsZV9kaXNhYmxlKHN0cnVjdCB0cmFj ZV9ldmVudF9maWxlICpmaWxlLAogCQkJCSAgICAgIGludCBlbmFibGUsIGludCBzb2Z0X2Rpc2Fi bGUpOwogZXh0ZXJuIGludCB0cmFjaW5nX2FsbG9jX3NuYXBzaG90KHZvaWQpOwogCi1leHRlcm4g Y29uc3QgY2hhciAqX19zdGFydF9fX3RyYWNlX2JwcmludGtfZm10W107Ci1leHRlcm4gY29uc3Qg Y2hhciAqX19zdG9wX19fdHJhY2VfYnByaW50a19mbXRbXTsKK2V4dGVybiBjb25zdCBjaGFyICpf X3N0YXJ0X19fdHJhY2VfYnByaW50a19mbXRbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKK2V4dGVy biBjb25zdCBjaGFyICpfX3N0b3BfX190cmFjZV9icHJpbnRrX2ZtdFtdIF9fZGVmYXVsdF92aXNp YmlsaXR5OwogCiBleHRlcm4gY29uc3QgY2hhciAqX19zdGFydF9fX3RyYWNlcG9pbnRfc3RyW107 CiBleHRlcm4gY29uc3QgY2hhciAqX19zdG9wX19fdHJhY2Vwb2ludF9zdHJbXTsKZGlmZiAtLWdp dCBhL2xpYi9keW5hbWljX2RlYnVnLmMgYi9saWIvZHluYW1pY19kZWJ1Zy5jCmluZGV4IGRhNzk2 ZTJkYzRmNS4uMTBlZDIwMTc3MzU0IDEwMDY0NAotLS0gYS9saWIvZHluYW1pY19kZWJ1Zy5jCisr KyBiL2xpYi9keW5hbWljX2RlYnVnLmMKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KIAotZXh0ZXJuIHN0cnVj dCBfZGRlYnVnIF9fc3RhcnRfX192ZXJib3NlW107Ci1leHRlcm4gc3RydWN0IF9kZGVidWcgX19z dG9wX19fdmVyYm9zZVtdOworZXh0ZXJuIHN0cnVjdCBfZGRlYnVnIF9fc3RhcnRfX192ZXJib3Nl W10gX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gc3RydWN0IF9kZGVidWcgX19zdG9wX19f dmVyYm9zZVtdIF9fZGVmYXVsdF92aXNpYmlsaXR5OwogCiBzdHJ1Y3QgZGRlYnVnX3RhYmxlIHsK IAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Ci0tIAoyLjE0LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 15/27] compiler: Option to default to hidden symbols Date: Wed, 4 Oct 2017 14:19:51 -0700 Message-ID: <20171004212003.28296-16-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Bor Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org UHJvdmlkZSBhbiBvcHRpb24gdG8gZGVmYXVsdCB2aXNpYmlsaXR5IHRvIGhpZGRlbiBleGNlcHQg Zm9yIGtleQpzeW1ib2xzLiBUaGlzIG9wdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCB3 aWxsIGJlIHVzZWQgYnkgeDg2XzY0ClBJRSBzdXBwb3J0IHRvIHJlbW92ZSBlcnJvcnMgYmV0d2Vl biBjb21waWxhdGlvbiB1bml0cy4KClRoZSBkZWZhdWx0IHZpc2liaWxpdHkgaXMgYWxzbyBlbmFi bGVkIGZvciBleHRlcm5hbCBzeW1ib2xzIHRoYXQgYXJlCmNvbXBhcmVkIGFzIHRoZXkgbWF5YmUg ZXF1YWxzIChzdGFydC9lbmQgb2Ygc2VjdGlvbnMpLiBJbiB0aGlzIGNhc2UsCm9sZGVyIHZlcnNp b25zIG9mIEdDQyB3aWxsIHJlbW92ZSB0aGUgY29tcGFyaXNvbiBpZiB0aGUgc3ltYm9scyBhcmUK aGlkZGVuLiBUaGlzIGlzc3VlIGV4aXN0cyBhdCBsZWFzdCBvbiBnY2MgNC45IGFuZCBiZWZvcmUu CgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2FybmllciA8dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLS0t CiBhcmNoL3g4Ni9ib290L2Jvb3QuaCAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYv aW5jbHVkZS9hc20vc2V0dXAuaCAgICAgICAgIHwgIDIgKy0KIGFyY2gveDg2L2tlcm5lbC9jcHUv bWljcm9jb2RlL2NvcmUuYyB8ICA0ICsrLS0KIGRyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5j ICAgICAgICB8ICA0ICsrLS0KIGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaCAgICAgICB8 ICA2ICsrKysrKwogaW5jbHVkZS9saW51eC9jb21waWxlci5oICAgICAgICAgICAgIHwgIDggKysr KysrKysKIGluaXQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKysK IGtlcm5lbC9rYWxsc3ltcy5jICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0t LS0KIGtlcm5lbC90cmFjZS90cmFjZS5oICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIGxpYi9k eW5hbWljX2RlYnVnLmMgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIDEwIGZpbGVzIGNoYW5n ZWQsIDM5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2Jvb3QvYm9vdC5oIGIvYXJjaC94ODYvYm9vdC9ib290LmgKaW5kZXggZWY1YTljYzY2ZmI4 Li5kNzI2YzM1YmRkOTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvYm9vdC5oCisrKyBiL2Fy Y2gveDg2L2Jvb3QvYm9vdC5oCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIGlubGluZSBib29s IG1lbWNtcF9ncyhjb25zdCB2b2lkICpzMSwgYWRkcl90IHMyLCBzaXplX3QgbGVuKQogfQogCiAv KiBIZWFwIC0tIGF2YWlsYWJsZSBmb3IgZHluYW1pYyBsaXN0cy4gKi8KLWV4dGVybiBjaGFyIF9l bmRbXTsKK2V4dGVybiBjaGFyIF9lbmRbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKIGV4dGVybiBj aGFyICpIRUFQOwogZXh0ZXJuIGNoYXIgKmhlYXBfZW5kOwogI2RlZmluZSBSRVNFVF9IRUFQKCkg KCh2b2lkICopKCBIRUFQID0gX2VuZCApKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9h c20vc2V0dXAuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NldHVwLmgKaW5kZXggYTY1Y2Y1NDQ2 ODZhLi43ZTBiNTRmNjA1YzYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NldHVw LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc2V0dXAuaApAQCAtNjcsNyArNjcsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgeDg2X2NlNDEwMF9lYXJseV9zZXR1cCh2b2lkKSB7IH0KICAqIFRo aXMgaXMgc2V0IHVwIGJ5IHRoZSBzZXR1cC1yb3V0aW5lIGF0IGJvb3QtdGltZQogICovCiBleHRl cm4gc3RydWN0IGJvb3RfcGFyYW1zIGJvb3RfcGFyYW1zOwotZXh0ZXJuIGNoYXIgX3RleHRbXTsK K2V4dGVybiBjaGFyIF90ZXh0W10gX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIHN0YXRpYyBpbmxp bmUgYm9vbCBrYXNscl9lbmFibGVkKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvY3B1L21pY3JvY29kZS9jb3JlLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21pY3JvY29kZS9j b3JlLmMKaW5kZXggODZlOGYwYjI1MzdiLi44ZjAyMTc4M2E5MjkgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2tlcm5lbC9jcHUvbWljcm9jb2RlL2NvcmUuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1 L21pY3JvY29kZS9jb3JlLmMKQEAgLTE0NCw4ICsxNDQsOCBAQCBzdGF0aWMgYm9vbCBfX2luaXQg Y2hlY2tfbG9hZGVyX2Rpc2FibGVkX2JzcCh2b2lkKQogCXJldHVybiAqcmVzOwogfQogCi1leHRl cm4gc3RydWN0IGJ1aWx0aW5fZncgX19zdGFydF9idWlsdGluX2Z3W107Ci1leHRlcm4gc3RydWN0 IGJ1aWx0aW5fZncgX19lbmRfYnVpbHRpbl9md1tdOworZXh0ZXJuIHN0cnVjdCBidWlsdGluX2Z3 IF9fc3RhcnRfYnVpbHRpbl9md1tdIF9fZGVmYXVsdF92aXNpYmlsaXR5OworZXh0ZXJuIHN0cnVj dCBidWlsdGluX2Z3IF9fZW5kX2J1aWx0aW5fZndbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKIAog Ym9vbCBnZXRfYnVpbHRpbl9maXJtd2FyZShzdHJ1Y3QgY3Bpb19kYXRhICpjZCwgY29uc3QgY2hh ciAqbmFtZSkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jIGIv ZHJpdmVycy9iYXNlL2Zpcm13YXJlX2NsYXNzLmMKaW5kZXggNGI1N2NmNWJjODFkLi43N2Q0NzI3 ZjY1OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jCisrKyBiL2Ry aXZlcnMvYmFzZS9maXJtd2FyZV9jbGFzcy5jCkBAIC00NSw4ICs0NSw4IEBAIE1PRFVMRV9MSUNF TlNFKCJHUEwiKTsKIAogI2lmZGVmIENPTkZJR19GV19MT0FERVIKIAotZXh0ZXJuIHN0cnVjdCBi dWlsdGluX2Z3IF9fc3RhcnRfYnVpbHRpbl9md1tdOwotZXh0ZXJuIHN0cnVjdCBidWlsdGluX2Z3 IF9fZW5kX2J1aWx0aW5fZndbXTsKK2V4dGVybiBzdHJ1Y3QgYnVpbHRpbl9mdyBfX3N0YXJ0X2J1 aWx0aW5fZndbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKK2V4dGVybiBzdHJ1Y3QgYnVpbHRpbl9m dyBfX2VuZF9idWlsdGluX2Z3W10gX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIHN0YXRpYyBib29s IGZ3X2dldF9idWlsdGluX2Zpcm13YXJlKHN0cnVjdCBmaXJtd2FyZSAqZncsIGNvbnN0IGNoYXIg Km5hbWUsCiAJCQkJICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9pbmNs dWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25z LmgKaW5kZXggZTVkYTQ0ZWRkZDJmLi4xYWE1ZDZkYWM5ZTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv YXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25z LmgKQEAgLTMwLDYgKzMwLDkgQEAKICAqCV9faXJxZW50cnlfdGV4dF9zdGFydCwgX19pcnFlbnRy eV90ZXh0X2VuZAogICoJX19zb2Z0aXJxZW50cnlfdGV4dF9zdGFydCwgX19zb2Z0aXJxZW50cnlf dGV4dF9lbmQKICAqLworI2lmZGVmIENPTkZJR19ERUZBVUxUX0hJRERFTgorI3ByYWdtYSBHQ0Mg dmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCisjZW5kaWYKIGV4dGVybiBjaGFyIF90ZXh0W10sIF9z dGV4dFtdLCBfZXRleHRbXTsKIGV4dGVybiBjaGFyIF9kYXRhW10sIF9zZGF0YVtdLCBfZWRhdGFb XTsKIGV4dGVybiBjaGFyIF9fYnNzX3N0YXJ0W10sIF9fYnNzX3N0b3BbXTsKQEAgLTQ2LDYgKzQ5 LDkgQEAgZXh0ZXJuIGNoYXIgX19zb2Z0aXJxZW50cnlfdGV4dF9zdGFydFtdLCBfX3NvZnRpcnFl bnRyeV90ZXh0X2VuZFtdOwogCiAvKiBTdGFydCBhbmQgZW5kIG9mIC5jdG9ycyBzZWN0aW9uIC0g dXNlZCBmb3IgY29uc3RydWN0b3IgY2FsbHMuICovCiBleHRlcm4gY2hhciBfX2N0b3JzX3N0YXJ0 W10sIF9fY3RvcnNfZW5kW107CisjaWZkZWYgQ09ORklHX0RFRkFVTFRfSElEREVOCisjcHJhZ21h IEdDQyB2aXNpYmlsaXR5IHBvcAorI2VuZGlmCiAKIGV4dGVybiBfX3Zpc2libGUgY29uc3Qgdm9p ZCBfX25vc2F2ZV9iZWdpbiwgX19ub3NhdmVfZW5kOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2NvbXBpbGVyLmggYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgKaW5kZXggZTk1YTI2MzFl NTQ1Li42OTk3NzE2ZjczYmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaAor KysgYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgKQEAgLTc4LDYgKzc4LDE0IEBAIGV4dGVybiB2 b2lkIF9fY2hrX2lvX3B0cihjb25zdCB2b2xhdGlsZSB2b2lkIF9faW9tZW0gKik7CiAjaW5jbHVk ZSA8bGludXgvY29tcGlsZXItY2xhbmcuaD4KICNlbmRpZgogCisvKiBVc2VmdWwgZm9yIFBvc2l0 aW9uIEluZGVwZW5kZW50IENvZGUgdG8gcmVkdWNlIGdsb2JhbCByZWZlcmVuY2VzICovCisjaWZk ZWYgQ09ORklHX0RFRkFVTFRfSElEREVOCisjcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goaGlk ZGVuKQorI2RlZmluZSBfX2RlZmF1bHRfdmlzaWJpbGl0eSAgX19hdHRyaWJ1dGVfXygodmlzaWJp bGl0eSAoImRlZmF1bHQiKSkpCisjZWxzZQorI2RlZmluZSBfX2RlZmF1bHRfdmlzaWJpbGl0eQor I2VuZGlmCisKIC8qCiAgKiBHZW5lcmljIGNvbXBpbGVyLWRlcGVuZGVudCBtYWNyb3MgcmVxdWly ZWQgZm9yIGtlcm5lbAogICogYnVpbGQgZ28gYmVsb3cgdGhpcyBjb21tZW50LiBBY3R1YWwgY29t cGlsZXIvY29tcGlsZXIgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvaW5pdC9LY29uZmlnIGIvaW5pdC9L Y29uZmlnCmluZGV4IGNjYjFkOGRhZjI0MS4uYjY0MDIwMWZjZmY3IDEwMDY0NAotLS0gYS9pbml0 L0tjb25maWcKKysrIGIvaW5pdC9LY29uZmlnCkBAIC0xNjQ5LDYgKzE2NDksMTMgQEAgY29uZmln IFBST0ZJTElORwogY29uZmlnIFRSQUNFUE9JTlRTCiAJYm9vbAogCisjCisjIERlZmF1bHQgdG8g aGlkZGVuIHZpc2liaWxpdHkgZm9yIGFsbCBzeW1ib2xzLgorIyBVc2VmdWwgZm9yIFBvc2l0aW9u IEluZGVwZW5kZW50IENvZGUgdG8gcmVkdWNlIGdsb2JhbCByZWZlcmVuY2VzLgorIworY29uZmln IERFRkFVTFRfSElEREVOCisJYm9vbAorCiBzb3VyY2UgImFyY2gvS2NvbmZpZyIKIAogZW5kbWVu dQkJIyBHZW5lcmFsIHNldHVwCmRpZmYgLS1naXQgYS9rZXJuZWwva2FsbHN5bXMuYyBiL2tlcm5l bC9rYWxsc3ltcy5jCmluZGV4IDEyN2U3Y2ZhZmE1NS4uMjUyMDE5YzhjM2E5IDEwMDY0NAotLS0g YS9rZXJuZWwva2FsbHN5bXMuYworKysgYi9rZXJuZWwva2FsbHN5bXMuYwpAQCAtMzIsMjQgKzMy LDI0IEBACiAgKiBUaGVzZSB3aWxsIGJlIHJlLWxpbmtlZCBhZ2FpbnN0IHRoZWlyIHJlYWwgdmFs dWVzCiAgKiBkdXJpbmcgdGhlIHNlY29uZCBsaW5rIHN0YWdlLgogICovCi1leHRlcm4gY29uc3Qg dW5zaWduZWQgbG9uZyBrYWxsc3ltc19hZGRyZXNzZXNbXSBfX3dlYWs7Ci1leHRlcm4gY29uc3Qg aW50IGthbGxzeW1zX29mZnNldHNbXSBfX3dlYWs7Ci1leHRlcm4gY29uc3QgdTgga2FsbHN5bXNf bmFtZXNbXSBfX3dlYWs7CitleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZyBrYWxsc3ltc19hZGRy ZXNzZXNbXSBfX3dlYWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gY29uc3QgaW50IGth bGxzeW1zX29mZnNldHNbXSBfX3dlYWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gY29u c3QgdTgga2FsbHN5bXNfbmFtZXNbXSBfX3dlYWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIC8q CiAgKiBUZWxsIHRoZSBjb21waWxlciB0aGF0IHRoZSBjb3VudCBpc24ndCBpbiB0aGUgc21hbGwg ZGF0YSBzZWN0aW9uIGlmIHRoZSBhcmNoCiAgKiBoYXMgb25lIChlZzogRlJWKS4KICAqLwogZXh0 ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcga2FsbHN5bXNfbnVtX3N5bXMKLV9fYXR0cmlidXRlX18o KHdlYWssIHNlY3Rpb24oIi5yb2RhdGEiKSkpOworX19hdHRyaWJ1dGVfXygod2Vhaywgc2VjdGlv bigiLnJvZGF0YSIpKSkgX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKIGV4dGVybiBjb25zdCB1bnNp Z25lZCBsb25nIGthbGxzeW1zX3JlbGF0aXZlX2Jhc2UKLV9fYXR0cmlidXRlX18oKHdlYWssIHNl Y3Rpb24oIi5yb2RhdGEiKSkpOworX19hdHRyaWJ1dGVfXygod2Vhaywgc2VjdGlvbigiLnJvZGF0 YSIpKSkgX19kZWZhdWx0X3Zpc2liaWxpdHk7CiAKLWV4dGVybiBjb25zdCB1OCBrYWxsc3ltc190 b2tlbl90YWJsZVtdIF9fd2VhazsKLWV4dGVybiBjb25zdCB1MTYga2FsbHN5bXNfdG9rZW5faW5k ZXhbXSBfX3dlYWs7CitleHRlcm4gY29uc3QgdTgga2FsbHN5bXNfdG9rZW5fdGFibGVbXSBfX3dl YWsgX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gY29uc3QgdTE2IGthbGxzeW1zX3Rva2Vu X2luZGV4W10gX193ZWFrIF9fZGVmYXVsdF92aXNpYmlsaXR5OwogCi1leHRlcm4gY29uc3QgdW5z aWduZWQgbG9uZyBrYWxsc3ltc19tYXJrZXJzW10gX193ZWFrOworZXh0ZXJuIGNvbnN0IHVuc2ln bmVkIGxvbmcga2FsbHN5bXNfbWFya2Vyc1tdIF9fd2VhayBfX2RlZmF1bHRfdmlzaWJpbGl0eTsK IAogc3RhdGljIGlubGluZSBpbnQgaXNfa2VybmVsX2luaXR0ZXh0KHVuc2lnbmVkIGxvbmcgYWRk cikKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZS5oIGIva2VybmVsL3RyYWNlL3Ry YWNlLmgKaW5kZXggNjUyYzY4MjcwN2NkLi4zMWNiOTIwMDM5YTIgMTAwNjQ0Ci0tLSBhL2tlcm5l bC90cmFjZS90cmFjZS5oCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZS5oCkBAIC0xNzQyLDggKzE3 NDIsOCBAQCBleHRlcm4gaW50IHRyYWNlX2V2ZW50X2VuYWJsZV9kaXNhYmxlKHN0cnVjdCB0cmFj ZV9ldmVudF9maWxlICpmaWxlLAogCQkJCSAgICAgIGludCBlbmFibGUsIGludCBzb2Z0X2Rpc2Fi bGUpOwogZXh0ZXJuIGludCB0cmFjaW5nX2FsbG9jX3NuYXBzaG90KHZvaWQpOwogCi1leHRlcm4g Y29uc3QgY2hhciAqX19zdGFydF9fX3RyYWNlX2JwcmludGtfZm10W107Ci1leHRlcm4gY29uc3Qg Y2hhciAqX19zdG9wX19fdHJhY2VfYnByaW50a19mbXRbXTsKK2V4dGVybiBjb25zdCBjaGFyICpf X3N0YXJ0X19fdHJhY2VfYnByaW50a19mbXRbXSBfX2RlZmF1bHRfdmlzaWJpbGl0eTsKK2V4dGVy biBjb25zdCBjaGFyICpfX3N0b3BfX190cmFjZV9icHJpbnRrX2ZtdFtdIF9fZGVmYXVsdF92aXNp YmlsaXR5OwogCiBleHRlcm4gY29uc3QgY2hhciAqX19zdGFydF9fX3RyYWNlcG9pbnRfc3RyW107 CiBleHRlcm4gY29uc3QgY2hhciAqX19zdG9wX19fdHJhY2Vwb2ludF9zdHJbXTsKZGlmZiAtLWdp dCBhL2xpYi9keW5hbWljX2RlYnVnLmMgYi9saWIvZHluYW1pY19kZWJ1Zy5jCmluZGV4IGRhNzk2 ZTJkYzRmNS4uMTBlZDIwMTc3MzU0IDEwMDY0NAotLS0gYS9saWIvZHluYW1pY19kZWJ1Zy5jCisr KyBiL2xpYi9keW5hbWljX2RlYnVnLmMKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KIAotZXh0ZXJuIHN0cnVj dCBfZGRlYnVnIF9fc3RhcnRfX192ZXJib3NlW107Ci1leHRlcm4gc3RydWN0IF9kZGVidWcgX19z dG9wX19fdmVyYm9zZVtdOworZXh0ZXJuIHN0cnVjdCBfZGRlYnVnIF9fc3RhcnRfX192ZXJib3Nl W10gX19kZWZhdWx0X3Zpc2liaWxpdHk7CitleHRlcm4gc3RydWN0IF9kZGVidWcgX19zdG9wX19f dmVyYm9zZVtdIF9fZGVmYXVsdF92aXNpYmlsaXR5OwogCiBzdHJ1Y3QgZGRlYnVnX3RhYmxlIHsK IAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Ci0tIAoyLjE0LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK