From e54b1a92ac4c2b5f14c7fa9746dd4ee23e522542 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Tue, 28 May 2019 17:27:51 +0000 Subject: [PATCH] Remove pre-Solaris 11/SPARC unwinding support * config/sparc/sol2-unwind.h [__arch64__] (sparc64_is_sighandler): Remove Solaris 9 and 10 support. (sparc_is_sighandler): Likewise. From-SVN: r271715 --- libgcc/ChangeLog | 6 ++ libgcc/config/sparc/sol2-unwind.h | 92 +------------------------------ 2 files changed, 8 insertions(+), 90 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index a8cf706cd27..316c203565e 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,9 @@ +2019-05-28 Rainer Orth + + * config/sparc/sol2-unwind.h [__arch64__] (sparc64_is_sighandler): + Remove Solaris 9 and 10 support. + (sparc_is_sighandler): Likewise. + 2019-05-26 John David Anglin * config/pa/linux-unwind.h (pa32_fallback_frame_state): Add cast. diff --git a/libgcc/config/sparc/sol2-unwind.h b/libgcc/config/sparc/sol2-unwind.h index 8f2309e23e6..f32cc551b88 100644 --- a/libgcc/config/sparc/sol2-unwind.h +++ b/libgcc/config/sparc/sol2-unwind.h @@ -67,51 +67,7 @@ sparc64_is_sighandler (unsigned int *pc, void *cfa, int *nframes) libc.so.1: : mov %i1, %o1 - : call __sighndlr - - This is the same setup as for Solaris 10, see below. */ - *nframes = 3; - - else if (cuh_pattern == 0xd25fa7ef) - { - /* This matches the call_user_handler pattern in Solaris 10 - libc.so.1: - - : ldx [ %fp + 0x7ef ], %o1 - : call __sighndlr - - There are 2 cases so we look for the return address of the - caller's caller frame in order to do more pattern matching. */ - unsigned long sah_address = *(unsigned long *)(cfa + 176 + 15*8); - - if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) - /* We need to move up three frames: - - <-- context->cfa - __sighndlr - call_user_handler - sigacthandler - */ - *nframes = 3; - else - /* The sigacthandler frame isn't present in the chain. - We need to move up two frames: - - <-- context->cfa - __sighndlr - call_user_handler - */ - *nframes = 2; - } - - else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) - /* This matches the call_user_handler pattern in Solaris 9 - libthread.so.1: - - : mov %i2, %o2 - : call __sighndlr - - This is the same setup as for Solaris 10, see above. */ + : call __sighndlr */ *nframes = 3; return 1; @@ -184,51 +140,7 @@ sparc_is_sighandler (unsigned int *pc, void *cfa, int *nframes) libc.so.1: : mov %i1, %o1 - : call __sighndlr - - This is the same setup as for Solaris 10, see below. */ - *nframes = 3; - - else if (cuh_pattern == 0xd407a04c) - { - /* This matches the call_user_handler pattern in Solaris 10 - libc.so.1: - - : ld [ %fp + 0x4c ], %o2 - : call __sighndlr - - There are 2 cases so we look for the return address of the - caller's caller frame in order to do more pattern matching. */ - unsigned int sah_address = *(unsigned int *)(cfa + 96 + 15*4); - - if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) - /* We need to move up three frames: - - <-- context->cfa - __sighndlr - call_user_handler - sigacthandler - */ - *nframes = 3; - else - /* The sigacthandler frame isn't present in the chain. - We need to move up two frames: - - <-- context->cfa - __sighndlr - call_user_handler - */ - *nframes = 2; - } - - else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) - /* This matches the call_user_handler pattern in Solaris 9 - libthread.so.1: - - : mov %i2, %o2 - : call __sighndlr - - This is the same setup as for Solaris 10, see above. */ + : call __sighndlr */ *nframes = 3; return 1;