Messages in this thread | | | From | Nathan Huckleberry <> | Date | Thu, 6 Aug 2020 17:39:33 -0500 | Subject | Re: [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 >
| |