[all-commits] [llvm/llvm-project] 0c1a13: [libunwind][RISCV] Track PC separately from RA

Amanieu via All-commits all-commits at lists.llvm.org
Sat Jun 13 00:15:56 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 0c1a135adae530b88f68c9425fb85bd8fb9152ca
      https://github.com/llvm/llvm-project/commit/0c1a135adae530b88f68c9425fb85bd8fb9152ca
  Author: Amanieu d'Antras <amanieu at gmail.com>
  Date:   2020-06-13 (Sat, 13 Jun 2020)

  Changed paths:
    M libunwind/src/Registers.hpp
    M libunwind/src/UnwindRegistersRestore.S
    M libunwind/src/UnwindRegistersSave.S

  Log Message:
  -----------
  [libunwind][RISCV] Track PC separately from RA

Summary:
This allows unwinding to work across signal handler frames where the IP of the previous frame is not the same as the current value of the RA register. This is particularly useful for acquiring backtraces from signal handlers.

I kept the size of the context structure the same to avoid ABI breakage; the PC is stored in the previously unused slot for register 0.

Reviewers: #libunwind, mhorne, lenary, luismarques, arichardson, compnerd

Reviewed By: #libunwind, mhorne, lenary, compnerd

Subscribers: kamleshbhalui, jrtc27, bsdjhb, arichardson, compnerd, simoncook, kito-cheng, shiva0217, rogfer01, rkruppe, psnobl, benna, Jim, s.egerton, sameer.abuasal, evandro, llvm-commits, libcxx-commits

Tags: #libunwind, #llvm

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




More information about the All-commits mailing list