From b6e59cd925cbe6c0f23cf46828d47e6e7edd17c9 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 11 Sep 2018 11:57:31 -0400 Subject: [PATCH] apply hidden visibility to sigreturn code fragments these were overlooked in the declarations overhaul work because they are not properly declared, and the current framework even allows their declared types to vary by arch. at some point this should be cleaned up, but I'm not sure what the right way would be. --- arch/mips/ksigaction.h | 4 +++- arch/mips64/ksigaction.h | 4 +++- arch/mipsn32/ksigaction.h | 4 +++- arch/sh/ksigaction.h | 4 +++- arch/x32/ksigaction.h | 4 +++- arch/x86_64/ksigaction.h | 4 +++- src/internal/ksigaction.h | 4 +++- src/signal/aarch64/restore.s | 2 ++ src/signal/arm/restore.s | 2 ++ src/signal/i386/restore.s | 2 ++ src/signal/microblaze/restore.s | 2 ++ src/signal/mips/restore.s | 2 ++ src/signal/mips64/restore.s | 2 ++ src/signal/mipsn32/restore.s | 2 ++ src/signal/powerpc/restore.s | 2 ++ src/signal/powerpc64/restore.s | 2 ++ src/signal/restore.c | 6 ++++-- src/signal/s390x/restore.s | 2 ++ src/signal/sh/restore.s | 2 ++ src/signal/x32/restore.s | 1 + src/signal/x86_64/restore.s | 1 + 21 files changed, 49 insertions(+), 9 deletions(-) diff --git a/arch/mips/ksigaction.h b/arch/mips/ksigaction.h index 3127f7c0..63fdfab0 100644 --- a/arch/mips/ksigaction.h +++ b/arch/mips/ksigaction.h @@ -1,3 +1,5 @@ +#include + struct k_sigaction { unsigned flags; void (*handler)(int); @@ -8,4 +10,4 @@ struct k_sigaction { void (*restorer)(); }; -void __restore(), __restore_rt(); +hidden void __restore(), __restore_rt(); diff --git a/arch/mips64/ksigaction.h b/arch/mips64/ksigaction.h index 55ba18ea..c16e4731 100644 --- a/arch/mips64/ksigaction.h +++ b/arch/mips64/ksigaction.h @@ -1,3 +1,5 @@ +#include + struct k_sigaction { unsigned flags; void (*handler)(int); @@ -5,4 +7,4 @@ struct k_sigaction { void (*restorer)(); }; -void __restore(), __restore_rt(); +hidden void __restore(), __restore_rt(); diff --git a/arch/mipsn32/ksigaction.h b/arch/mipsn32/ksigaction.h index 9969e3b2..b565f1fc 100644 --- a/arch/mipsn32/ksigaction.h +++ b/arch/mipsn32/ksigaction.h @@ -1,3 +1,5 @@ +#include + struct k_sigaction { unsigned flags; void (*handler)(int); @@ -5,4 +7,4 @@ struct k_sigaction { void (*restorer)(); }; -void __restore(), __restore_rt(); +hidden void __restore(), __restore_rt(); diff --git a/arch/sh/ksigaction.h b/arch/sh/ksigaction.h index 0c652bea..714ae619 100644 --- a/arch/sh/ksigaction.h +++ b/arch/sh/ksigaction.h @@ -1,3 +1,5 @@ +#include + struct k_sigaction { void (*handler)(int); unsigned long flags; @@ -5,4 +7,4 @@ struct k_sigaction { unsigned mask[2]; }; -extern unsigned char __restore[], __restore_rt[]; +extern hidden unsigned char __restore[], __restore_rt[]; diff --git a/arch/x32/ksigaction.h b/arch/x32/ksigaction.h index 7743c5c6..c40e3568 100644 --- a/arch/x32/ksigaction.h +++ b/arch/x32/ksigaction.h @@ -1,3 +1,5 @@ +#include + struct k_sigaction { void (*handler)(int); unsigned long flags; @@ -5,5 +7,5 @@ struct k_sigaction { unsigned mask[2]; }; -void __restore_rt(); +hidden void __restore_rt(); #define __restore __restore_rt diff --git a/arch/x86_64/ksigaction.h b/arch/x86_64/ksigaction.h index 7743c5c6..c40e3568 100644 --- a/arch/x86_64/ksigaction.h +++ b/arch/x86_64/ksigaction.h @@ -1,3 +1,5 @@ +#include + struct k_sigaction { void (*handler)(int); unsigned long flags; @@ -5,5 +7,5 @@ struct k_sigaction { unsigned mask[2]; }; -void __restore_rt(); +hidden void __restore_rt(); #define __restore __restore_rt diff --git a/src/internal/ksigaction.h b/src/internal/ksigaction.h index 1d8d9646..8ebd5938 100644 --- a/src/internal/ksigaction.h +++ b/src/internal/ksigaction.h @@ -1,3 +1,5 @@ +#include + /* This is the structure used for the rt_sigaction syscall on most archs, * but it can be overridden by a file with the same name in the top-level * arch dir for a given arch, if necessary. */ @@ -8,4 +10,4 @@ struct k_sigaction { unsigned mask[2]; }; -void __restore(), __restore_rt(); +hidden void __restore(), __restore_rt(); diff --git a/src/signal/aarch64/restore.s b/src/signal/aarch64/restore.s index d3d0243d..d4e5fcf1 100644 --- a/src/signal/aarch64/restore.s +++ b/src/signal/aarch64/restore.s @@ -1,7 +1,9 @@ .global __restore +.hidden __restore .type __restore,%function __restore: .global __restore_rt +.hidden __restore_rt .type __restore_rt,%function __restore_rt: mov x8,#139 // SYS_rt_sigreturn diff --git a/src/signal/arm/restore.s b/src/signal/arm/restore.s index 22fb1a54..fb086d9b 100644 --- a/src/signal/arm/restore.s +++ b/src/signal/arm/restore.s @@ -1,12 +1,14 @@ .syntax unified .global __restore +.hidden __restore .type __restore,%function __restore: mov r7,#119 swi 0x0 .global __restore_rt +.hidden __restore_rt .type __restore_rt,%function __restore_rt: mov r7,#173 diff --git a/src/signal/i386/restore.s b/src/signal/i386/restore.s index a30b69c4..ccc94307 100644 --- a/src/signal/i386/restore.s +++ b/src/signal/i386/restore.s @@ -1,4 +1,5 @@ .global __restore +.hidden __restore .type __restore,@function __restore: popl %eax @@ -6,6 +7,7 @@ __restore: int $0x80 .global __restore_rt +.hidden __restore_rt .type __restore_rt,@function __restore_rt: movl $173, %eax diff --git a/src/signal/microblaze/restore.s b/src/signal/microblaze/restore.s index fe4f5a09..b3c9f57b 100644 --- a/src/signal/microblaze/restore.s +++ b/src/signal/microblaze/restore.s @@ -1,10 +1,12 @@ .global __restore +.hidden __restore .type __restore,@function __restore: ori r12, r0, 119 brki r14, 0x8 .global __restore_rt +.hidden __restore_rt .type __restore_rt,@function __restore_rt: ori r12, r0, 173 diff --git a/src/signal/mips/restore.s b/src/signal/mips/restore.s index 5c22dd48..b6dadce0 100644 --- a/src/signal/mips/restore.s +++ b/src/signal/mips/restore.s @@ -1,12 +1,14 @@ .set noreorder .global __restore_rt +.hidden __restore_rt .type __restore_rt,@function __restore_rt: li $2, 4193 syscall .global __restore +.hidden __restore .type __restore,@function __restore: li $2, 4119 diff --git a/src/signal/mips64/restore.s b/src/signal/mips64/restore.s index e8988369..401f8e73 100644 --- a/src/signal/mips64/restore.s +++ b/src/signal/mips64/restore.s @@ -1,6 +1,8 @@ .set noreorder .global __restore_rt .global __restore +.hidden __restore_rt +.hidden __restore .type __restore_rt,@function .type __restore,@function __restore_rt: diff --git a/src/signal/mipsn32/restore.s b/src/signal/mipsn32/restore.s index 0d1c1c5e..4cd4e1b4 100644 --- a/src/signal/mipsn32/restore.s +++ b/src/signal/mipsn32/restore.s @@ -1,6 +1,8 @@ .set noreorder .global __restore_rt .global __restore +.hidden __restore_rt +.hidden __restore .type __restore_rt,@function .type __restore,@function __restore_rt: diff --git a/src/signal/powerpc/restore.s b/src/signal/powerpc/restore.s index 4d41c27a..29c8afd0 100644 --- a/src/signal/powerpc/restore.s +++ b/src/signal/powerpc/restore.s @@ -1,10 +1,12 @@ .global __restore + .hidden __restore .type __restore,%function __restore: li 0, 119 #__NR_sigreturn sc .global __restore_rt + .hidden __restore_rt .type __restore_rt,%function __restore_rt: li 0, 172 # __NR_rt_sigreturn diff --git a/src/signal/powerpc64/restore.s b/src/signal/powerpc64/restore.s index 4d41c27a..29c8afd0 100644 --- a/src/signal/powerpc64/restore.s +++ b/src/signal/powerpc64/restore.s @@ -1,10 +1,12 @@ .global __restore + .hidden __restore .type __restore,%function __restore: li 0, 119 #__NR_sigreturn sc .global __restore_rt + .hidden __restore_rt .type __restore_rt,%function __restore_rt: li 0, 172 # __NR_rt_sigreturn diff --git a/src/signal/restore.c b/src/signal/restore.c index 873b867e..5ec4f5dd 100644 --- a/src/signal/restore.c +++ b/src/signal/restore.c @@ -1,10 +1,12 @@ +#include + /* These functions will not work, but suffice for targets where the * kernel sigaction structure does not actually use sa_restorer. */ -void __restore() +hidden void __restore() { } -void __restore_rt() +hidden void __restore_rt() { } diff --git a/src/signal/s390x/restore.s b/src/signal/s390x/restore.s index 79beb68f..88e33dbc 100644 --- a/src/signal/s390x/restore.s +++ b/src/signal/s390x/restore.s @@ -1,9 +1,11 @@ .global __restore + .hidden __restore .type __restore,%function __restore: svc 119 #__NR_sigreturn .global __restore_rt + .hidden __restore_rt .type __restore_rt,%function __restore_rt: svc 173 # __NR_rt_sigreturn diff --git a/src/signal/sh/restore.s b/src/signal/sh/restore.s index d5df8e14..3a92199d 100644 --- a/src/signal/sh/restore.s +++ b/src/signal/sh/restore.s @@ -1,4 +1,5 @@ .global __restore +.hidden __restore __restore: mov #119, r3 !__NR_sigreturn trapa #31 @@ -10,6 +11,7 @@ __restore: or r0, r0 .global __restore_rt +.hidden __restore_rt __restore_rt: mov #100, r3 !__NR_rt_sigreturn add #73, r3 diff --git a/src/signal/x32/restore.s b/src/signal/x32/restore.s index 2f06e787..1117446a 100644 --- a/src/signal/x32/restore.s +++ b/src/signal/x32/restore.s @@ -1,5 +1,6 @@ nop .global __restore_rt +.hidden __restore_rt .type __restore_rt,@function __restore_rt: mov $0x40000201, %rax /* SYS_rt_sigreturn */ diff --git a/src/signal/x86_64/restore.s b/src/signal/x86_64/restore.s index b5c6e37f..27d6cf31 100644 --- a/src/signal/x86_64/restore.s +++ b/src/signal/x86_64/restore.s @@ -1,5 +1,6 @@ nop .global __restore_rt +.hidden __restore_rt .type __restore_rt,@function __restore_rt: mov $15, %rax -- GitLab