summaryrefslogtreecommitdiffstats
path: root/contrib/libs/libunwind/src/DwarfInstructions.hpp
diff options
context:
space:
mode:
authorthegeorg <[email protected]>2022-02-10 16:45:08 +0300
committerDaniil Cherednik <[email protected]>2022-02-10 16:45:08 +0300
commit4e839db24a3bbc9f1c610c43d6faaaa99824dcca (patch)
tree506dac10f5df94fab310584ee51b24fc5a081c22 /contrib/libs/libunwind/src/DwarfInstructions.hpp
parent2d37894b1b037cf24231090eda8589bbb44fb6fc (diff)
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/libunwind/src/DwarfInstructions.hpp')
-rw-r--r--contrib/libs/libunwind/src/DwarfInstructions.hpp102
1 files changed, 51 insertions, 51 deletions
diff --git a/contrib/libs/libunwind/src/DwarfInstructions.hpp b/contrib/libs/libunwind/src/DwarfInstructions.hpp
index c1a241c55ce..cf00869d30b 100644
--- a/contrib/libs/libunwind/src/DwarfInstructions.hpp
+++ b/contrib/libs/libunwind/src/DwarfInstructions.hpp
@@ -1,4 +1,4 @@
-//===----------------------------------------------------------------------===//
+//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -74,13 +74,13 @@ private:
}
};
-template <typename R>
-auto getSparcWCookie(const R &r, int) -> decltype(r.getWCookie()) {
- return r.getWCookie();
-}
-template <typename R> uint64_t getSparcWCookie(const R &, long) {
- return 0;
-}
+template <typename R>
+auto getSparcWCookie(const R &r, int) -> decltype(r.getWCookie()) {
+ return r.getWCookie();
+}
+template <typename R> uint64_t getSparcWCookie(const R &, long) {
+ return 0;
+}
template <typename A, typename R>
typename A::pint_t DwarfInstructions<A, R>::getSavedRegister(
@@ -90,10 +90,10 @@ typename A::pint_t DwarfInstructions<A, R>::getSavedRegister(
case CFI_Parser<A>::kRegisterInCFA:
return (pint_t)addressSpace.getRegister(cfa + (pint_t)savedReg.value);
- case CFI_Parser<A>::kRegisterInCFADecrypt: // sparc64 specific
- return addressSpace.getP(cfa + (pint_t)savedReg.value) ^
- getSparcWCookie(registers, 0);
-
+ case CFI_Parser<A>::kRegisterInCFADecrypt: // sparc64 specific
+ return addressSpace.getP(cfa + (pint_t)savedReg.value) ^
+ getSparcWCookie(registers, 0);
+
case CFI_Parser<A>::kRegisterAtExpression:
return (pint_t)addressSpace.getRegister(evaluateExpression(
(pint_t)savedReg.value, addressSpace, registers, cfa));
@@ -126,16 +126,16 @@ double DwarfInstructions<A, R>::getSavedFloatRegister(
return addressSpace.getDouble(
evaluateExpression((pint_t)savedReg.value, addressSpace,
registers, cfa));
- case CFI_Parser<A>::kRegisterUndefined:
- return 0.0;
- case CFI_Parser<A>::kRegisterInRegister:
-#ifndef _LIBUNWIND_TARGET_ARM
- return registers.getFloatRegister((int)savedReg.value);
-#endif
+ case CFI_Parser<A>::kRegisterUndefined:
+ return 0.0;
+ case CFI_Parser<A>::kRegisterInRegister:
+#ifndef _LIBUNWIND_TARGET_ARM
+ return registers.getFloatRegister((int)savedReg.value);
+#endif
case CFI_Parser<A>::kRegisterIsExpression:
case CFI_Parser<A>::kRegisterUnused:
case CFI_Parser<A>::kRegisterOffsetFromCFA:
- case CFI_Parser<A>::kRegisterInCFADecrypt:
+ case CFI_Parser<A>::kRegisterInCFADecrypt:
// FIX ME
break;
}
@@ -160,7 +160,7 @@ v128 DwarfInstructions<A, R>::getSavedVectorRegister(
case CFI_Parser<A>::kRegisterUndefined:
case CFI_Parser<A>::kRegisterOffsetFromCFA:
case CFI_Parser<A>::kRegisterInRegister:
- case CFI_Parser<A>::kRegisterInCFADecrypt:
+ case CFI_Parser<A>::kRegisterInCFADecrypt:
// FIX ME
break;
}
@@ -183,16 +183,16 @@ int DwarfInstructions<A, R>::stepWithDwarf(A &addressSpace, pint_t pc,
// restore registers that DWARF says were saved
R newRegisters = registers;
-
- // Typically, the CFA is the stack pointer at the call site in
- // the previous frame. However, there are scenarios in which this is not
- // true. For example, if we switched to a new stack. In that case, the
- // value of the previous SP might be indicated by a CFI directive.
- //
- // We set the SP here to the CFA, allowing for it to be overridden
- // by a CFI directive later on.
- newRegisters.setSP(cfa);
-
+
+ // Typically, the CFA is the stack pointer at the call site in
+ // the previous frame. However, there are scenarios in which this is not
+ // true. For example, if we switched to a new stack. In that case, the
+ // value of the previous SP might be indicated by a CFI directive.
+ //
+ // We set the SP here to the CFA, allowing for it to be overridden
+ // by a CFI directive later on.
+ newRegisters.setSP(cfa);
+
pint_t returnAddress = 0;
const int lastReg = R::lastDwarfRegNum();
assert(static_cast<int>(CFI_Parser<A>::kMaxRegisterNumber) >= lastReg &&
@@ -235,7 +235,7 @@ int DwarfInstructions<A, R>::stepWithDwarf(A &addressSpace, pint_t pc,
// restored. autia1716 is used instead of autia as autia1716 assembles
// to a NOP on pre-v8.3a architectures.
if ((R::getArch() == REGISTERS_ARM64) &&
- prolog.savedRegisters[UNW_AARCH64_RA_SIGN_STATE].value &&
+ prolog.savedRegisters[UNW_AARCH64_RA_SIGN_STATE].value &&
returnAddress != 0) {
#if !defined(_LIBUNWIND_IS_NATIVE_ONLY)
return UNW_ECROSSRASIGNING;
@@ -255,20 +255,20 @@ int DwarfInstructions<A, R>::stepWithDwarf(A &addressSpace, pint_t pc,
}
#endif
-#if defined(_LIBUNWIND_IS_NATIVE_ONLY) && defined(_LIBUNWIND_TARGET_ARM) && \
- defined(__ARM_FEATURE_PAUTH)
- if ((R::getArch() == REGISTERS_ARM) &&
- prolog.savedRegisters[UNW_ARM_RA_AUTH_CODE].value) {
- pint_t pac =
- getSavedRegister(addressSpace, registers, cfa,
- prolog.savedRegisters[UNW_ARM_RA_AUTH_CODE]);
- __asm__ __volatile__("autg %0, %1, %2"
- :
- : "r"(pac), "r"(returnAddress), "r"(cfa)
- :);
- }
-#endif
-
+#if defined(_LIBUNWIND_IS_NATIVE_ONLY) && defined(_LIBUNWIND_TARGET_ARM) && \
+ defined(__ARM_FEATURE_PAUTH)
+ if ((R::getArch() == REGISTERS_ARM) &&
+ prolog.savedRegisters[UNW_ARM_RA_AUTH_CODE].value) {
+ pint_t pac =
+ getSavedRegister(addressSpace, registers, cfa,
+ prolog.savedRegisters[UNW_ARM_RA_AUTH_CODE]);
+ __asm__ __volatile__("autg %0, %1, %2"
+ :
+ : "r"(pac), "r"(returnAddress), "r"(cfa)
+ :);
+ }
+#endif
+
#if defined(_LIBUNWIND_TARGET_SPARC)
if (R::getArch() == REGISTERS_SPARC) {
// Skip call site instruction and delay slot
@@ -279,12 +279,12 @@ int DwarfInstructions<A, R>::stepWithDwarf(A &addressSpace, pint_t pc,
}
#endif
-#if defined(_LIBUNWIND_TARGET_SPARC64)
- // Skip call site instruction and delay slot.
- if (R::getArch() == REGISTERS_SPARC64)
- returnAddress += 8;
-#endif
-
+#if defined(_LIBUNWIND_TARGET_SPARC64)
+ // Skip call site instruction and delay slot.
+ if (R::getArch() == REGISTERS_SPARC64)
+ returnAddress += 8;
+#endif
+
#if defined(_LIBUNWIND_TARGET_PPC64)
#define PPC64_ELFV1_R2_LOAD_INST_ENCODING 0xe8410028u // ld r2,40(r1)
#define PPC64_ELFV1_R2_OFFSET 40