Message ID | Pine.LNX.4.64.1406210059310.1155@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
On 21 June 2014 01:59, Joseph S. Myers <joseph@codesourcery.com> wrote: > This patch removes ARM __ASSUME_SIGFRAME_V2 now that the > 2.6.18-and-later signal frame layout can be assumed, renaming the > affected functions accordingly now only one version of them is needed > in glibc. (sigrestorer.S did not in fact include <kernel-features.h> > and it appears that, unlike other such cases, it didn't get the header > indirectly, so the v1 functions would have been compiled in even when > sigaction.c didn't reference them.) > > (alpha and hppa also have architecture-specific __ASSUME_* macros that > should now be removed: __ASSUME_FDATASYNC and __ASSUME_LWS_CAS > respectively. I don't have any plans to do anything on that myself.) > > Tested on ARM and committed. > > 2014-06-21 Joseph Myers <joseph@codesourcery.com> > > * sysdeps/unix/sysv/linux/arm/kernel-features.h > (__ASSUME_SIGFRAME_V2): Remove macro. > * sysdeps/unix/sysv/linux/arm/sigrestorer.S: Update comment. > [!__ASSUME_SIGFRAME_V2]: Remove conditional code. > (__default_sa_restorer_v2): Rename to __default_sa_restorer. > (__default_rt_sa_restorer_v2): Rename to __default_rt_sa_restorer. > * sysdeps/unix/sysv/linux/arm/sigaction.c (__default_sa_restorer): > Declare as function. Remove conditional macro definitions. > (__default_rt_sa_restorer): Likewise. > (__default_sa_restorer_v1): Remove declaration. > (__default_sa_restorer_v2): Likewise. > (__default_rt_sa_restorer_v1): Likewise. > (__default_rt_sa_restorer_v2): Likewise. > * sysdeps/unix/sysv/linux/arm/Versions (GLIBC_PRIVATE): Remove > __default_sa_restorer_v1, __default_rt_sa_restorer_v1, > __default_sa_restorer_v2 and __default_rt_sa_restorer_v2. This looks ok to me. > diff --git a/sysdeps/unix/sysv/linux/arm/Versions b/sysdeps/unix/sysv/linux/arm/Versions > index b0e9a4c..a251b0f 100644 > --- a/sysdeps/unix/sysv/linux/arm/Versions > +++ b/sysdeps/unix/sysv/linux/arm/Versions > @@ -10,7 +10,5 @@ libc { > GLIBC_PRIVATE { > # A copy of sigaction lives in libpthread, and needs these. > __default_sa_restorer; __default_rt_sa_restorer; > - __default_sa_restorer_v1; __default_rt_sa_restorer_v1; > - __default_sa_restorer_v2; __default_rt_sa_restorer_v2; > } > } > diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h > index 354f2ca..e755741 100644 > --- a/sysdeps/unix/sysv/linux/arm/kernel-features.h > +++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h > @@ -17,9 +17,6 @@ > License along with the GNU C Library. If not, see > <http://www.gnu.org/licenses/>. */ > > -/* The signal frame layout changed in 2.6.18. */ > -#define __ASSUME_SIGFRAME_V2 1 > - > /* Support for the recvmmsg syscall was added in 2.6.33. */ > #if __LINUX_KERNEL_VERSION >= 0x020621 > # define __ASSUME_RECVMMSG_SYSCALL 1 > diff --git a/sysdeps/unix/sysv/linux/arm/sigaction.c b/sysdeps/unix/sysv/linux/arm/sigaction.c > index 21df885..e1d87cb 100644 > --- a/sysdeps/unix/sysv/linux/arm/sigaction.c > +++ b/sysdeps/unix/sysv/linux/arm/sigaction.c > @@ -30,22 +30,8 @@ > > #define SA_RESTORER 0x04000000 > > -extern void __default_sa_restorer_v1(void); > -extern void __default_sa_restorer_v2(void); > -extern void __default_rt_sa_restorer_v1(void); > -extern void __default_rt_sa_restorer_v2(void); > -#ifdef __ASSUME_SIGFRAME_V2 > -# define __default_sa_restorer __default_sa_restorer_v2 > -# define __default_rt_sa_restorer __default_rt_sa_restorer_v2 > -#else > -# include <ldsodefs.h> > -# define __default_sa_restorer (GLRO(dl_osversion) >= 0x020612 \ > - ? __default_sa_restorer_v2 \ > - : __default_sa_restorer_v1) > -# define __default_rt_sa_restorer (GLRO(dl_osversion) >= 0x020612 \ > - ? __default_rt_sa_restorer_v2 \ > - : __default_rt_sa_restorer_v1) > -#endif > +extern void __default_sa_restorer (void); > +extern void __default_rt_sa_restorer (void); > > /* When RT signals are in use we need to use a different return stub. */ > #define choose_restorer(flags) \ > diff --git a/sysdeps/unix/sysv/linux/arm/sigrestorer.S b/sysdeps/unix/sysv/linux/arm/sigrestorer.S > index 566c04a..e1698d3 100644 > --- a/sysdeps/unix/sysv/linux/arm/sigrestorer.S > +++ b/sysdeps/unix/sysv/linux/arm/sigrestorer.S > @@ -28,10 +28,7 @@ > > Start the unwind tables at least one instruction before the signal > trampoline, because the unwinder will assume we are returning after > - a call site. > - > - Because the signal frame layout changed in 2.6.18, we provide two > - copies of these functions with different unwind information. */ > + a call site. */ > > /* Used in ENTRY. */ > #undef cfi_startproc > @@ -60,58 +57,28 @@ > cfi_offset (r14, OFFSET + 14 * 4); \ > cfi_offset (r15, OFFSET + 15 * 4) > > -#ifndef __ASSUME_SIGFRAME_V2 > -#define OFFSET 12 > - .fnstart > - .save {r0-r15} > - .pad #OFFSET > - nop > -ENTRY(__default_sa_restorer_v1) > - CFI > - mov r7, $SYS_ify(sigreturn) > - swi 0x0 > - .fnend > -END(__default_sa_restorer_v1) > -#undef OFFSET > -#endif /* __ASSUME_SIGFRAME_V2 */ > - > #define OFFSET 32 > .fnstart > .save {r0-r15} > .pad #OFFSET > nop > -ENTRY(__default_sa_restorer_v2) > +ENTRY(__default_sa_restorer) > CFI > mov r7, $SYS_ify(sigreturn) > swi 0x0 > .fnend > -END(__default_sa_restorer_v2) > -#undef OFFSET > - > -#ifndef __ASSUME_SIGFRAME_V2 > -#define OFFSET 168 > - .fnstart > - .save {r0-r15} > - .pad #OFFSET > - nop > -ENTRY(__default_rt_sa_restorer_v1) > - CFI > - mov r7, $SYS_ify(rt_sigreturn) > - swi 0x0 > - .fnend > -END(__default_rt_sa_restorer_v1) > +END(__default_sa_restorer) > #undef OFFSET > -#endif /* __ASSUME_SIGFRAME_V2 */ > > #define OFFSET 160 > .fnstart > .save {r0-r15} > .pad #OFFSET > nop > -ENTRY(__default_rt_sa_restorer_v2) > +ENTRY(__default_rt_sa_restorer) > CFI > mov r7, $SYS_ify(rt_sigreturn) > swi 0x0 > .fnend > -END(__default_rt_sa_restorer_v2) > +END(__default_rt_sa_restorer) > #undef OFFSET > > -- > Joseph S. Myers > joseph@codesourcery.com
diff --git a/sysdeps/unix/sysv/linux/arm/Versions b/sysdeps/unix/sysv/linux/arm/Versions index b0e9a4c..a251b0f 100644 --- a/sysdeps/unix/sysv/linux/arm/Versions +++ b/sysdeps/unix/sysv/linux/arm/Versions @@ -10,7 +10,5 @@ libc { GLIBC_PRIVATE { # A copy of sigaction lives in libpthread, and needs these. __default_sa_restorer; __default_rt_sa_restorer; - __default_sa_restorer_v1; __default_rt_sa_restorer_v1; - __default_sa_restorer_v2; __default_rt_sa_restorer_v2; } } diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h index 354f2ca..e755741 100644 --- a/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -17,9 +17,6 @@ License along with the GNU C Library. If not, see <http://www.gnu.org/licenses/>. */ -/* The signal frame layout changed in 2.6.18. */ -#define __ASSUME_SIGFRAME_V2 1 - /* Support for the recvmmsg syscall was added in 2.6.33. */ #if __LINUX_KERNEL_VERSION >= 0x020621 # define __ASSUME_RECVMMSG_SYSCALL 1 diff --git a/sysdeps/unix/sysv/linux/arm/sigaction.c b/sysdeps/unix/sysv/linux/arm/sigaction.c index 21df885..e1d87cb 100644 --- a/sysdeps/unix/sysv/linux/arm/sigaction.c +++ b/sysdeps/unix/sysv/linux/arm/sigaction.c @@ -30,22 +30,8 @@ #define SA_RESTORER 0x04000000 -extern void __default_sa_restorer_v1(void); -extern void __default_sa_restorer_v2(void); -extern void __default_rt_sa_restorer_v1(void); -extern void __default_rt_sa_restorer_v2(void); -#ifdef __ASSUME_SIGFRAME_V2 -# define __default_sa_restorer __default_sa_restorer_v2 -# define __default_rt_sa_restorer __default_rt_sa_restorer_v2 -#else -# include <ldsodefs.h> -# define __default_sa_restorer (GLRO(dl_osversion) >= 0x020612 \ - ? __default_sa_restorer_v2 \ - : __default_sa_restorer_v1) -# define __default_rt_sa_restorer (GLRO(dl_osversion) >= 0x020612 \ - ? __default_rt_sa_restorer_v2 \ - : __default_rt_sa_restorer_v1) -#endif +extern void __default_sa_restorer (void); +extern void __default_rt_sa_restorer (void); /* When RT signals are in use we need to use a different return stub. */ #define choose_restorer(flags) \ diff --git a/sysdeps/unix/sysv/linux/arm/sigrestorer.S b/sysdeps/unix/sysv/linux/arm/sigrestorer.S index 566c04a..e1698d3 100644 --- a/sysdeps/unix/sysv/linux/arm/sigrestorer.S +++ b/sysdeps/unix/sysv/linux/arm/sigrestorer.S @@ -28,10 +28,7 @@ Start the unwind tables at least one instruction before the signal trampoline, because the unwinder will assume we are returning after - a call site. - - Because the signal frame layout changed in 2.6.18, we provide two - copies of these functions with different unwind information. */ + a call site. */ /* Used in ENTRY. */ #undef cfi_startproc @@ -60,58 +57,28 @@ cfi_offset (r14, OFFSET + 14 * 4); \ cfi_offset (r15, OFFSET + 15 * 4) -#ifndef __ASSUME_SIGFRAME_V2 -#define OFFSET 12 - .fnstart - .save {r0-r15} - .pad #OFFSET - nop -ENTRY(__default_sa_restorer_v1) - CFI - mov r7, $SYS_ify(sigreturn) - swi 0x0 - .fnend -END(__default_sa_restorer_v1) -#undef OFFSET -#endif /* __ASSUME_SIGFRAME_V2 */ - #define OFFSET 32 .fnstart .save {r0-r15} .pad #OFFSET nop -ENTRY(__default_sa_restorer_v2) +ENTRY(__default_sa_restorer) CFI mov r7, $SYS_ify(sigreturn) swi 0x0 .fnend -END(__default_sa_restorer_v2) -#undef OFFSET - -#ifndef __ASSUME_SIGFRAME_V2 -#define OFFSET 168 - .fnstart - .save {r0-r15} - .pad #OFFSET - nop -ENTRY(__default_rt_sa_restorer_v1) - CFI - mov r7, $SYS_ify(rt_sigreturn) - swi 0x0 - .fnend -END(__default_rt_sa_restorer_v1) +END(__default_sa_restorer) #undef OFFSET -#endif /* __ASSUME_SIGFRAME_V2 */ #define OFFSET 160 .fnstart .save {r0-r15} .pad #OFFSET nop -ENTRY(__default_rt_sa_restorer_v2) +ENTRY(__default_rt_sa_restorer) CFI mov r7, $SYS_ify(rt_sigreturn) swi 0x0 .fnend -END(__default_rt_sa_restorer_v2) +END(__default_rt_sa_restorer) #undef OFFSET