https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103525
Nelson Chu <nelsonc1225 at sourceware dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nelsonc1225 at sourceware dot org --- Comment #2 from Nelson Chu <nelsonc1225 at sourceware dot org> --- I think this should be hard to fix in binutils, since the debug info looks wrong in the generated assembly code. I notice that there is a similar pr as follows, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98776 And here should be one of the solution of x86, https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=3dcea658c9e2ac84 The patchable area should be placed before both .cfi_startproc and ENDBR. For example, $ cat tmp.c void main () {} $ riscv64-unknown-linux-gnu-gcc -fpatchable-function-entry=8,3 -S -g tmp.c .text .Ltext0: .cfi_sections .debug_frame .file 0 "/home/nelsonc" "tmp.c" .align 1 .globl main .section __patchable_function_entries,"awo",@progbits,main .align 3 .8byte .LPFE1 .text .LPFE1: nop nop nop .type main, @function main: <------ I think the .LFB0 ~ .cfi_startproc should be moved here --------- nop nop nop nop nop .LFB0: .file 1 "tmp.c" .loc 1 2 1 .cfi_startproc addi sp,sp,-16 If I move the patchable area forward, then the DW_AT_low_pc looks correct.