test-skeleton.c: Add write_message function

This commit is contained in:
Florian Weimer 2016-06-23 11:00:00 +02:00
parent 4e9bf327ad
commit 14699b6e37
4 changed files with 29 additions and 21 deletions

View File

@ -1,3 +1,11 @@
2016-06-22 Florian Weimer <fweimer@redhat.com>
* test-skeleton.c (write_message): New function.
* malloc/tst-mallocfork2.c (write_message): Remove.
* debug/tst-longjmp_chk2.c (write_indented): New function.
(write_message): Remove.
(stackoverflow_handler): Call write_indented.
2016-06-22 Joseph Myers <joseph@codesourcery.com> 2016-06-22 Joseph Myers <joseph@codesourcery.com>
* sysdeps/i386/fpu/s_nearbyint.S (__nearbyint): Do not mask * sysdeps/i386/fpu/s_nearbyint.S (__nearbyint): Do not mask

View File

@ -12,18 +12,20 @@
#include <sys/resource.h> #include <sys/resource.h>
#include <unistd.h> #include <unistd.h>
static int do_test (void);
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
static jmp_buf mainloop; static jmp_buf mainloop;
static sigset_t mainsigset; static sigset_t mainsigset;
static volatile sig_atomic_t pass; static volatile sig_atomic_t pass;
static void static void
write_message (const char *message) write_indented (const char *str)
{ {
ssize_t unused __attribute__ ((unused));
for (int i = 0; i < pass; ++i) for (int i = 0; i < pass; ++i)
unused = write (STDOUT_FILENO, " ", 1); write_message (" ");
unused = write (STDOUT_FILENO, message, strlen (message)); write_message (str);
} }
static void static void
@ -33,11 +35,10 @@ stackoverflow_handler (int sig)
/* Sanity check to keep test from looping forever (in case the longjmp /* Sanity check to keep test from looping forever (in case the longjmp
chk code is slightly broken). */ chk code is slightly broken). */
pass++; pass++;
assert (pass < 5);
sigaltstack (NULL, &altstack); sigaltstack (NULL, &altstack);
write_message ("in signal handler\n"); write_indented ("in signal handler\n");
if (altstack.ss_flags & SS_ONSTACK) if (altstack.ss_flags & SS_ONSTACK)
write_message ("on alternate stack\n"); write_indented ("on alternate stack\n");
siglongjmp (mainloop, pass); siglongjmp (mainloop, pass);
} }
@ -127,6 +128,3 @@ do_test (void)
return 0; return 0;
} }
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"

View File

@ -44,6 +44,9 @@ enum { malloc_maximum_size = 70000 };
/* How many signals need to be delivered before the test exits. */ /* How many signals need to be delivered before the test exits. */
enum { signal_count = 1000 }; enum { signal_count = 1000 };
static int do_test (void);
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
/* Process ID of the subprocess which sends SIGUSR1 signals. */ /* Process ID of the subprocess which sends SIGUSR1 signals. */
static pid_t sigusr1_sender_pid; static pid_t sigusr1_sender_pid;
@ -56,14 +59,6 @@ static volatile sig_atomic_t sigusr1_received;
progress. Checked by liveness_signal_handler. */ progress. Checked by liveness_signal_handler. */
static volatile sig_atomic_t progress_indicator = 1; static volatile sig_atomic_t progress_indicator = 1;
/* Write the message to standard output. Usable from signal
handlers. */
static void
write_message (const char *str)
{
write (STDOUT_FILENO, str, strlen (str));
}
static void static void
sigusr1_handler (int signo) sigusr1_handler (int signo)
{ {
@ -213,6 +208,3 @@ do_test (void)
return 0; return 0;
} }
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"

View File

@ -115,6 +115,16 @@ xrealloc (void *p, size_t n)
return p; return p;
} }
/* Write a message to standard output. Can be used in signal
handlers. */
static void
__attribute__ ((unused))
write_message (const char *message)
{
ssize_t unused __attribute__ ((unused));
unused = write (STDOUT_FILENO, message, strlen (message));
}
/* List of temporary files. */ /* List of temporary files. */
struct temp_name_list struct temp_name_list
{ {