https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120881
Bug ID: 120881 Summary: [16 Regression] -fstack-protector-all -pg doesn't call mount at function entry Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: gcov-profile Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com Target Milestone: --- [hjl@gnu-zen4-1 gcc]$ cat /tmp/x.c __attribute__ ((weak)) __attribute__ ((noinline, noclone)) void f1 (void) { } __attribute__ ((weak)) __attribute__ ((noinline, noclone)) void f2 (void) { f1 (); asm volatile (""); } __attribute__ ((weak)) __attribute__ ((noinline, noclone)) void f3 (int count) { for (int i = 0; i < count; ++i) { f1 (); f2 (); } } int main (void) { f3 (1000); return 0; } [hjl@gnu-zen4-1 gcc]$ ./xgcc -B./ -fstack-protector-all -O2 -pg /tmp/x.c -S [hjl@gnu-zen4-1 gcc]$ cat x.s .file "x.c" .text .p2align 4 .weak f1 .type f1, @function f1: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $16, %rsp 1: call mcount movq %fs:40, %rax movq %rax, -8(%rbp) xorl %eax, %eax movq -8(%rbp), %rax subq %fs:40, %rax jne .L4 leave .cfi_remember_state .cfi_def_cfa 7, 8 ret .L4: .cfi_restore_state call __stack_chk_fail .cfi_endproc .LFE0: .size f1, .-f1 .p2align 4 .weak f2 .type f2, @function f2: .LFB1: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $16, %rsp 1: call mcount movq %fs:40, %rax movq %rax, -8(%rbp) xorl %eax, %eax call f1 movq -8(%rbp), %rax subq %fs:40, %rax jne .L7 leave .cfi_remember_state .cfi_def_cfa 7, 8 ret .L7: .cfi_restore_state call __stack_chk_fail .cfi_endproc .LFE1: .size f2, .-f2 .p2align 4 .weak f3 .type f3, @function f3: .LFB2: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $32, %rsp movq %r12, -8(%rbp) .cfi_offset 12, -24 movq %fs:40, %r12 movq %r12, -24(%rbp) movl %edi, %r12d testl %r12d, %r12d jle .L8 movq %rbx, -16(%rbp) .cfi_offset 3, -32 xorl %ebx, %ebx .p2align 4 .p2align 3 .L10: call f1 addl $1, %ebx call f2 cmpl %ebx, %r12d jne .L10 movq -16(%rbp), %rbx .cfi_restore 3 .L8: movq -24(%rbp), %rax subq %fs:40, %rax jne .L13 movq -8(%rbp), %r12 leave .cfi_remember_state .cfi_def_cfa 7, 8 ret .L13: .cfi_restore_state movq %rbx, -16(%rbp) .cfi_offset 3, -32 1: call mcount <<<<<<<<<< Isn't at the function entry. call __stack_chk_fail .cfi_endproc .LFE2: .size f3, .-f3 .section .text.startup,"ax",@progbits .p2align 4 .globl main .type main, @function main: .LFB3: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $16, %rsp 1: call mcount movq %fs:40, %rdi movq %rdi, -8(%rbp) movl $1000, %edi call f3 movq -8(%rbp), %rax subq %fs:40, %rax jne .L16 leave .cfi_remember_state .cfi_def_cfa 7, 8 xorl %eax, %eax ret .L16: .cfi_restore_state call __stack_chk_fail .cfi_endproc .LFE3: .size main, .-main .ident "GCC: (GNU) 16.0.0 20250629 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-zen4-1 gcc]$