Bug 106288 - stack protector fails to check stack canary for noreturn function
Summary: stack protector fails to check stack canary for noreturn function
Status: RESOLVED DUPLICATE of bug 58245
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 13.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-07-13 22:47 UTC by H.J. Lu
Modified: 2022-07-13 22:49 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2022-07-13 22:47:26 UTC
[hjl@gnu-tgl-3 stack-protector]$ cat x.c
extern void foo (void) __attribute__ ((noreturn));

void
bar (void)
{
  foo ();
}
[hjl@gnu-tgl-3 stack-protector]$ /export/build/gnu/tools-build/gcc-gitlab-debug/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/tools-build/gcc-gitlab-debug/build-x86_64-linux/gcc/ -O2 -Wall -fstack-protector-all -S x.c
[hjl@gnu-tgl-3 stack-protector]$ cat x.s
	.file	"x.c"
	.text
	.p2align 4
	.globl	bar
	.type	bar, @function
bar:
.LFB0:
	.cfi_startproc
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	call	foo
	.cfi_endproc
.LFE0:
	.size	bar, .-bar
	.ident	"GCC: (GNU) 13.0.0 20220713 (experimental)"
	.section	.note.GNU-stack,"",@progbits
[hjl@gnu-tgl-3 stack-protector]$ 

There should be a stack canary check before calling foo since foo won't return.
Comment 1 Andrew Pinski 2022-07-13 22:49:27 UTC
Dup of bug 58245.

*** This bug has been marked as a duplicate of bug 58245 ***