aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2012-10-06 19:26:03 -0700
committerPaul Eggert2012-10-06 19:26:03 -0700
commitc622b48f7894fc904cdc95edff47f2173240f0cf (patch)
tree498fcede7d0dbde0fe60d338198396633ac433dd /src
parent559e479cbb1e1fb88325c90a22f7b7fdb5c3c95b (diff)
downloademacs-c622b48f7894fc904cdc95edff47f2173240f0cf.tar.gz
emacs-c622b48f7894fc904cdc95edff47f2173240f0cf.zip
Improve sys_siglist detection.
* configure.ac (sys_siglist): Look for its decl in <signal.h>. Otherwise, it's not found in either Fedora 17 or Solaris 11. * src/sysdep.c (sys_siglist, init_signals): Use _sys_siglist if it's defined as a macro, as is done in Solaris. (sys_siglist_entries): New macro. (save_strsignal): Use it. * src/syssignal.h (safe_strsignal): Now ATTRIBUTE_CONST, to pacify GCC 4.7.2 on Fedora 17 with the fixed sys_siglist detection.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog10
-rw-r--r--src/sysdep.c18
-rw-r--r--src/syssignal.h2
3 files changed, 25 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b960837eaab..a30dde5e4ea 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
12012-10-07 Paul Eggert <eggert@cs.ucla.edu>
2
3 Improve sys_siglist detection.
4 * sysdep.c (sys_siglist, init_signals): Use _sys_siglist if it's
5 defined as a macro, as is done in Solaris.
6 (sys_siglist_entries): New macro.
7 (save_strsignal): Use it.
8 * syssignal.h (safe_strsignal): Now ATTRIBUTE_CONST, to pacify
9 GCC 4.7.2 on Fedora 17 with the fixed sys_siglist detection.
10
12012-10-06 Jan Djärv <jan.h.d@swipnet.se> 112012-10-06 Jan Djärv <jan.h.d@swipnet.se>
2 12
3 * nsfns.m (Fx_create_frame): Call x_default_parameter with 13 * nsfns.m (Fx_create_frame): Call x_default_parameter with
diff --git a/src/sysdep.c b/src/sysdep.c
index 74617fcaf0f..35beeaa7202 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1545,8 +1545,18 @@ deliver_thread_signal (int sig, signal_handler_t handler)
1545 1545
1546#if !HAVE_DECL_SYS_SIGLIST 1546#if !HAVE_DECL_SYS_SIGLIST
1547# undef sys_siglist 1547# undef sys_siglist
1548# define sys_siglist my_sys_siglist 1548# ifdef _sys_siglist
1549# define sys_siglist _sys_siglist
1550# else
1551# define sys_siglist my_sys_siglist
1549static char const *sys_siglist[NSIG]; 1552static char const *sys_siglist[NSIG];
1553# endif
1554#endif
1555
1556#ifdef _sys_nsig
1557# define sys_siglist_entries _sys_nsig
1558#else
1559# define sys_siglist_entries NSIG
1550#endif 1560#endif
1551 1561
1552/* Handle bus errors, invalid instruction, etc. */ 1562/* Handle bus errors, invalid instruction, etc. */
@@ -1609,7 +1619,7 @@ init_signals (bool dumping)
1609 main_thread = pthread_self (); 1619 main_thread = pthread_self ();
1610#endif 1620#endif
1611 1621
1612#if !HAVE_DECL_SYS_SIGLIST 1622#if !HAVE_DECL_SYS_SIGLIST && !defined _sys_siglist
1613 if (! initialized) 1623 if (! initialized)
1614 { 1624 {
1615 sys_siglist[SIGABRT] = "Aborted"; 1625 sys_siglist[SIGABRT] = "Aborted";
@@ -1757,7 +1767,7 @@ init_signals (bool dumping)
1757 sys_siglist[SIGXFSZ] = "File size limit exceeded"; 1767 sys_siglist[SIGXFSZ] = "File size limit exceeded";
1758# endif 1768# endif
1759 } 1769 }
1760#endif /* !HAVE_DECL_SYS_SIGLIST */ 1770#endif /* !HAVE_DECL_SYS_SIGLIST && !_sys_siglist */
1761 1771
1762 /* Don't alter signal handlers if dumping. On some machines, 1772 /* Don't alter signal handlers if dumping. On some machines,
1763 changing signal handlers sets static data that would make signals 1773 changing signal handlers sets static data that would make signals
@@ -2285,7 +2295,7 @@ safe_strsignal (int code)
2285{ 2295{
2286 char const *signame = 0; 2296 char const *signame = 0;
2287 2297
2288 if (0 <= code && code < NSIG) 2298 if (0 <= code && code < sys_siglist_entries)
2289 signame = sys_siglist[code]; 2299 signame = sys_siglist[code];
2290 if (! signame) 2300 if (! signame)
2291 signame = "Unknown signal"; 2301 signame = "Unknown signal";
diff --git a/src/syssignal.h b/src/syssignal.h
index 83ab19698dd..2bf2f046aa5 100644
--- a/src/syssignal.h
+++ b/src/syssignal.h
@@ -43,7 +43,7 @@ extern sigset_t empty_mask;
43typedef void (*signal_handler_t) (int); 43typedef void (*signal_handler_t) (int);
44 44
45extern void emacs_sigaction_init (struct sigaction *, signal_handler_t); 45extern void emacs_sigaction_init (struct sigaction *, signal_handler_t);
46char const *safe_strsignal (int); 46char const *safe_strsignal (int) ATTRIBUTE_CONST;
47 47
48#if NSIG < NSIG_MINIMUM 48#if NSIG < NSIG_MINIMUM
49# undef NSIG 49# undef NSIG