You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
diff --git glibc-2.17-c758a686/nptl/tst-cleanup2.c glibc-2.17-c758a686/nptl/tst-cleanup2.c
|
|
|
|
index 5bd1609..65af0f2 100644
|
|
|
|
--- glibc-2.17-c758a686/nptl/tst-cleanup2.c
|
|
|
|
+++ glibc-2.17-c758a686/nptl/tst-cleanup2.c
|
|
|
|
@@ -34,6 +34,12 @@ static int
|
|
|
|
do_test (void)
|
|
|
|
{
|
|
|
|
char *p = NULL;
|
|
|
|
+ /* gcc can overwrite the success written value by scheduling instructions
|
|
|
|
+ around sprintf. It is allowed to do this since according to C99 the first
|
|
|
|
+ argument of sprintf is a character array and NULL is not a valid character
|
|
|
|
+ array. Mark the return value as volatile so that it gets reloaded on
|
|
|
|
+ return. */
|
|
|
|
+ volatile int ret = 0;
|
|
|
|
struct sigaction sa;
|
|
|
|
|
|
|
|
sa.sa_handler = sig_handler;
|
|
|
|
@@ -50,7 +56,7 @@ do_test (void)
|
|
|
|
if (setjmp (jmpbuf))
|
|
|
|
{
|
|
|
|
puts ("Exiting main...");
|
|
|
|
- return 0;
|
|
|
|
+ return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
sprintf (p, "This should segv\n");
|