[all-commits] [llvm/llvm-project] 07b9e6: [lldb] Fix handling of cfi_restore in the unwinder

Jaroslav Sevcik via All-commits all-commits at lists.llvm.org
Thu Jun 15 23:03:35 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 07b9e6ed0db206912b99c153a6bcfcb41f792cc5
      https://github.com/llvm/llvm-project/commit/07b9e6ed0db206912b99c153a6bcfcb41f792cc5
  Author: Jaroslav Sevcik <jarin at google.com>
  Date:   2023-06-16 (Fri, 16 Jun 2023)

  Changed paths:
    M lldb/source/Symbol/DWARFCallFrameInfo.cpp
    A lldb/test/Shell/Unwind/Inputs/eh-frame-dwarf-unwind-abort.s
    A lldb/test/Shell/Unwind/eh-frame-dwarf-unwind-abort.test

  Log Message:
  -----------
  [lldb] Fix handling of cfi_restore in the unwinder

Currently, lldb's unwinder ignores cfi_restore opcodes for registers
that are not set in the first row of the unwinding info. This prevents
unwinding of failed assertion in Chrome/v8 (https://github.com/v8/v8).
The attached test is an x64 copy of v8's function that failed to unwind
correctly (V8_Fatal).

This patch changes handling of cfi_restore to reset the location if
the first unwind table row does not map the restored register.

Differential Revision: https://reviews.llvm.org/D153043




More information about the All-commits mailing list