diff options
-rw-r--r-- | libunwind/src/DwarfInstructions.hpp | 25 | ||||
-rw-r--r-- | libunwind/src/assembly.h | 18 | ||||
-rw-r--r-- | libunwind/test/lit.cfg | 3 |
3 files changed, 1 insertions, 45 deletions
diff --git a/libunwind/src/DwarfInstructions.hpp b/libunwind/src/DwarfInstructions.hpp index 4109549..ec70c0a 100644 --- a/libunwind/src/DwarfInstructions.hpp +++ b/libunwind/src/DwarfInstructions.hpp @@ -234,31 +234,6 @@ int DwarfInstructions<A, R>::stepWithDwarf(A &addressSpace, pint_t pc, } #endif -#if defined(_LIBUNWIND_TARGET_PPC64) -#define PPC64_ELFV1_R2_LOAD_INST_ENCODING 0xe8410028u // ld r2,40(r1) -#define PPC64_ELFV1_R2_OFFSET 40 -#define PPC64_ELFV2_R2_LOAD_INST_ENCODING 0xe8410018u // ld r2,24(r1) -#define PPC64_ELFV2_R2_OFFSET 24 - // If the instruction at return address is a TOC (r2) restore, - // then r2 was saved and needs to be restored. - // ELFv2 ABI specifies that the TOC Pointer must be saved at SP + 24, - // while in ELFv1 ABI it is saved at SP + 40. - if (R::getArch() == REGISTERS_PPC64 && returnAddress != 0) { - pint_t sp = newRegisters.getRegister(UNW_REG_SP); - pint_t r2 = 0; - switch (addressSpace.get32(returnAddress)) { - case PPC64_ELFV1_R2_LOAD_INST_ENCODING: - r2 = addressSpace.get64(sp + PPC64_ELFV1_R2_OFFSET); - break; - case PPC64_ELFV2_R2_LOAD_INST_ENCODING: - r2 = addressSpace.get64(sp + PPC64_ELFV2_R2_OFFSET); - break; - } - if (r2) - newRegisters.setRegister(UNW_PPC64_R2, r2); - } -#endif - // Return address is address after call site instruction, so setting IP to // that does simualates a return. newRegisters.setIP(returnAddress); diff --git a/libunwind/src/assembly.h b/libunwind/src/assembly.h index 02ac36d..7806892 100644 --- a/libunwind/src/assembly.h +++ b/libunwind/src/assembly.h @@ -35,20 +35,6 @@ #define SEPARATOR ; #endif -#if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1) -#define PPC64_OPD1 .section .opd,"aw",@progbits SEPARATOR -#define PPC64_OPD2 SEPARATOR \ - .p2align 3 SEPARATOR \ - .quad .Lfunc_begin0 SEPARATOR \ - .quad .TOC.@tocbase SEPARATOR \ - .quad 0 SEPARATOR \ - .text SEPARATOR \ -.Lfunc_begin0: -#else -#define PPC64_OPD1 -#define PPC64_OPD2 -#endif - #define GLUE2(a, b) a ## b #define GLUE(a, b) GLUE2(a, b) #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name) @@ -109,9 +95,7 @@ .globl SYMBOL_NAME(name) SEPARATOR \ EXPORT_SYMBOL(name) SEPARATOR \ SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - PPC64_OPD1 \ - SYMBOL_NAME(name): \ - PPC64_OPD2 + SYMBOL_NAME(name): #define DEFINE_LIBUNWIND_PRIVATE_FUNCTION(name) \ .globl SYMBOL_NAME(name) SEPARATOR \ diff --git a/libunwind/test/lit.cfg b/libunwind/test/lit.cfg index 1d284bd..272bc16 100644 --- a/libunwind/test/lit.cfg +++ b/libunwind/test/lit.cfg @@ -23,9 +23,6 @@ config.suffixes = ['.cpp', '.s'] # test_source_root: The root path where tests are located. config.test_source_root = os.path.dirname(__file__) -# needed to test libunwind with code that throws exceptions -config.enable_exceptions = True - # Infer the libcxx_test_source_root for configuration import. # If libcxx_source_root isn't specified in the config, assume that the libcxx # and libunwind source directories are sibling directories. |