Author: lukecheeseman Date: Mon Sep 24 09:36:33 2018 New Revision: 342901 URL: http://llvm.org/viewvc/llvm-project?rev=342901&view=rev Log: Reverting r342895
- The used builtins do not compile for pre arm v8.3a targets with gcc Modified: libunwind/trunk/include/libunwind.h libunwind/trunk/src/DwarfInstructions.hpp libunwind/trunk/src/DwarfParser.hpp libunwind/trunk/src/Registers.hpp libunwind/trunk/src/dwarf2.h Modified: libunwind/trunk/include/libunwind.h URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/include/libunwind.h?rev=342901&r1=342900&r2=342901&view=diff ============================================================================== --- libunwind/trunk/include/libunwind.h (original) +++ libunwind/trunk/include/libunwind.h Mon Sep 24 09:36:33 2018 @@ -57,9 +57,6 @@ enum { UNW_EINVAL = -6547, /* unsupported operation or bad value */ UNW_EBADVERSION = -6548, /* unwind info has unsupported version */ UNW_ENOINFO = -6549 /* no unwind info found */ -#if defined(_LIBUNWIND_TARGET_AARCH64) && !defined(_LIBUNWIND_IS_NATIVE_ONLY) - , UNW_ECROSSRASIGNING = -6550 /* cross unwind with return address signing */ -#endif }; struct unw_context_t { @@ -550,8 +547,6 @@ enum { UNW_ARM64_X31 = 31, UNW_ARM64_SP = 31, // reserved block - UNW_ARM64_RA_SIGN_STATE = 34, - // reserved block UNW_ARM64_D0 = 64, UNW_ARM64_D1 = 65, UNW_ARM64_D2 = 66, Modified: libunwind/trunk/src/DwarfInstructions.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/DwarfInstructions.hpp?rev=342901&r1=342900&r2=342901&view=diff ============================================================================== --- libunwind/trunk/src/DwarfInstructions.hpp (original) +++ libunwind/trunk/src/DwarfInstructions.hpp Mon Sep 24 09:36:33 2018 @@ -198,24 +198,6 @@ int DwarfInstructions<A, R>::stepWithDwa // restoring SP means setting it to CFA. newRegisters.setSP(cfa); -#if defined(_LIBUNWIND_TARGET_AARCH64) - // If the target is aarch64 then the return address may have been signed - // using the v8.3 pointer authentication extensions. The original - // return address needs to be authenticated before the return address is - // restored. autia1716 is used instead of autia as autia1716 assembles - // to a NOP on pre-v8.3a architectures. - if (prolog.savedRegisters[UNW_ARM64_RA_SIGN_STATE].value) { -#if !defined(_LIBUNWIND_IS_NATIVE_ONLY) - return UNW_ECROSSRASIGNING; -#else - register unsigned long long x17 __asm("x17") = returnAddress; - register unsigned long long x16 __asm("x16") = cfa; - asm("autia1716": "+r"(x17): "r"(x16)); - returnAddress = x17; -#endif - } -#endif - // Return address is address after call site instruction, so setting IP to // that does simualates a return. newRegisters.setIP(returnAddress); Modified: libunwind/trunk/src/DwarfParser.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/DwarfParser.hpp?rev=342901&r1=342900&r2=342901&view=diff ============================================================================== --- libunwind/trunk/src/DwarfParser.hpp (original) +++ libunwind/trunk/src/DwarfParser.hpp Mon Sep 24 09:36:33 2018 @@ -666,14 +666,6 @@ bool CFI_Parser<A>::parseInstructions(A _LIBUNWIND_TRACE_DWARF( "DW_CFA_GNU_negative_offset_extended(%" PRId64 ")\n", offset); break; - -#if defined(_LIBUNWIND_TARGET_AARCH64) - case DW_CFA_AARCH64_negate_ra_state: - results->savedRegisters[UNW_ARM64_RA_SIGN_STATE].value ^= 0x1; - _LIBUNWIND_TRACE_DWARF("DW_CFA_AARCH64_negate_ra_state\n"); - break; -#endif - default: operand = opcode & 0x3F; switch (opcode & 0xC0) { Modified: libunwind/trunk/src/Registers.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/Registers.hpp?rev=342901&r1=342900&r2=342901&view=diff ============================================================================== --- libunwind/trunk/src/Registers.hpp (original) +++ libunwind/trunk/src/Registers.hpp Mon Sep 24 09:36:33 2018 @@ -1786,7 +1786,7 @@ private: uint64_t __lr; // Link register x30 uint64_t __sp; // Stack pointer x31 uint64_t __pc; // Program counter - uint64_t __ra_sign_state; // RA sign state register + uint64_t padding; // 16-byte align }; GPRs _registers; @@ -1822,8 +1822,6 @@ inline bool Registers_arm64::validRegist return false; if (regNum > 95) return false; - if (regNum == UNW_ARM64_RA_SIGN_STATE) - return true; if ((regNum > 31) && (regNum < 64)) return false; return true; @@ -1834,11 +1832,8 @@ inline uint64_t Registers_arm64::getRegi return _registers.__pc; if (regNum == UNW_REG_SP) return _registers.__sp; - if (regNum == UNW_ARM64_RA_SIGN_STATE) - return _registers.__ra_sign_state; if ((regNum >= 0) && (regNum < 32)) return _registers.__x[regNum]; - _LIBUNWIND_ABORT("unsupported arm64 register"); } @@ -1847,8 +1842,6 @@ inline void Registers_arm64::setRegister _registers.__pc = value; else if (regNum == UNW_REG_SP) _registers.__sp = value; - else if (regNum == UNW_ARM64_RA_SIGN_STATE) - _registers.__ra_sign_state = value; else if ((regNum >= 0) && (regNum < 32)) _registers.__x[regNum] = value; else Modified: libunwind/trunk/src/dwarf2.h URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/dwarf2.h?rev=342901&r1=342900&r2=342901&view=diff ============================================================================== --- libunwind/trunk/src/dwarf2.h (original) +++ libunwind/trunk/src/dwarf2.h Mon Sep 24 09:36:33 2018 @@ -49,10 +49,7 @@ enum { // GNU extensions DW_CFA_GNU_window_save = 0x2D, DW_CFA_GNU_args_size = 0x2E, - DW_CFA_GNU_negative_offset_extended = 0x2F, - - // AARCH64 extensions - DW_CFA_AARCH64_negate_ra_state = 0x2D + DW_CFA_GNU_negative_offset_extended = 0x2F }; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits