lkml.org 
[lkml]   [2020]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 3/4] ARM: backtrace-clang: give labels more descriptive names
    The style cleanup looks great. I just have one extra thing that
    can probably be thrown into this patch.

    On Thu, Jul 30, 2020 at 3:51 PM Nick Desaulniers
    <ndesaulniers@google.com> wrote:
    >
    > Removes the 1004 label; it was neither a control flow target, nor an
    > instruction we expect to produce a fault.
    >
    > Gives the labels slightly more readable names. The `b` suffixes are
    > handy to disambiguate between labels of the same identifier when there's
    > more than one. Since these labels are unique, let's just give them
    > names.
    >
    > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    > ---
    > arch/arm/lib/backtrace-clang.S | 22 ++++++++++------------
    > 1 file changed, 10 insertions(+), 12 deletions(-)
    >
    > diff --git a/arch/arm/lib/backtrace-clang.S b/arch/arm/lib/backtrace-clang.S
    > index 40eb2215eaf4..7dad2a6843a5 100644
    > --- a/arch/arm/lib/backtrace-clang.S
    > +++ b/arch/arm/lib/backtrace-clang.S
    > @@ -121,8 +121,8 @@ for_each_frame: tst frame, mask @ Check for address exceptions
    > * start. This value gets updated to be the function start later if it is
    > * possible.
    > */
    > -1001: ldr sv_pc, [frame, #4] @ get saved 'pc'
    > -1002: ldr sv_fp, [frame, #0] @ get saved fp
    > +load_pc: ldr sv_pc, [frame, #4] @ get saved 'pc'
    > +load_fp: ldr sv_fp, [frame, #0] @ get saved fp
    >
    > teq sv_fp, mask @ make sure next frame exists
    > beq no_frame
    > @@ -142,7 +142,7 @@ for_each_frame: tst frame, mask @ Check for address exceptions
    > * registers for the current function, but the stacktrace is still printed
    > * properly.
    > */
    > -1003: ldr sv_lr, [sv_fp, #4] @ get saved lr from next frame
    > +load_lr: ldr sv_lr, [sv_fp, #4] @ get saved lr from next frame
    >
    > tst sv_lr, #0 @ If there's no previous lr,
    > beq finished_setup @ we're done.
    > @@ -166,8 +166,7 @@ finished_setup:
    > /*
    > * Print the function (sv_pc) and where it was called from (sv_lr).
    > */
    > -1004: mov r0, sv_pc
    > -
    > + mov r0, sv_pc
    > mov r1, sv_lr
    > mov r2, frame
    > bic r1, r1, mask @ mask PC/LR for the mode
    > @@ -182,7 +181,7 @@ finished_setup:
    > * pointer the comparison will fail and no registers will print. Unwinding will
    > * continue as if there had been no registers stored in this frame.
    > */
    > -1005: ldr r1, [sv_pc, #0] @ if stmfd sp!, {..., fp, lr}
    > +load_stmfd: ldr r1, [sv_pc, #0] @ if stmfd sp!, {..., fp, lr}
    > ldr r3, .Lopcode @ instruction exists,
    > teq r3, r1, lsr #11
    > ldr r0, [frame] @ locals are stored in
    > @@ -201,7 +200,7 @@ finished_setup:
    > mov frame, sv_fp @ above the current frame
    > bhi for_each_frame
    >
    > -1006: adr r0, .Lbad
    > +bad_frame: adr r0, .Lbad
    > mov r1, loglvl
    > mov r2, frame
    > bl printk
    > @@ -216,11 +215,10 @@ bad_lr: mov sv_fp, #0
    > ENDPROC(c_backtrace)
    > .pushsection __ex_table,"a"
    > .align 3
    > - .long 1001b, 1006b
    > - .long 1002b, 1006b
    > - .long 1003b, 1006b
    > - .long 1004b, 1006b
    > - .long 1005b, 1006b
    > + .long load_pc, bad_frame
    > + .long load_fp, bad_frame
    > + .long load_lr, bad_frame
    > + .long load_stmfd, bad_frame

    Load_stmfd should get its own fixup
    handler since it should emit errors about a bad
    pc, not a bad frame pointer.

    > .long prev_call, bad_lr
    > .popsection
    >
    > --
    > 2.28.0.163.g6104cc2f0b6-goog
    >

    \
     
     \ /
      Last update: 2020-08-07 00:40    [W:3.409 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site