Re: [PATCH v5 0/8] Add objtool and orc support for LoongArch

From: Huacai Chen
Date: Sat Dec 02 2023 - 08:53:10 EST


Hi, Tiezhu,

There are still some build warnings.

If FUNCTION_TRACER enabled, we get
AS arch/loongarch/kernel/mcount_dyn.o
arch/loongarch/kernel/mcount_dyn.o: warning: objtool:
ftrace_common+0x0: unreachable instruction
arch/loongarch/kernel/mcount_dyn.o: warning: objtool:
ftrace_caller+0x0: unreachable instruction
arch/loongarch/kernel/mcount_dyn.o: warning: objtool:
ftrace_regs_caller+0x0: unreachable instruction
arch/loongarch/kernel/mcount_dyn.o: warning: objtool:
ftrace_graph_caller+0x0: unreachable instruction
arch/loongarch/kernel/mcount_dyn.o: warning: objtool:
return_to_handler+0x0: unreachable instruction
arch/loongarch/kernel/mcount_dyn.o: warning: objtool:
ftrace_stub_direct_tramp+0x0: unreachable instruction

AS arch/loongarch/kernel/rethook_trampoline.o
arch/loongarch/kernel/rethook_trampoline.o: warning: objtool:
arch_rethook_trampoline+0x0: unreachable instruction

And when I use the latest binutils/gcc for native build, there are
some warnings in some files from the {init, kernel} directory. But
cross-building is fine, I don't know why.

Huacai

On Wed, Nov 29, 2023 at 9:07 PM Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> wrote:
>
> This version is based on 6.7-rc3, tested with the latest upstream
> gcc and binutils (20231127).
>
> v5:
> -- Fix the partial backtrace about irq stack
> -- Check on_stack() again after get_stack_info()
> -- Silence the orc warning about handle_syscall
> -- Silence the objtool warnings if CONFIG_CPU_HAS_LBT=y
> -- Update the commit message about objdump and readelf info
>
> Tiezhu Yang (8):
> objtool/LoongArch: Enable objtool to be built
> objtool/LoongArch: Implement instruction decoder
> objtool/x86: Separate arch-specific and generic parts
> objtool/LoongArch: Enable orc to be built
> objtool: Check local label about sibling call
> objtool: Check local label in add_dead_ends()
> objtool: Check local label in read_unwind_hints()
> LoongArch: Add ORC stack unwinder support
>
> arch/loongarch/Kconfig | 2 +
> arch/loongarch/Kconfig.debug | 11 +
> arch/loongarch/Makefile | 19 +
> arch/loongarch/include/asm/Kbuild | 2 +
> arch/loongarch/include/asm/bug.h | 1 +
> arch/loongarch/include/asm/exception.h | 2 +
> arch/loongarch/include/asm/module.h | 7 +
> arch/loongarch/include/asm/orc_header.h | 18 +
> arch/loongarch/include/asm/orc_lookup.h | 31 ++
> arch/loongarch/include/asm/orc_types.h | 58 ++
> arch/loongarch/include/asm/stackframe.h | 3 +
> arch/loongarch/include/asm/unwind.h | 19 +-
> arch/loongarch/include/asm/unwind_hints.h | 28 +
> arch/loongarch/kernel/Makefile | 4 +
> arch/loongarch/kernel/entry.S | 6 +-
> arch/loongarch/kernel/fpu.S | 7 +
> arch/loongarch/kernel/genex.S | 6 +-
> arch/loongarch/kernel/lbt.S | 5 +
> arch/loongarch/kernel/module.c | 22 +-
> arch/loongarch/kernel/relocate_kernel.S | 2 +
> arch/loongarch/kernel/setup.c | 2 +
> arch/loongarch/kernel/stacktrace.c | 1 +
> arch/loongarch/kernel/traps.c | 42 +-
> arch/loongarch/kernel/unwind_orc.c | 516 ++++++++++++++++++
> arch/loongarch/kernel/vmlinux.lds.S | 3 +
> arch/loongarch/kvm/switch.S | 7 +-
> arch/loongarch/lib/Makefile | 2 +
> arch/loongarch/mm/tlb.c | 27 +-
> arch/loongarch/mm/tlbex.S | 9 +
> arch/loongarch/vdso/Makefile | 1 +
> include/linux/compiler.h | 9 +
> scripts/Makefile | 7 +-
> tools/arch/loongarch/include/asm/inst.h | 161 ++++++
> tools/arch/loongarch/include/asm/orc_types.h | 58 ++
> tools/include/linux/bitops.h | 11 +
> tools/objtool/Makefile | 4 +
> tools/objtool/arch/loongarch/Build | 3 +
> tools/objtool/arch/loongarch/decode.c | 356 ++++++++++++
> .../arch/loongarch/include/arch/cfi_regs.h | 22 +
> .../objtool/arch/loongarch/include/arch/elf.h | 30 +
> .../arch/loongarch/include/arch/special.h | 33 ++
> tools/objtool/arch/loongarch/orc.c | 171 ++++++
> tools/objtool/arch/loongarch/special.c | 15 +
> tools/objtool/arch/x86/Build | 1 +
> tools/objtool/arch/x86/orc.c | 188 +++++++
> tools/objtool/check.c | 117 ++--
> tools/objtool/include/objtool/elf.h | 1 +
> tools/objtool/include/objtool/orc.h | 14 +
> tools/objtool/orc_dump.c | 69 +--
> tools/objtool/orc_gen.c | 113 +---
> 50 files changed, 1983 insertions(+), 263 deletions(-)
> create mode 100644 arch/loongarch/include/asm/orc_header.h
> create mode 100644 arch/loongarch/include/asm/orc_lookup.h
> create mode 100644 arch/loongarch/include/asm/orc_types.h
> create mode 100644 arch/loongarch/include/asm/unwind_hints.h
> create mode 100644 arch/loongarch/kernel/unwind_orc.c
> create mode 100644 tools/arch/loongarch/include/asm/inst.h
> create mode 100644 tools/arch/loongarch/include/asm/orc_types.h
> create mode 100644 tools/objtool/arch/loongarch/Build
> create mode 100644 tools/objtool/arch/loongarch/decode.c
> create mode 100644 tools/objtool/arch/loongarch/include/arch/cfi_regs.h
> create mode 100644 tools/objtool/arch/loongarch/include/arch/elf.h
> create mode 100644 tools/objtool/arch/loongarch/include/arch/special.h
> create mode 100644 tools/objtool/arch/loongarch/orc.c
> create mode 100644 tools/objtool/arch/loongarch/special.c
> create mode 100644 tools/objtool/arch/x86/orc.c
> create mode 100644 tools/objtool/include/objtool/orc.h
>
> --
> 2.42.0
>
>