[PATCH v5 1/2] tests: add signal2name function to libtests

Fei Jie feij.fnst at cn.fujitsu.com
Thu Jun 16 02:42:13 UTC 2016


* tests/tests.h (signal2name): New prototype.
* tests/signal2name.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
---
 tests/Makefile.am   |  1 +
 tests/signal2name.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/tests.h       |  3 +++
 3 files changed, 59 insertions(+)
 create mode 100644 tests/signal2name.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7a029b6..a136e2a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -51,6 +51,7 @@ libtests_a_SOURCES = \
 	print_quoted_string.c \
 	printflags.c \
 	printxval.c \
+	signal2name.c \
 	tail_alloc.c \
 	tests.h \
 	tprintf.c \
diff --git a/tests/signal2name.c b/tests/signal2name.c
new file mode 100644
index 0000000..e301f4e
--- /dev/null
+++ b/tests/signal2name.c
@@ -0,0 +1,55 @@
+#include "tests.h"
+#include <signal.h>
+
+#define CASE(x) case x: return #x
+
+const char *
+signal2name(int sig)
+{
+	switch (sig) {
+	CASE(SIGALRM);
+	CASE(SIGBUS);
+	CASE(SIGCHLD);
+	CASE(SIGCONT);
+	CASE(SIGFPE);
+	CASE(SIGHUP);
+	CASE(SIGILL);
+	CASE(SIGINT);
+	CASE(SIGIO);
+	CASE(SIGPIPE);
+	CASE(SIGPROF);
+	CASE(SIGQUIT);
+	CASE(SIGSEGV);
+	CASE(SIGSYS);
+	CASE(SIGTERM);
+	CASE(SIGTRAP);
+	CASE(SIGTSTP);
+	CASE(SIGTTIN);
+	CASE(SIGTTOU);
+	CASE(SIGURG);
+	CASE(SIGUSR1);
+	CASE(SIGUSR2);
+	CASE(SIGVTALRM);
+	CASE(SIGWINCH);
+	CASE(SIGXCPU);
+	CASE(SIGXFSZ);
+#if defined ALPHA
+	CASE(SIGABRT);
+	CASE(SIGEMT);
+	CASE(SIGINFO);
+#elif defined SPARC || defined SPARC64
+	CASE(SIGABRT);
+	CASE(SIGEMT);
+	CASE(SIGLOST);
+#elif defined MIPS
+	CASE(SIGEMT);
+	CASE(SIGIOT);
+	CASE(SIGPWR);
+#else
+	CASE(SIGABRT);
+	CASE(SIGPWR);
+	CASE(SIGSTKFLT);
+#endif
+	default: perror_msg_and_fail("unknown signal number %d", sig);
+	}
+}
diff --git a/tests/tests.h b/tests/tests.h
index 9f556ae..02d588e 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -93,6 +93,9 @@ void check_overflowgid(const int);
 /* Translate errno to its name. */
 const char *errno2name(void);
 
+/* Translate signal number to its name. */
+const char *signal2name(int);
+
 struct xlat;
 
 /* Print flags in symbolic form according to xlat table. */
-- 
1.8.3.1







More information about the Strace-devel mailing list