lkml.org 
[lkml]   [2022]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v3 0/4] Add unwinder support
    Date
    This series in order to add stacktrace support, Some upcoming features require
    these changes, like trace, divide unwinder into guess unwinder and prologue
    unwinder is to add new unwinders in the future, eg:unwind_frame, unwind_orc .etc.
    Three stages when we do unwind,
    1) unwind_start(), the prapare of unwinding, fill unwind_state.
    2) unwind_done(), judge whether the unwind process is finished or not.
    3) unwind_next_frame(), unwind the next frame.

    you can test them by:
    1) echo t > /proc/sysrq-trigger
    2) cat /proc/*/stack
    4) ftrace: function graph
    5) uprobe: echo 1 > ./options/userstacktrace

    Changes from v1 to v2:

    - Add the judgment of the offset value of ra in the prologue.
    (Suggested by Youling).
    - Create an inline function to check the sign bit, which is convenient
    for extending other types of immediates. (Suggested by Jinyang).
    - Fix sparse warning :
    arch/loongarch/include/asm/uaccess.h:232:32: sparse: sparse: incorrect
    type in argument 2 (different address spaces) @@ expected void const
    *from @@ got void const [noderef] __user *from @@
    - Add USER_STACKTRACE support as a series.

    Changes from v2 to v3:

    - Move unwind_start definition and use location, remove #ifdef in unwind_state
    and use type instead of enable. (Suggested by Huacai).
    - Separated fixes for uaccess.h. (Suggested by Huacai).

    Qing Zhang (4):
    LoongArch: Add guess unwinder support
    LoongArch: Add prologue unwinder support
    LoongArch: Add stacktrace support
    LoongArch: Add USER_STACKTRACE support

    arch/loongarch/Kconfig | 6 +
    arch/loongarch/Kconfig.debug | 28 ++++
    arch/loongarch/include/asm/inst.h | 52 +++++++
    arch/loongarch/include/asm/processor.h | 9 ++
    arch/loongarch/include/asm/stacktrace.h | 22 +++
    arch/loongarch/include/asm/switch_to.h | 14 +-
    arch/loongarch/include/asm/unwind.h | 47 +++++++
    arch/loongarch/kernel/Makefile | 4 +
    arch/loongarch/kernel/asm-offsets.c | 2 +
    arch/loongarch/kernel/process.c | 64 +++++++++
    arch/loongarch/kernel/stacktrace.c | 78 +++++++++++
    arch/loongarch/kernel/switch.S | 2 +
    arch/loongarch/kernel/traps.c | 24 ++--
    arch/loongarch/kernel/unwind_guess.c | 65 +++++++++
    arch/loongarch/kernel/unwind_prologue.c | 172 ++++++++++++++++++++++++
    15 files changed, 573 insertions(+), 16 deletions(-)
    create mode 100644 arch/loongarch/include/asm/unwind.h
    create mode 100644 arch/loongarch/kernel/stacktrace.c
    create mode 100644 arch/loongarch/kernel/unwind_guess.c
    create mode 100644 arch/loongarch/kernel/unwind_prologue.c

    --
    2.20.1

    \
     
     \ /
      Last update: 2022-08-02 07:39    [W:3.189 / U:0.352 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site