aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libunwind/src/DwarfInstructions.hpp25
-rw-r--r--libunwind/src/assembly.h18
-rw-r--r--libunwind/test/lit.cfg3
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.