Messages in this thread Patch in this message | | | Date | Thu, 30 Jul 2020 13:51:11 -0700 | Subject | [PATCH 3/4] ARM: backtrace-clang: give labels more descriptive names | From | Nick Desaulniers <> |
| |
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 .long prev_call, bad_lr .popsection -- 2.28.0.163.g6104cc2f0b6-goog
| |