Hello Dylan!
On 9/5/2025 12:38 AM, Dylan Hatch wrote:
> Use the -Wa,--gsframe flags to build the code, so GAS will generate
> a new .sframe section for the stack trace information.
> Currently, the sframe format only supports arm64 and x86_64
> architectures. Add this configuration on arm64 to enable sframe
> unwinder in the future.
>
> Signed-off-by: Weinan Liu <[email protected]>
> Signed-off-by: Dylan Hatch <[email protected]>
> Reviewed-by: Prasanna Kumar T S M <[email protected]>
> diff --git a/arch/Kconfig b/arch/Kconfig
> @@ -1782,4 +1782,10 @@ config ARCH_WANTS_PRE_LINK_VMLINUX
> config ARCH_HAS_CPU_ATTACK_VECTORS
> bool
>
> +config AS_SFRAME
> + def_bool $(as-instr,.cfi_sections .sframe\n.cfi_startproc\n.cfi_endproc)
As you will soon be requiring SFrame V2 with the new PC-relative FDE
function start address encoding you may want to extend this check as
follows:
config AS_SFRAME
def_bool y
depends on $(as-instr,.cfi_sections
.sframe\n.cfi_startproc\n.cfi_endproc)
depends on $(success,printf "%b\n" ".cfi_sections
.sframe\n.cfi_startproc\n.cfi_endproc" | $(CC) $(CLANG_FLAGS)
-Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o "$$TMP" - && $(OBJDUMP)
--sframe "$$TMP" | grep -q "SFRAME_VERSION_2")
depends on $(success,printf "%b\n" ".cfi_sections
.sframe\n.cfi_startproc\n.cfi_endproc" | $(CC) $(CLANG_FLAGS)
-Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o "$$TMP" - && $(OBJDUMP)
--sframe "$$TMP" | grep -q "SFRAME_F_FDE_FUNC_START_PCREL")
Or you could change it into multiple config options, which might be
overkill:
config AS_SFRAME
def_bool $(as-instr,.cfi_sections .sframe\n.cfi_startproc\n.cfi_endproc)
config AS_SFRAME_V2
def_bool y
depends on AS_SFRAME
depends on $(success,printf "%b\n" ".cfi_sections
.sframe\n.cfi_startproc\n.cfi_endproc" | $(CC) $(CLANG_FLAGS)
-Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o "$$TMP" - && $(OBJDUMP)
--sframe "$$TMP" | grep -q "SFRAME_VERSION_2")
config AS_SFRAME_V2_PCREL_FDE
def_bool y
depends on AS_SFRAME_V2
depends on $(success,printf "%b\n" ".cfi_sections
.sframe\n.cfi_startproc\n.cfi_endproc" | $(CC) $(CLANG_FLAGS)
-Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o "$$TMP" - && $(OBJDUMP)
--sframe "$$TMP" | grep -q "SFRAME_F_FDE_FUNC_START_PCREL")
> +
> +config SFRAME_UNWIND_TABLE
> + bool
> +
> endmenu
Regards,
Jens
--
Jens Remus
Linux on Z Development (D3303)
+49-7031-16-1128 Office
[email protected]
IBM
IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats:
Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft:
Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM Data Privacy Statement: https://www.ibm.com/privacy/