From unknown Mon Jun 23 13:07:47 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#12327 <12327@debbugs.gnu.org> To: bug#12327 <12327@debbugs.gnu.org> Subject: Status: Signal-handler cleanup for Emacs Reply-To: bug#12327 <12327@debbugs.gnu.org> Date: Mon, 23 Jun 2025 20:07:47 +0000 retitle 12327 Signal-handler cleanup for Emacs reassign 12327 emacs submitter 12327 Paul Eggert severity 12327 normal tag 12327 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 01 18:40:08 2012 Received: (at submit) by debbugs.gnu.org; 1 Sep 2012 22:40:08 +0000 Received: from localhost ([127.0.0.1]:33337 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T7wMC-00035s-1v for submit@debbugs.gnu.org; Sat, 01 Sep 2012 18:40:07 -0400 Received: from eggs.gnu.org ([208.118.235.92]:38275) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T7wM5-00035i-Us for submit@debbugs.gnu.org; Sat, 01 Sep 2012 18:39:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T7wKg-0006th-E2 for submit@debbugs.gnu.org; Sat, 01 Sep 2012 18:38:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:34285) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7wKg-0006td-9j for submit@debbugs.gnu.org; Sat, 01 Sep 2012 18:38:26 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55640) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7wKc-0000Cs-AT for bug-gnu-emacs@gnu.org; Sat, 01 Sep 2012 18:38:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T7wKX-0006so-QZ for bug-gnu-emacs@gnu.org; Sat, 01 Sep 2012 18:38:22 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:39786) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7wKX-0006sd-5q; Sat, 01 Sep 2012 18:38:17 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 9FB75A60006; Sat, 1 Sep 2012 15:38:16 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1m893B89r+LV; Sat, 1 Sep 2012 15:38:13 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id C5F4AA6000D; Sat, 1 Sep 2012 15:38:12 -0700 (PDT) Message-ID: <50428E57.8070708@cs.ucla.edu> Date: Sat, 01 Sep 2012 15:38:15 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: Signal-handler cleanup for Emacs Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit Cc: Juanma Barranquero , Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) Tags: patch Here's a patch to clean up Emacs's signal-handling code somewhat. As described below, it shrinks the size of Emacs's text segment by 0.6% on my platform. It also removes a few dozen lines from the source code. This patch affects only the mainline code. Some tweaks will be needed to the Windows port, which will need to define the functions 'sighandler' and 'set_sighandler'; these are specialized replacements for 'sys_signal' that avoid the overhead of setting/getting when it's not needed. I'm planning to install this into the trunk and am publishing it now as a head-up for the Windows side. === modified file 'ChangeLog' --- ChangeLog 2012-09-01 18:54:38 +0000 +++ ChangeLog 2012-09-01 21:51:42 +0000 @@ -1,5 +1,10 @@ 2012-09-01 Paul Eggert + Signal-handler cleanup. + * configure.ac (PTY_OPEN, PTY_TTY_NAME_SPRINTF): + Adjust to syssignal.h changes. + (SIGNAL_H_AB): Remove; no longer needed. + * configure.ac (_FORTIFY_SOURCE): Define only when optimizing. This ports to glibc 2.15 or later, when configured with --enable-gcc-warnings. See Eric Blake in === modified file 'configure.ac' --- configure.ac 2012-09-01 18:54:38 +0000 +++ configure.ac 2012-09-01 21:37:48 +0000 @@ -3445,7 +3445,7 @@ cygwin ) AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)]) dnl multi-line AC_DEFINEs are hard. :( - AC_DEFINE(PTY_OPEN, [ do { int dummy; SIGMASKTYPE mask; mask = sigblock (sigmask (SIGCHLD)); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; sigsetmask (mask); if (fd >= 0) emacs_close (dummy); } while (0)]) + AC_DEFINE(PTY_OPEN, [ do { int dummy; sigset_t mask; get_sigmask_block_signal (SIGCHLD, &mask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; set_signal_mask (&mask); if (fd >= 0) emacs_close (dummy); } while (0)]) AC_DEFINE(PTY_NAME_SPRINTF, []) AC_DEFINE(PTY_TTY_NAME_SPRINTF, []) ;; @@ -3474,7 +3474,7 @@ AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)]) dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD dnl to prevent sigchld_handler from intercepting the child's death. - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname; sigblock (sigmask (SIGCHLD)); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { sigunblock (sigmask (SIGCHLD)); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); sigunblock (sigmask (SIGCHLD)); }]) + AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname; block_signal (SIGCHLD); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { unblock_signal (SIGCHLD); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); unblock_signal (SIGCHLD); }]) dnl if HAVE_POSIX_OPENPT if test "x$ac_cv_func_posix_openpt" = xyes; then AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_NOCTTY)]) @@ -3525,12 +3525,12 @@ dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler() dnl from intercepting that death. If any child but grantpt's should die dnl within, it should be caught after sigrelse(2). - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock (sigmask (SIGCLD)); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } sigunblock (sigmask (SIGCLD)); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }]) + AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; block_signal (SIGCLD); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } unblock_signal (SIGCLD); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }]) ;; unixware ) dnl Comments are as per sol2*. - AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock(sigmask(SIGCLD)); if (grantpt(fd) == -1) fatal("could not grant slave pty"); sigunblock(sigmask(SIGCLD)); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }]) + AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; block_signal (SIGCLD); if (grantpt(fd) == -1) fatal("could not grant slave pty"); unblock_signal (SIGCLD); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }]) ;; esac @@ -3806,13 +3806,6 @@ AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on some systems, where it requires time.h.]) ;; - - netbsd | openbsd ) - dnl Greg A. Woods says we must include signal.h - dnl before syssignal.h is included, to work around interface conflicts - dnl that are handled with CPP __RENAME() macro in signal.h. - AC_DEFINE(SIGNAL_H_AHB, 1, [Define if AH_BOTTOM should include signal.h.]) - ;; esac === modified file 'src/ChangeLog' --- src/ChangeLog 2012-09-01 13:54:27 +0000 +++ src/ChangeLog 2012-09-01 21:50:12 +0000 @@ -1,3 +1,66 @@ +2012-09-01 Paul Eggert + + Signal-handler cleanup. + Emacs's signal handlers were written in the old 4.2BSD style with + sigblock and sigmask and so forth, and this led to some + inefficiencies and confusion. Rewrite these to use + pthread_sigmask etc. without copying signal sets around. Also, + get rid of the confusing macros 'SIGNAL_THREAD_CHECK' and + 'signal', and instead use functions that do not attempt to take + over the system name space. This patch causes Emacs's text + segment to shrink by 0.6% on my platform, Fedora 17 x86-64. + * alloc.c, emacsgtkfixed.c, nsfns.m, widget.c, xmenu.c: + Do not include or "syssignal.h", as these + modules do not use signals. + * atimer.c, callproc.c, data.c, dispnew.c, emacs.c, floatfns.c: + * gtkutil.c, keyboard.c, process.c, sound.c, sysdep.c, term.c, xterm.c: + Do not include , as "syssignal.h" does that for us now. + * callproc.c (Fcall_process) [HAVE_WORKING_VFORK]: + Use new get_sigmask_block_signal and set_sigmask functions instead + of repeating the code inline. + * conf_post.h [SIGNAL_H_AHB]: Do not include ; + no longer needed here. + * emacs.c (main): Use new sighandler function, so that there's + no need to block and unblock SIGHUP. + * sysdep.c (SYSSIGNAL_INLINE): New macro. + (empty_mask): Remove. All uses replaced to create their own + masks, as this avoids static storage and offers the compiler more + optimization opportunities. + (sighandler, get_set_sighandler, set_sighandler) [!WINDOWSNT]: + New functions. All users of 'signal' modified to use sighandler + if they're readonly, to set_sighandler if they're writeonly, and to + sys_signal if they're read+write. + (sys_signal): Reimplement in terms of get_set_sighandler. + (sys_sigmask) [!__GNUC__]: Remove; no longer needed. + (sys_sigblock): Remove; replaced by block_signal and + get_sigmask_block_signal. All uses changed. + (sys_sigunblock): Remove; replaced by unblock_signal. All uses changed. + (sys_sigsetmask): Remove; replaced by set_sigmask. All uses changed. + * syssignal.h: Include , since we need its types, + and since we need bool. + (SIGMASKTYPE): Remove. All uses replaced by its definiens, sigset_t. + (SIGEMPTYMASK, empty_mask): Remove as described above. + (sigmask, sys_sigmask): Remove; no longer needed. + (sigpause): Remove. All uses replaced by its definiens, sigsuspend. + (sigblock): Remove. All uses replaced by block_signal. + (sigunblock): Remove. All uses replaced by unblock_signal. + (sigsetmask) [!defined sigsetmask]: Remove. All uses replaced by + set_sigmask. + (signal): Remove. All uses replaced by sighandler, set_sighandler, + or sys_signal as described above. + (init_signals): Now ATTRIBUTE_CONST in the usual case. + (get_sigmask_block_signal, block_signal, unblock_signal, set_sigmask): + New functions. + (sigfree): Reimplement in terms of set_sigmask. + (sighandler, set_sighandler): New decls. + (sys_sigblock, sys_sigunblock, sys_sigsetmask): Remove decls. + (sys_sigdel): Remove; unused. + (NSIG): Remove a FIXME; the code's fine. Remove an unnecessary ifdef. + (forwarded_signal): Rename from SIGNAL_THREAD_CHECK, and turn into + a boolean function. This is cleaner, because the caller can now + see that the check might immediately return from the caller. + All uses changed. + 2012-09-01 Eli Zaretskii * w32uniscribe.c (uniscribe_shape): Handle correctly the case of === modified file 'src/alloc.c' --- src/alloc.c 2012-08-31 10:53:19 +0000 +++ src/alloc.c 2012-09-01 21:37:07 +0000 @@ -26,8 +26,6 @@ #include /* For CHAR_BIT. */ #include -#include - #ifdef HAVE_PTHREAD #include #endif @@ -42,7 +40,6 @@ #include "keyboard.h" #include "frame.h" #include "blockinput.h" -#include "syssignal.h" #include "termhooks.h" /* For struct terminal. */ #include #include === modified file 'src/atimer.c' --- src/atimer.c 2012-08-23 08:27:08 +0000 +++ src/atimer.c 2012-09-01 21:37:07 +0000 @@ -17,7 +17,6 @@ along with GNU Emacs. If not, see . */ #include -#include #include #include #include "lisp.h" @@ -51,8 +50,8 @@ /* Block/unblock SIGALRM. */ -#define BLOCK_ATIMERS sigblock (sigmask (SIGALRM)) -#define UNBLOCK_ATIMERS sigunblock (sigmask (SIGALRM)) +#define BLOCK_ATIMERS block_signal (SIGALRM) +#define UNBLOCK_ATIMERS unblock_signal (SIGALRM) /* Function prototypes. */ @@ -378,7 +377,8 @@ alarm_signal_handler (int signo) { #ifndef SYNC_INPUT - SIGNAL_THREAD_CHECK (signo); + if (forwarded_signal (signo)) + return; #endif pending_atimers = 1; @@ -412,7 +412,7 @@ { if (on) { - signal (SIGALRM, alarm_signal_handler); + set_sighandler (SIGALRM, alarm_signal_handler); set_alarm (); } else @@ -426,5 +426,5 @@ free_atimers = stopped_atimers = atimers = NULL; pending_atimers = 0; /* pending_signals is initialized in init_keyboard.*/ - signal (SIGALRM, alarm_signal_handler); + set_sighandler (SIGALRM, alarm_signal_handler); } === modified file 'src/callproc.c' --- src/callproc.c 2012-08-25 03:11:12 +0000 +++ src/callproc.c 2012-09-01 21:37:07 +0000 @@ -19,7 +19,6 @@ #include -#include #include #include #include @@ -500,15 +499,11 @@ int fd_error = fd1; #ifdef HAVE_WORKING_VFORK sigset_t procmask; - sigset_t blocked; struct sigaction sigpipe_action; #endif if (fd_output >= 0) fd1 = fd_output; -#if 0 /* Some systems don't have sigblock. */ - mask = sigblock (sigmask (SIGCHLD)); -#endif /* Record that we're about to create a synchronous process. */ synch_process_alive = 1; @@ -597,10 +592,8 @@ this sets the parent's signal handlers as well as the child's. So delay all interrupts whose handlers the child might munge, and record the current handlers so they can be restored later. */ - sigemptyset (&blocked); - sigaddset (&blocked, SIGPIPE); sigaction (SIGPIPE, 0, &sigpipe_action); - pthread_sigmask (SIG_BLOCK, &blocked, &procmask); + get_sigmask_block_signal (&procmask, SIGPIPE); #endif BLOCK_INPUT; @@ -649,9 +642,9 @@ /* GConf causes us to ignore SIGPIPE, make sure it is restored in the child. */ - signal (SIGPIPE, SIG_DFL); + set_sighandler (SIGPIPE, SIG_DFL); #ifdef HAVE_WORKING_VFORK - pthread_sigmask (SIG_SETMASK, &procmask, 0); + set_sigmask (&procmask); #endif child_setup (filefd, fd1, fd_error, (char **) new_argv, @@ -663,7 +656,7 @@ #ifdef HAVE_WORKING_VFORK /* Restore the signal state. */ sigaction (SIGPIPE, &sigpipe_action, 0); - pthread_sigmask (SIG_SETMASK, &procmask, 0); + set_sigmask (&procmask); #endif #endif /* not WINDOWSNT */ === modified file 'src/conf_post.h' --- src/conf_post.h 2012-08-20 16:48:10 +0000 +++ src/conf_post.h 2012-09-01 21:37:07 +0000 @@ -40,11 +40,6 @@ #endif #endif -#ifdef SIGNAL_H_AHB -#undef SIGNAL_H_AHB -#include -#endif - /* This silences a few compilation warnings on FreeBSD. */ #ifdef BSD_SYSTEM_AHB #undef BSD_SYSTEM_AHB === modified file 'src/data.c' --- src/data.c 2012-08-27 17:23:48 +0000 +++ src/data.c 2012-09-01 21:37:07 +0000 @@ -19,7 +19,6 @@ #include -#include #include #include @@ -3213,9 +3212,9 @@ static void arith_error (int signo) { - sigsetmask (SIGEMPTYMASK); - - SIGNAL_THREAD_CHECK (signo); + sigfree (); + if (forwarded_signal (signo)) + return; xsignal0 (Qarith_error); } @@ -3230,5 +3229,5 @@ if (!initialized) return; #endif /* CANNOT_DUMP */ - signal (SIGFPE, arith_error); + set_sighandler (SIGFPE, arith_error); } === modified file 'src/dispnew.c' --- src/dispnew.c 2012-09-01 06:38:52 +0000 +++ src/dispnew.c 2012-09-01 21:37:07 +0000 @@ -21,7 +21,6 @@ #define DISPEXTERN_INLINE EXTERN_INLINE -#include #include #include #include @@ -5561,8 +5560,9 @@ struct tty_display_info *tty; - signal (SIGWINCH, window_change_signal); - SIGNAL_THREAD_CHECK (signalnum); + set_sighandler (SIGWINCH, window_change_signal); + if (forwarded_signal (signalnum)) + return; /* The frame size change obviously applies to a single termcap-controlled terminal, but we can't decide which. @@ -6173,7 +6173,7 @@ #ifndef CANNOT_DUMP if (initialized) #endif /* CANNOT_DUMP */ - signal (SIGWINCH, window_change_signal); + set_sighandler (SIGWINCH, window_change_signal); #endif /* SIGWINCH */ /* If running as a daemon, no need to initialize any frames/terminal. */ === modified file 'src/emacs.c' --- src/emacs.c 2012-09-01 08:01:36 +0000 +++ src/emacs.c 2012-09-01 21:37:07 +0000 @@ -20,7 +20,6 @@ #include -#include #include #include @@ -297,9 +296,10 @@ void fatal_error_signal (int sig) { - SIGNAL_THREAD_CHECK (sig); + if (forwarded_signal (sig)) + return; fatal_error_code = sig; - signal (sig, SIG_DFL); + set_sighandler (sig, SIG_DFL); TOTALLY_UNBLOCK_INPUT; @@ -319,7 +319,7 @@ going to send is probably blocked, so we have to unblock it if we want to really receive it. */ #ifndef MSDOS - sigunblock (sigmask (fatal_error_code)); + unblock_signal (fatal_error_code); #endif kill (getpid (), fatal_error_code); @@ -331,8 +331,9 @@ void memory_warning_signal (int sig) { - signal (sig, memory_warning_signal); - SIGNAL_THREAD_CHECK (sig); + set_sighandler (sig, memory_warning_signal); + if (forwarded_signal (sig)) + return; malloc_warning ("Operating system warns that virtual memory is running low.\n"); @@ -1119,13 +1120,10 @@ #endif ) { - sigblock (sigmask (SIGHUP)); /* In --batch mode, don't catch SIGHUP if already ignored. That makes nohup work. */ - if (! noninteractive - || signal (SIGHUP, SIG_IGN) != SIG_IGN) - signal (SIGHUP, fatal_error_signal); - sigunblock (sigmask (SIGHUP)); + if (! (noninteractive && sighandler (SIGHUP) == SIG_IGN)) + set_sighandler (SIGHUP, fatal_error_signal); } if ( @@ -1139,9 +1137,9 @@ /* Don't catch these signals in batch mode if dumping. On some machines, this sets static data that would make signal fail to work right when the dumped Emacs is run. */ - signal (SIGQUIT, fatal_error_signal); - signal (SIGILL, fatal_error_signal); - signal (SIGTRAP, fatal_error_signal); + set_sighandler (SIGQUIT, fatal_error_signal); + set_sighandler (SIGILL, fatal_error_signal); + set_sighandler (SIGTRAP, fatal_error_signal); #ifdef SIGUSR1 add_user_signal (SIGUSR1, "sigusr1"); #endif @@ -1149,68 +1147,69 @@ add_user_signal (SIGUSR2, "sigusr2"); #endif #ifdef SIGABRT - signal (SIGABRT, fatal_error_signal); + set_sighandler (SIGABRT, fatal_error_signal); #endif #ifdef SIGHWE - signal (SIGHWE, fatal_error_signal); + set_sighandler (SIGHWE, fatal_error_signal); #endif #ifdef SIGPRE - signal (SIGPRE, fatal_error_signal); + set_sighandler (SIGPRE, fatal_error_signal); #endif #ifdef SIGORE - signal (SIGORE, fatal_error_signal); + set_sighandler (SIGORE, fatal_error_signal); #endif #ifdef SIGUME - signal (SIGUME, fatal_error_signal); + set_sighandler (SIGUME, fatal_error_signal); #endif #ifdef SIGDLK - signal (SIGDLK, fatal_error_signal); + set_sighandler (SIGDLK, fatal_error_signal); #endif #ifdef SIGCPULIM - signal (SIGCPULIM, fatal_error_signal); + set_sighandler (SIGCPULIM, fatal_error_signal); #endif #ifdef SIGIOT /* This is missing on some systems - OS/2, for example. */ - signal (SIGIOT, fatal_error_signal); + set_sighandler (SIGIOT, fatal_error_signal); #endif #ifdef SIGEMT - signal (SIGEMT, fatal_error_signal); + set_sighandler (SIGEMT, fatal_error_signal); #endif - signal (SIGFPE, fatal_error_signal); + set_sighandler (SIGFPE, fatal_error_signal); #ifdef SIGBUS - signal (SIGBUS, fatal_error_signal); + set_sighandler (SIGBUS, fatal_error_signal); #endif - signal (SIGSEGV, fatal_error_signal); + set_sighandler (SIGSEGV, fatal_error_signal); #ifdef SIGSYS - signal (SIGSYS, fatal_error_signal); + set_sighandler (SIGSYS, fatal_error_signal); #endif /* May need special treatment on MS-Windows. See http://lists.gnu.org/archive/html/emacs-devel/2010-09/msg01062.html Please update the doc of kill-emacs, kill-emacs-hook, and NEWS if you change this. */ - if (noninteractive) signal (SIGINT, fatal_error_signal); - signal (SIGTERM, fatal_error_signal); + if (noninteractive) + set_sighandler (SIGINT, fatal_error_signal); + set_sighandler (SIGTERM, fatal_error_signal); #ifdef SIGXCPU - signal (SIGXCPU, fatal_error_signal); + set_sighandler (SIGXCPU, fatal_error_signal); #endif #ifdef SIGXFSZ - signal (SIGXFSZ, fatal_error_signal); + set_sighandler (SIGXFSZ, fatal_error_signal); #endif /* SIGXFSZ */ #ifdef SIGDANGER /* This just means available memory is getting low. */ - signal (SIGDANGER, memory_warning_signal); + set_sighandler (SIGDANGER, memory_warning_signal); #endif #ifdef AIX /* 20 is SIGCHLD, 21 is SIGTTIN, 22 is SIGTTOU. */ - signal (SIGXCPU, fatal_error_signal); - signal (SIGIOINT, fatal_error_signal); - signal (SIGGRANT, fatal_error_signal); - signal (SIGRETRACT, fatal_error_signal); - signal (SIGSOUND, fatal_error_signal); - signal (SIGMSG, fatal_error_signal); + set_sighandler (SIGXCPU, fatal_error_signal); + set_sighandler (SIGIOINT, fatal_error_signal); + set_sighandler (SIGGRANT, fatal_error_signal); + set_sighandler (SIGRETRACT, fatal_error_signal); + set_sighandler (SIGSOUND, fatal_error_signal); + set_sighandler (SIGMSG, fatal_error_signal); #endif /* AIX */ } @@ -2041,7 +2040,7 @@ /* There is a tendency for a SIGIO signal to arrive within exit, and cause a SIGHUP because the input descriptor is already closed. */ unrequest_sigio (); - signal (SIGIO, SIG_IGN); + set_sighandler (SIGIO, SIG_IGN); #endif #ifdef WINDOWSNT === modified file 'src/emacsgtkfixed.c' --- src/emacsgtkfixed.c 2012-04-23 07:34:29 +0000 +++ src/emacsgtkfixed.c 2012-09-01 21:37:07 +0000 @@ -21,7 +21,6 @@ #include #include "emacsgtkfixed.h" -#include #include #include #include "lisp.h" === modified file 'src/floatfns.c' --- src/floatfns.c 2012-07-17 02:56:00 +0000 +++ src/floatfns.c 2012-09-01 21:37:07 +0000 @@ -48,7 +48,6 @@ */ #include -#include #include #include "lisp.h" #include "syssignal.h" @@ -955,13 +954,14 @@ fatal_error_signal (signo); #ifdef BSD_SYSTEM - sigsetmask (SIGEMPTYMASK); + sigfree (); #else /* Must reestablish handler each time it is called. */ - signal (SIGILL, float_error); + set_sighandler (SIGILL, float_error); #endif /* BSD_SYSTEM */ - SIGNAL_THREAD_CHECK (signo); + if (forwarded_signal (signo)) + return; in_float = 0; xsignal1 (Qarith_error, float_error_arg); @@ -1007,7 +1007,7 @@ init_floatfns (void) { #ifdef FLOAT_CATCH_SIGILL - signal (SIGILL, float_error); + set_sighandler (SIGILL, float_error); #endif in_float = 0; } === modified file 'src/gtkutil.c' --- src/gtkutil.c 2012-08-30 16:07:44 +0000 +++ src/gtkutil.c 2012-09-01 21:37:07 +0000 @@ -21,7 +21,6 @@ #ifdef USE_GTK #include -#include #include #include @@ -1979,7 +1978,7 @@ /* I really don't know why this is needed, but without this the GLIBC add on library linuxthreads hangs when the Gnome file chooser backend creates threads. */ - sigblock (sigmask (__SIGRTMIN)); + block_signal (__SIGRTMIN); #endif /* HAVE_PTHREAD */ #ifdef HAVE_GTK_FILE_SELECTION_NEW @@ -2001,7 +2000,7 @@ filesel_done = xg_dialog_run (f, w); #if defined (HAVE_PTHREAD) && defined (__SIGRTMIN) - sigunblock (sigmask (__SIGRTMIN)); + unblock_signal (__SIGRTMIN); #endif if (filesel_done == GTK_RESPONSE_OK) @@ -2061,7 +2060,7 @@ Lisp_Object font = Qnil; #if defined (HAVE_PTHREAD) && defined (__SIGRTMIN) - sigblock (sigmask (__SIGRTMIN)); + block_signal (__SIGRTMIN); #endif /* HAVE_PTHREAD */ w = gtk_font_chooser_dialog_new @@ -2090,7 +2089,7 @@ done = xg_dialog_run (f, w); #if defined (HAVE_PTHREAD) && defined (__SIGRTMIN) - sigunblock (sigmask (__SIGRTMIN)); + unblock_signal (__SIGRTMIN); #endif if (done == GTK_RESPONSE_OK) === modified file 'src/keyboard.c' --- src/keyboard.c 2012-09-01 06:38:52 +0000 +++ src/keyboard.c 2012-09-01 21:37:07 +0000 @@ -21,7 +21,6 @@ #define KEYBOARD_INLINE EXTERN_INLINE -#include #include #include #include "lisp.h" @@ -3661,7 +3660,7 @@ hold_keyboard_input (); #ifdef SIGIO if (!noninteractive) - signal (SIGIO, SIG_IGN); + set_sighandler (SIGIO, SIG_IGN); #endif stop_polling (); } @@ -3833,7 +3832,7 @@ unhold_keyboard_input (); #ifdef SIGIO if (!noninteractive) - signal (SIGIO, input_available_signal); + set_sighandler (SIGIO, input_available_signal); #endif /* SIGIO */ start_polling (); } @@ -6782,10 +6781,10 @@ #ifdef SIGIO if (interrupt_input) { - SIGMASKTYPE mask; - mask = sigblock (sigmask (SIGIO)); + sigset_t mask; + get_sigmask_block_signal (&mask, SIGIO); read_avail_input (expected); - sigsetmask (mask); + set_sigmask (&mask); } else #ifdef POLL_FOR_INPUT @@ -6794,10 +6793,10 @@ it's always set. */ if (!interrupt_input && poll_suppress_count == 0) { - SIGMASKTYPE mask; - mask = sigblock (sigmask (SIGALRM)); + sigset_t mask; + get_sigmask_block_signal (&mask, SIGALRM); read_avail_input (expected); - sigsetmask (mask); + set_sigmask (&mask); } else #endif @@ -6833,10 +6832,10 @@ #ifdef SIGIO if (interrupt_input) { - SIGMASKTYPE mask; - mask = sigblock (sigmask (SIGIO)); + sigset_t mask; + get_sigmask_block_signal (&mask, SIGIO); kbd_buffer_store_event (&event); - sigsetmask (mask); + set_sigmask (&mask); } else #endif @@ -7241,7 +7240,8 @@ { /* Must preserve main program's value of errno. */ int old_errno = errno; - SIGNAL_THREAD_CHECK (signo); + if (forwarded_signal (signo)) + return; #ifdef SYNC_INPUT interrupt_input_pending = 1; @@ -7311,7 +7311,7 @@ p->next = user_signals; user_signals = p; - signal (sig, handle_user_signal); + set_sighandler (sig, handle_user_signal); } static void @@ -7321,7 +7321,8 @@ struct user_signal_info *p; const char *special_event_name = NULL; - SIGNAL_THREAD_CHECK (sig); + if (forwarded_signal (sig)) + return; if (SYMBOLP (Vdebug_on_event)) special_event_name = SSDATA (SYMBOL_NAME (Vdebug_on_event)); @@ -7382,7 +7383,7 @@ for (p = user_signals; p; p = p->next) if (p->npending > 0) { - SIGMASKTYPE mask; + sigset_t mask; if (nstored == 0) { @@ -7392,7 +7393,7 @@ } nstored += p->npending; - mask = sigblock (sigmask (p->sig)); + get_sigmask_block_signal (&mask, p->sig); do { buf.code = p->sig; @@ -7400,7 +7401,7 @@ p->npending--; } while (p->npending > 0); - sigsetmask (mask); + set_sigmask (&mask); } return nstored; @@ -8445,7 +8446,7 @@ /* Append entries from tool_bar_item_properties to the end of tool_bar_items_vector. */ - vcopy (tool_bar_items_vector, ntool_bar_items, + vcopy (tool_bar_items_vector, ntool_bar_items, XVECTOR (tool_bar_item_properties)->contents, TOOL_BAR_ITEM_NSLOTS); ntool_bar_items += TOOL_BAR_ITEM_NSLOTS; } @@ -10784,7 +10785,8 @@ int old_errno = errno; struct terminal *terminal; - SIGNAL_THREAD_CHECK (signalnum); + if (forwarded_signal (signalnum)) + return; /* See if we have an active terminal on our controlling tty. */ terminal = get_named_tty ("/dev/tty"); @@ -10841,7 +10843,7 @@ /* If SIGINT isn't blocked, don't let us be interrupted by another SIGINT, it might be harmful due to non-reentrancy in I/O functions. */ - sigblock (sigmask (SIGINT)); + block_signal (SIGINT); fflush (stdout); reset_all_sys_modes (); @@ -11405,17 +11407,17 @@ SIGINT. There is special code in interrupt_signal to exit Emacs on SIGINT when there are no termcap frames on the controlling terminal. */ - signal (SIGINT, interrupt_signal); + set_sighandler (SIGINT, interrupt_signal); #ifndef DOS_NT /* For systems with SysV TERMIO, C-g is set up for both SIGINT and SIGQUIT and we can't tell which one it will give us. */ - signal (SIGQUIT, interrupt_signal); + set_sighandler (SIGQUIT, interrupt_signal); #endif /* not DOS_NT */ } /* Note SIGIO has been undef'd if FIONREAD is missing. */ #ifdef SIGIO if (!noninteractive) - signal (SIGIO, input_available_signal); + set_sighandler (SIGIO, input_available_signal); #endif /* SIGIO */ /* Use interrupt input by default, if it works and noninterrupt input === modified file 'src/nsfns.m' --- src/nsfns.m 2012-08-17 23:38:43 +0000 +++ src/nsfns.m 2012-09-01 21:37:07 +0000 @@ -30,7 +30,6 @@ interpretation of even the system includes. */ #include -#include #include #include #include === modified file 'src/process.c' --- src/process.c 2012-09-01 06:38:52 +0000 +++ src/process.c 2012-09-01 21:37:07 +0000 @@ -23,7 +23,6 @@ #define PROCESS_INLINE EXTERN_INLINE -#include #include #include #include @@ -1766,12 +1765,6 @@ int xforkin = forkin; int xforkout = forkout; -#if 0 /* This was probably a mistake--it duplicates code later on, - but fails to handle all the cases. */ - /* Make sure SIGCHLD is not blocked in the child. */ - sigsetmask (SIGEMPTYMASK); -#endif - /* Make the pty be the controlling terminal of the process. */ #ifdef HAVE_PTYS /* First, disconnect its current controlling terminal. */ @@ -1880,18 +1873,18 @@ /* On AIX, we've disabled SIGHUP above once we start a child on a pty. Now reenable it in the child, so it will die when we want it to. */ if (pty_flag) - signal (SIGHUP, SIG_DFL); + set_sighandler (SIGHUP, SIG_DFL); #endif #endif /* HAVE_PTYS */ - signal (SIGINT, SIG_DFL); - signal (SIGQUIT, SIG_DFL); + set_sighandler (SIGINT, SIG_DFL); + set_sighandler (SIGQUIT, SIG_DFL); /* GConf causes us to ignore SIGPIPE, make sure it is restored in the child. */ - signal (SIGPIPE, SIG_DFL); + set_sighandler (SIGPIPE, SIG_DFL); /* Stop blocking signals in the child. */ - pthread_sigmask (SIG_SETMASK, &procmask, 0); + set_sigmask (&procmask); if (pty_flag) child_setup_tty (xforkout); @@ -1982,7 +1975,7 @@ #endif #endif /* HAVE_WORKING_VFORK */ /* Stop blocking signals in the parent. */ - pthread_sigmask (SIG_SETMASK, &procmask, 0); + set_sigmask (&procmask); /* Now generate the error if vfork failed. */ if (pid < 0) @@ -5439,8 +5432,9 @@ static void send_process_trap (int ignore) { - SIGNAL_THREAD_CHECK (SIGPIPE); - sigunblock (sigmask (SIGPIPE)); + if (forwarded_signal (SIGPIPE)) + return; + unblock_signal (SIGPIPE); longjmp (send_process_frame, 1); } @@ -5534,7 +5528,7 @@ struct Lisp_Process *p = XPROCESS (proc); ssize_t rv; struct coding_system *coding; - void (*volatile old_sigpipe) (int); + signal_handler_t volatile old_sigpipe; if (p->raw_status_new) update_status (p); @@ -5673,7 +5667,7 @@ /* Send this batch, using one or more write calls. */ ptrdiff_t written = 0; int outfd = p->outfd; - old_sigpipe = (void (*) (int)) signal (SIGPIPE, send_process_trap); + old_sigpipe = sys_signal (SIGPIPE, send_process_trap); #ifdef DATAGRAM_SOCKETS if (DATAGRAM_CHAN_P (outfd)) { @@ -5684,7 +5678,7 @@ written = rv; else if (errno == EMSGSIZE) { - signal (SIGPIPE, old_sigpipe); + set_sighandler (SIGPIPE, old_sigpipe); report_file_error ("sending datagram", Fcons (proc, Qnil)); } @@ -5709,7 +5703,7 @@ } #endif } - signal (SIGPIPE, old_sigpipe); + set_sighandler (SIGPIPE, old_sigpipe); if (rv < 0) { @@ -5769,7 +5763,7 @@ } else { - signal (SIGPIPE, old_sigpipe); + set_sighandler (SIGPIPE, old_sigpipe); proc = process_sent_to; p = XPROCESS (proc); p->raw_status_new = 0; @@ -6414,7 +6408,8 @@ Lisp_Object proc; struct Lisp_Process *p; - SIGNAL_THREAD_CHECK (signo); + if (forwarded_signal (signo)) + return; while (1) { @@ -7397,7 +7392,7 @@ #ifndef CANNOT_DUMP if (! noninteractive || initialized) #endif - signal (SIGCHLD, sigchld_handler); + set_sighandler (SIGCHLD, sigchld_handler); #endif FD_ZERO (&input_wait_mask); === modified file 'src/sound.c' --- src/sound.c 2012-07-29 08:18:29 +0000 +++ src/sound.c 2012-09-01 21:37:07 +0000 @@ -48,7 +48,6 @@ #include "lisp.h" #include "dispextern.h" #include "atimer.h" -#include #include "syssignal.h" /* END: Common Includes */ @@ -316,7 +315,7 @@ turn_on_atimers (1); #ifdef SIGIO - sigunblock (sigmask (SIGIO)); + unblock_signal (SIGIO); #endif if (saved_errno != 0) error ("%s: %s", msg, strerror (saved_errno)); @@ -736,7 +735,7 @@ troubles. */ turn_on_atimers (0); #ifdef SIGIO - sigblock (sigmask (SIGIO)); + block_signal (SIGIO); #endif val = sd->format; @@ -770,7 +769,7 @@ turn_on_atimers (1); #ifdef SIGIO - sigunblock (sigmask (SIGIO)); + unblock_signal (SIGIO); #endif } @@ -786,7 +785,7 @@ be interrupted by a signal. Block the ones we know to cause troubles. */ #ifdef SIGIO - sigblock (sigmask (SIGIO)); + block_signal (SIGIO); #endif turn_on_atimers (0); @@ -795,7 +794,7 @@ turn_on_atimers (1); #ifdef SIGIO - sigunblock (sigmask (SIGIO)); + unblock_signal (SIGIO); #endif /* Close the device. */ === modified file 'src/sysdep.c' --- src/sysdep.c 2012-09-01 01:13:50 +0000 +++ src/sysdep.c 2012-09-01 21:37:07 +0000 @@ -19,9 +19,9 @@ #include +#define SYSSIGNAL_INLINE EXTERN_INLINE #define SYSTIME_INLINE EXTERN_INLINE -#include #include #include #ifdef HAVE_PWD_H @@ -302,31 +302,43 @@ termination of subprocesses, perhaps involving a kernel bug too, but no idea what it is. Just as a hunch we signal SIGCHLD to see if that causes the problem to go away or get worse. */ - sigsetmask (sigmask (SIGCHLD)); + sigset_t sigchild_mask; + sigemptyset (&sigchild_mask); + sigaddset (&sigchild_mask, SIGCHLD); + set_sigmask (&sigchild_mask); + if (0 > kill (pid, 0)) { - sigsetmask (SIGEMPTYMASK); + sigfree (); kill (getpid (), SIGCHLD); break; } if (wait_debugging) sleep (1); else - sigpause (SIGEMPTYMASK); + { + sigset_t empty_mask; + sigemptyset (&empty_mask); + sigsuspend (&empty_mask); + } #else /* not BSD_SYSTEM, and not HPUX version >= 6 */ #ifdef WINDOWSNT wait (0); break; #else /* not WINDOWSNT */ - sigblock (sigmask (SIGCHLD)); + block_signal (SIGCHLD); errno = 0; if (kill (pid, 0) == -1 && errno == ESRCH) { - sigunblock (sigmask (SIGCHLD)); + unblock_signal (SIGCHLD); break; } - sigsuspend (&empty_mask); + { + sigset_t empty_mask; + sigemptyset (&empty_mask); + sigsuspend (&empty_mask); + } #endif /* not WINDOWSNT */ #endif /* not BSD_SYSTEM, and not HPUX version >= 6 */ if (interruptible) @@ -460,7 +472,7 @@ struct save_signal { int code; - void (*handler) (int); + signal_handler_t handler; }; static void save_signal_handlers (struct save_signal *); @@ -618,8 +630,7 @@ { while (saved_handlers->code) { - saved_handlers->handler - = (void (*) (int)) signal (saved_handlers->code, SIG_IGN); + saved_handlers->handler = sys_signal (saved_handlers->code, SIG_IGN); saved_handlers++; } } @@ -629,7 +640,7 @@ { while (saved_handlers->code) { - signal (saved_handlers->code, saved_handlers->handler); + set_sighandler (saved_handlers->code, saved_handlers->handler); saved_handlers++; } } @@ -690,9 +701,9 @@ return; #ifdef SIGWINCH - sigunblock (sigmask (SIGWINCH)); + unblock_signal (SIGWINCH); #endif - sigunblock (sigmask (SIGIO)); + unblock_signal (SIGIO); interrupts_deferred = 0; } @@ -709,9 +720,9 @@ #endif #ifdef SIGWINCH - sigblock (sigmask (SIGWINCH)); + block_signal (SIGWINCH); #endif - sigblock (sigmask (SIGIO)); + block_signal (SIGIO); interrupts_deferred = 1; } @@ -1473,16 +1484,27 @@ /* POSIX signals support - DJB */ /* Anyone with POSIX signals should have ANSI C declarations */ -sigset_t empty_mask; - #ifndef WINDOWSNT +/* Return the current signal handler for signal number SIGNO. */ signal_handler_t -sys_signal (int signal_number, signal_handler_t action) -{ - struct sigaction new_action, old_action; +sighandler (int signo) +{ + struct sigaction old_action; + sigaction (signo, NULL, &old_action); + return old_action.sa_handler; +} + +/* Copy the old signal action for SIGNO into *OLD_ACTION if OLD_ACTION + is non-null. Then change the signal action to be one whose handler + is HANDLER. */ +static void +get_set_sighandler (int signo, struct sigaction *old_action, + signal_handler_t handler) +{ + struct sigaction new_action; sigemptyset (&new_action.sa_mask); - new_action.sa_handler = action; + new_action.sa_handler = handler; new_action.sa_flags = 0; #if defined (SA_RESTART) /* Emacs mostly works better with restartable system services. If this @@ -1502,54 +1524,26 @@ # endif new_action.sa_flags = SA_RESTART; #endif - sigaction (signal_number, &new_action, &old_action); - return (old_action.sa_handler); + sigaction (signo, &new_action, old_action); +} + +/* Change SIGNO's handler to be HANDLER. */ +void +set_sighandler (int signo, signal_handler_t handler) +{ + get_set_sighandler (signo, NULL, handler); +} + +/* Change SIGNO's handler to be HANDLER. Return the old handler. */ +signal_handler_t +sys_signal (int signo, signal_handler_t handler) +{ + struct sigaction old_action; + get_set_sighandler (signo, &old_action, handler); + return old_action.sa_handler; } #endif /* WINDOWSNT */ - -#ifndef __GNUC__ -/* If we're compiling with GCC, we don't need this function, since it - can be written as a macro. */ -sigset_t -sys_sigmask (int sig) -{ - sigset_t mask; - sigemptyset (&mask); - sigaddset (&mask, sig); - return mask; -} -#endif - -/* I'd like to have these guys return pointers to the mask storage in here, - but there'd be trouble if the code was saving multiple masks. I'll be - safe and pass the structure. It normally won't be more than 2 bytes - anyhow. - DJB */ - -sigset_t -sys_sigblock (sigset_t new_mask) -{ - sigset_t old_mask; - pthread_sigmask (SIG_BLOCK, &new_mask, &old_mask); - return (old_mask); -} - -sigset_t -sys_sigunblock (sigset_t new_mask) -{ - sigset_t old_mask; - pthread_sigmask (SIG_UNBLOCK, &new_mask, &old_mask); - return (old_mask); -} - -sigset_t -sys_sigsetmask (sigset_t new_mask) -{ - sigset_t old_mask; - pthread_sigmask (SIG_SETMASK, &new_mask, &old_mask); - return (old_mask); -} - #if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST static char *my_sys_siglist[NSIG]; @@ -1562,8 +1556,6 @@ void init_signals (void) { - sigemptyset (&empty_mask); - #if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST if (! initialized) { === modified file 'src/syssignal.h' --- src/syssignal.h 2012-07-13 01:19:06 +0000 +++ src/syssignal.h 2012-09-01 21:37:07 +0000 @@ -17,7 +17,8 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . */ -extern void init_signals (void); +#include +#include #ifdef HAVE_PTHREAD #include @@ -26,63 +27,65 @@ #define FORWARD_SIGNAL_TO_MAIN_THREAD #endif -/* Don't #include . That header should always be #included - before "config.h", because some configuration files (like s/hpux.h) - indicate that SIGIO doesn't work by #undef-ing SIGIO. If this file - #includes , then that will re-#define SIGIO and confuse - things. */ -/* XXX This is not correct anymore, there is a BROKEN_SIGIO macro. */ - -#define SIGMASKTYPE sigset_t - -#define SIGEMPTYMASK (empty_mask) -extern sigset_t empty_mask; - -/* POSIX pretty much destroys any possibility of writing sigmask as a - macro in standard C. We always define our own version because the - predefined macro in Glibc 2.1 is only provided for compatibility for old - programs that use int as signal mask type. */ -#undef sigmask -#ifdef __GNUC__ -#define sigmask(SIG) \ - ({ \ - sigset_t _mask; \ - sigemptyset (&_mask); \ - sigaddset (&_mask, SIG); \ - _mask; \ - }) -#else /* ! defined (__GNUC__) */ -extern sigset_t sys_sigmask (); -#define sigmask(SIG) (sys_sigmask (SIG)) -#endif /* ! defined (__GNUC__) */ - -#undef sigpause -#define sigpause(MASK) sigsuspend (&(MASK)) - -#define sigblock(SIG) sys_sigblock (SIG) -#define sigunblock(SIG) sys_sigunblock (SIG) -#ifndef sigsetmask -#define sigsetmask(SIG) sys_sigsetmask (SIG) -#endif -#undef signal -#define signal(SIG,ACT) sys_signal(SIG,ACT) - -/* Whether this is what all systems want or not, this is what - appears to be assumed in the source, for example data.c:arith_error. */ +INLINE_HEADER_BEGIN +#ifndef SYSSIGNAL_INLINE +# define SYSSIGNAL_INLINE INLINE +#endif + +extern void init_signals (void) +#if defined HAVE_STRSIGNAL || HAVE_DECL_SYS_SIGLIST + ATTRIBUTE_CONST +#endif + ; + +SYSSIGNAL_INLINE void +get_sigmask_block_signal (sigset_t *old_mask, int sig) +{ + sigset_t mask; + sigemptyset (&mask); + sigaddset (&mask, sig); + pthread_sigmask (SIG_BLOCK, &mask, old_mask); +} + +SYSSIGNAL_INLINE void +block_signal (int sig) +{ + get_sigmask_block_signal (NULL, sig); +} + +SYSSIGNAL_INLINE void +unblock_signal (int sig) +{ + sigset_t mask; + sigemptyset (&mask); + sigaddset (&mask, sig); + pthread_sigmask (SIG_UNBLOCK, &mask, NULL); +} + +SYSSIGNAL_INLINE void +set_sigmask (sigset_t *mask) +{ + pthread_sigmask (SIG_SETMASK, mask, NULL); +} + +SYSSIGNAL_INLINE void +sigfree (void) +{ + sigset_t empty_mask; + sigemptyset (&empty_mask); + set_sigmask (&empty_mask); +} + typedef void (*signal_handler_t) (int); -signal_handler_t sys_signal (int signal_number, signal_handler_t action); -sigset_t sys_sigblock (sigset_t new_mask); -sigset_t sys_sigunblock (sigset_t new_mask); -sigset_t sys_sigsetmask (sigset_t new_mask); +signal_handler_t sighandler (int); +void set_sighandler (int, signal_handler_t); +signal_handler_t sys_signal (int, signal_handler_t); + #if ! (defined TIOCNOTTY || defined USG5 || defined CYGWIN) _Noreturn void croak (char *); #endif -#define sys_sigdel(MASK,SIG) sigdelset (&MASK,SIG) - -#define sigfree() sigsetmask (SIGEMPTYMASK) - #if defined (SIGIO) && defined (BROKEN_SIGIO) # undef SIGIO #endif @@ -97,12 +100,8 @@ #undef SIGPTY #endif - -/* FIXME? Emacs only defines NSIG_MINIMUM on some platforms? */ #if NSIG < NSIG_MINIMUM -# ifdef NSIG -# undef NSIG -# endif +# undef NSIG # define NSIG NSIG_MINIMUM #endif @@ -133,24 +132,20 @@ #ifdef FORWARD_SIGNAL_TO_MAIN_THREAD extern pthread_t main_thread; -#define SIGNAL_THREAD_CHECK(signo) \ - do { \ - if (!pthread_equal (pthread_self (), main_thread)) \ - { \ - /* POSIX says any thread can receive the signal. On GNU/Linux \ - that is not true, but for other systems (FreeBSD at least) \ - it is. So direct the signal to the correct thread and block \ - it from this thread. */ \ - sigset_t new_mask; \ - \ - sigemptyset (&new_mask); \ - sigaddset (&new_mask, signo); \ - pthread_sigmask (SIG_BLOCK, &new_mask, 0); \ - pthread_kill (main_thread, signo); \ - return; \ - } \ - } while (0) - -#else /* not FORWARD_SIGNAL_TO_MAIN_THREAD */ -#define SIGNAL_THREAD_CHECK(signo) -#endif /* not FORWARD_SIGNAL_TO_MAIN_THREAD */ +#endif + +SYSSIGNAL_INLINE bool +forwarded_signal (int signo) +{ +#ifdef FORWARD_SIGNAL_TO_MAIN_THREAD + if (! pthread_equal (pthread_self (), main_thread)) + { + block_signal (signo); + pthread_kill (main_thread, signo); + return 1; + } +#endif + return 0; +} + +INLINE_HEADER_END === modified file 'src/term.c' --- src/term.c 2012-08-31 10:53:19 +0000 +++ src/term.c 2012-09-01 21:37:07 +0000 @@ -25,7 +25,6 @@ #include #include #include -#include #include #include "lisp.h" @@ -2932,7 +2931,7 @@ no_controlling_tty = 1; #else #ifdef TIOCNOTTY /* Try BSD ioctls. */ - sigblock (sigmask (SIGTTOU)); + block_signal (SIGTTOU); fd = emacs_open (DEV_TTY, O_RDWR, 0); if (fd != -1 && ioctl (fd, TIOCNOTTY, 0) != -1) { @@ -2940,7 +2939,7 @@ } if (fd != -1) emacs_close (fd); - sigunblock (sigmask (SIGTTOU)); + unblock_signal (SIGTTOU); #else /* Unknown system. */ croak (); @@ -3074,9 +3073,9 @@ /* On some systems, tgetent tries to access the controlling terminal. */ - sigblock (sigmask (SIGTTOU)); + block_signal (SIGTTOU); status = tgetent (tty->termcap_term_buffer, terminal_type); - sigunblock (sigmask (SIGTTOU)); + unblock_signal (SIGTTOU); if (status < 0) { === modified file 'src/widget.c' --- src/widget.c 2012-07-10 21:48:34 +0000 +++ src/widget.c 2012-09-01 21:37:07 +0000 @@ -50,9 +50,6 @@ #include #include "../lwlib/lwlib.h" -#include -#include "syssignal.h" - #include "character.h" #include "font.h" === modified file 'src/xmenu.c' --- src/xmenu.c 2012-08-17 21:52:15 +0000 +++ src/xmenu.c 2012-09-01 21:37:07 +0000 @@ -32,11 +32,6 @@ #include -#if 0 /* Why was this included? And without syssignal.h? */ -/* On 4.3 this loses if it comes after xterm.h. */ -#include -#endif - #include #include === modified file 'src/xterm.c' --- src/xterm.c 2012-08-25 20:31:04 +0000 +++ src/xterm.c 2012-09-01 21:37:07 +0000 @@ -21,7 +21,6 @@ /* Xt features made by Fred Pierresteguy. */ #include -#include #include #include @@ -29,9 +28,6 @@ #include "lisp.h" #include "blockinput.h" - -/* Need syssignal.h for various externs and definitions that may be required - by some configurations for calls to signal later in this source file. */ #include "syssignal.h" /* This may include sys/types.h, and that somehow loses @@ -7773,7 +7769,7 @@ #ifdef USG /* USG systems forget handlers when they are used; must reestablish each time */ - signal (signalnum, x_connection_signal); + set_sighandler (signalnum, x_connection_signal); #endif /* USG */ } @@ -7884,9 +7880,9 @@ /* Ordinary stack unwind doesn't deal with these. */ #ifdef SIGIO - sigunblock (sigmask (SIGIO)); + unblock_signal (SIGIO); #endif - sigunblock (sigmask (SIGALRM)); + unblock_signal (SIGALRM); TOTALLY_UNBLOCK_INPUT; unbind_to (idx, Qnil); @@ -10814,7 +10810,7 @@ XSetErrorHandler (x_error_handler); XSetIOErrorHandler (x_io_error_quitter); - signal (SIGPIPE, x_connection_signal); + set_sighandler (SIGPIPE, x_connection_signal); } From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 02 13:53:55 2012 Received: (at submit) by debbugs.gnu.org; 2 Sep 2012 17:53:55 +0000 Received: from localhost ([127.0.0.1]:34732 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8EMt-0000e9-Fd for submit@debbugs.gnu.org; Sun, 02 Sep 2012 13:53:55 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53747) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8EMq-0000dz-AV for submit@debbugs.gnu.org; Sun, 02 Sep 2012 13:53:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T8ELP-0007CO-Gx for submit@debbugs.gnu.org; Sun, 02 Sep 2012 13:52:24 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:50290) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T8ELP-0007CJ-DI for submit@debbugs.gnu.org; Sun, 02 Sep 2012 13:52:23 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42710) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T8ELO-0000gL-2c for bug-gnu-emacs@gnu.org; Sun, 02 Sep 2012 13:52:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T8ELN-0007Be-1M for bug-gnu-emacs@gnu.org; Sun, 02 Sep 2012 13:52:21 -0400 Received: from mtaout22.012.net.il ([80.179.55.172]:36551) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T8ELM-0007BN-P8 for bug-gnu-emacs@gnu.org; Sun, 02 Sep 2012 13:52:20 -0400 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M9Q00H00HFT5L00@a-mtaout22.012.net.il> for bug-gnu-emacs@gnu.org; Sun, 02 Sep 2012 20:51:46 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Q00GRLHMA54G0@a-mtaout22.012.net.il>; Sun, 02 Sep 2012 20:51:46 +0300 (IDT) Date: Sun, 02 Sep 2012 20:51:51 +0300 From: Eli Zaretskii Subject: Re: Signal-handler cleanup for Emacs In-reply-to: <50428E57.8070708@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83d324fh3c.fsf@gnu.org> References: <50428E57.8070708@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -7.1 (-------) X-Debbugs-Envelope-To: submit Cc: lekktu@gmail.com, bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -7.1 (-------) > Date: Sat, 01 Sep 2012 15:38:15 -0700 > From: Paul Eggert > CC: Eli Zaretskii , Juanma Barranquero > > Here's a patch to clean up Emacs's signal-handling code somewhat. > As described below, it shrinks the size of Emacs's text segment > by 0.6% on my platform. It also removes a few dozen lines from > the source code. FWIW, I cannot see any advantage in these changes. They just replace one system of macros by another. The advantage of the current code is that it invokes widely known standard APIs, such as 'signal', 'sigemptyset', and 'sigblock' (never mind that we redefine some of them to call their more modern equivalents: that doesn't impede code reading and understanding in any way). OTOH, the changes you propose replace that with APIs that AFAIK are not known to anyone and, with a couple of exceptions, not used anywhere else. I could go with replacing 'signal' etc. with their modern Posix replacements, such as 'sigaction', directly in the code. That will clean up old APIs while still maintaining clarity for anyone who has ever written signal handlers. But I fail to see any good reasons for changes that, e.g., hide a pair of calls to well-known library functions, such as 'sigemptyset' and 'sigaddset', behind 'sigsetmask' (which AFAIK is a BSD-ism), or behind newly-invented functions such as 'get_sigmask_block_signal'. As for 0.6% reduction in the size of .text: what kind of humongous .text size do you have that makes 0.6% a significant value? On 2 different platforms to which I have access, one of them a x86_64 GNU/Linux, I see ~3.5MB in an unoptimized build and about half that much in an optimized one, which makes the savings around 2KB, too small to justify any change whatsoever. What am I missing? From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 02 14:38:52 2012 Received: (at 12327) by debbugs.gnu.org; 2 Sep 2012 18:38:53 +0000 Received: from localhost ([127.0.0.1]:34781 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8F4M-0001gS-QB for submit@debbugs.gnu.org; Sun, 02 Sep 2012 14:38:51 -0400 Received: from mtaout21.012.net.il ([80.179.55.169]:50072) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8F4I-0001gG-75 for 12327@debbugs.gnu.org; Sun, 02 Sep 2012 14:38:47 -0400 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0M9Q00C00JOF8000@a-mtaout21.012.net.il> for 12327@debbugs.gnu.org; Sun, 02 Sep 2012 21:37:16 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Q00B05JQ4SIC0@a-mtaout21.012.net.il>; Sun, 02 Sep 2012 21:37:16 +0300 (IDT) Date: Sun, 02 Sep 2012 21:37:21 +0300 From: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs In-reply-to: <83d324fh3c.fsf@gnu.org> X-012-Sender: halo1@inter.net.il To: eggert@cs.ucla.edu, lekktu@gmail.com Message-id: <83a9x8fezi.fsf@gnu.org> References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sun, 02 Sep 2012 20:51:51 +0300 > From: Eli Zaretskii > Cc: lekktu@gmail.com, 12327@debbugs.gnu.org > > As for 0.6% reduction in the size of .text: what kind of humongous > .text size do you have that makes 0.6% a significant value? On 2 > different platforms to which I have access, one of them a x86_64 > GNU/Linux, I see ~3.5MB in an unoptimized build and about half that > much in an optimized one, which makes the savings around 2KB, too > small to justify any change whatsoever. ^^^ Err, make that 21KB, still too small. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 02 15:02:42 2012 Received: (at 12327) by debbugs.gnu.org; 2 Sep 2012 19:02:42 +0000 Received: from localhost ([127.0.0.1]:34831 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8FRS-00035f-Bt for submit@debbugs.gnu.org; Sun, 02 Sep 2012 15:02:42 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:34244) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8FRP-00035U-I3 for 12327@debbugs.gnu.org; Sun, 02 Sep 2012 15:02:41 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 8F7E439E8008; Sun, 2 Sep 2012 12:01:10 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id URK2R25QQYcl; Sun, 2 Sep 2012 12:01:10 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 23B2539E8007; Sun, 2 Sep 2012 12:01:10 -0700 (PDT) Message-ID: <5043ACF7.7080100@cs.ucla.edu> Date: Sun, 02 Sep 2012 12:01:11 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> In-Reply-To: <83d324fh3c.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) On 09/02/2012 10:51 AM, Eli Zaretskii wrote: > that doesn't impede code reading and understanding in any way Sure it does, because Emacs defines symbols incompatibly with their normal meanings. E.g., Emacs redefines 'sigblock' to be a macro whose type signature is incompatible with the 'sigblock' that is found on GNU/Linux. This sort of thing makes Emacs's signal-handling code more confusing than it needs to be, and is the main motivation for the patch. > I could go with replacing 'signal' etc. with their modern Posix > replacements, such as 'sigaction', directly in the code. That would make the mainline code significantly less readable. Instead of this, for example: unblock_signal (SIGPIPE); send_process_trap would have to do something like this: sigset_t mask; ... sigemptyset (&mask); sigaddset (&mask, SIGPIPE); pthread_sigmask (SIG_UNBLOCK, &mask, NULL); which is not an improvement. I suspect the main reason that Emacs currently uses macros reminiscent but incompatible with the obsolete 4.2BSD interface, rather than the standard POSIX interface, is because the 4.2BSD interface was simpler. Unfortunately, the 4.2BSD interface does not scale well to modern systems with lots of signals. > I fail to see any good reasons for changes that, e.g., hide a > pair of calls to well-known library functions, such as 'sigemptyset' > and 'sigaddset', behind 'sigsetmask' (which AFAIK is a BSD-ism) There must be some confusion here. The new code does not use sigsetmask. > As for 0.6% reduction in the size of .text: what kind of humongous > .text size do you have that makes 0.6% a significant value? Every little bit helps, no? But the main point of measuring text size is as a rough gauge of the efficiency implications. If the text segment had grown, that would have been a bad sign. The fact that it shrank is a good sign. Fewer instructions mean faster CPU performance, partly due to lower pressure on the instruction cache. I didn't bother to measure CPU performance earlier, since that takes more work, but I just now did that with an artificial benchmark that simply blocks and then unblocks SIGCHLD, and on my platform the proposed patch speeds up this benchmark by 15%. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 02 17:22:29 2012 Received: (at 12327) by debbugs.gnu.org; 2 Sep 2012 21:22:29 +0000 Received: from localhost ([127.0.0.1]:34934 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Hcj-0007H3-Bl for submit@debbugs.gnu.org; Sun, 02 Sep 2012 17:22:29 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:54887) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Hcg-0007Gt-QA for 12327@debbugs.gnu.org; Sun, 02 Sep 2012 17:22:28 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0M9Q00F00QX3RF00@a-mtaout23.012.net.il> for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 00:20:37 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Q00FHERACNL30@a-mtaout23.012.net.il>; Mon, 03 Sep 2012 00:20:37 +0300 (IDT) Date: Mon, 03 Sep 2012 00:20:42 +0300 From: Eli Zaretskii Subject: Re: Signal-handler cleanup for Emacs In-reply-to: <5043ACF7.7080100@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <838vcsf7f9.fsf@gnu.org> References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sun, 02 Sep 2012 12:01:11 -0700 > From: Paul Eggert > CC: 12327@debbugs.gnu.org, lekktu@gmail.com > > On 09/02/2012 10:51 AM, Eli Zaretskii wrote: > > > that doesn't impede code reading and understanding in any way > > Sure it does, because Emacs defines symbols incompatibly with their > normal meanings. E.g., Emacs redefines 'sigblock' to be a macro > whose type signature is incompatible with the 'sigblock' > that is found on GNU/Linux. If that's the problem, then fix that, by changing the type. Why do more than is strictly needed? Gratuitous changes are BAAAD! > > I could go with replacing 'signal' etc. with their modern Posix > > replacements, such as 'sigaction', directly in the code. > > That would make the mainline code significantly less readable. > Instead of this, for example: > > unblock_signal (SIGPIPE); > > send_process_trap would have to do something like this: > > sigset_t mask; > ... > sigemptyset (&mask); > sigaddset (&mask, SIGPIPE); > pthread_sigmask (SIG_UNBLOCK, &mask, NULL); > > which is not an improvement. Of course, it's an improvement! That kind of code is a pattern programmers are used to see when signals are being masked. By contrast, when I see a call to unblock_signal, I need to look it up. > I suspect the main reason that Emacs currently uses macros reminiscent > but incompatible with the obsolete 4.2BSD interface, rather than the > standard POSIX interface, is because the 4.2BSD interface was simpler. No, it's just because the BSD interface was there first. > Unfortunately, the 4.2BSD interface does not scale well to modern > systems with lots of signals. I suggested to use sigaction and friends, not go back to the old APIs. > > I fail to see any good reasons for changes that, e.g., hide a > > pair of calls to well-known library functions, such as 'sigemptyset' > > and 'sigaddset', behind 'sigsetmask' (which AFAIK is a BSD-ism) > > There must be some confusion here. Yeah, did I say the new code is confusing? > > As for 0.6% reduction in the size of .text: what kind of humongous > > .text size do you have that makes 0.6% a significant value? > > Every little bit helps, no? Not every little bit can be justified by such non-trivial changes. Changes come at a cost, which should be justified. > But the main point of measuring text size > is as a rough gauge of the efficiency implications. If the text > segment had grown, that would have been a bad sign. Not necessarily. And certainly not at fractions of a percent. > Fewer instructions mean faster CPU performance, partly due to lower > pressure on the instruction cache. This all smells premature optimization to me. Text segment size has no direct relation to pressure on the instruction cache. What matters is the structure of the code in terms of branches and loops, and its locality. The size alone is almost meaningless. I'm sure you know that. > I didn't bother to measure CPU performance earlier, since that takes > more work, but I just now did that with an artificial benchmark that > simply blocks and then unblocks SIGCHLD, and on my platform the > proposed patch speeds up this benchmark by 15%. A meaningless benchmark, IMO. You need to measure an Emacs loop that does these block and unblock operations (if there is such a loop), and see the effect on that. _That_ would be interesting. From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 04:17:49 2012 Received: (at 12327) by debbugs.gnu.org; 3 Sep 2012 08:17:49 +0000 Received: from localhost ([127.0.0.1]:35555 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Rqs-0005IQ-1I for submit@debbugs.gnu.org; Mon, 03 Sep 2012 04:17:49 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:52975) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Rqk-0005ID-OH for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 04:17:45 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 90301A6001E; Mon, 3 Sep 2012 01:16:06 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id imkSC-Wx6fkC; Mon, 3 Sep 2012 01:16:03 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 59039A6001A; Mon, 3 Sep 2012 01:16:03 -0700 (PDT) Message-ID: <50446748.3060406@cs.ucla.edu> Date: Mon, 03 Sep 2012 01:16:08 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> In-Reply-To: <838vcsf7f9.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------010606010907020401040501" X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) This is a multi-part message in MIME format. --------------010606010907020401040501 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 09/02/2012 02:20 PM, Eli Zaretskii wrote: > If that's the problem, then fix that, by changing the type. If I understand this suggestion correctly, it's not practical. GNU/Linux sigblock returns 'int', but its signal masks require 1024 bits, too wide for 'int'. This is why sigblock has been removed from POSIX and is documented as obsolete in GNU/Linux. > Changes come at a cost, which should be justified. My point was that the new version is smaller and faster. How much smaller and faster doesn't matter much, as the primary justification for the change is to reduce the confusion caused by the current setup. > I could go with replacing 'signal' etc. with their modern Posix > replacements OK, thanks, I reworked the patch to implement that suggestion. I also modified it a bit in other ways, to boost the performance a bit (as that suggestion caused a small performance hit). The result is attached. I expect the Windows port will need a few tweaks. --------------010606010907020401040501 Content-Type: text/plain; charset=UTF-8; name="syssignal.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="syssignal.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTA5LTAy IDExOjEzOjI0ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0wOS0wMyAwMTo1NTozOSArMDAw MApAQCAtMSwzICsxLDEwIEBACisyMDEyLTA5LTAzICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCVNpZ25hbC1oYW5kbGVyIGNsZWFudXAgKEJ1ZyMxMjMyNykuCisJ KiBjb25maWd1cmUuYWMgKFBUWV9PUEVOLCBQVFlfVFRZX05BTUVfU1BSSU5URik6CisJQWRq dXN0IHRvIHN5c3NpZ25hbC5oIGNoYW5nZXMuCisJKFNJR05BTF9IX0FCKTogUmVtb3ZlOyBu byBsb25nZXIgbmVlZGVkLgorCiAyMDEyLTA5LTAyICBKYW4gRGrDpHJ2ICA8amFuLmguZEBz d2lwbmV0LnNlPgogCiAJKiBjb25maWd1cmUuYWMgKEhBVkVfR09CSkVDVCk6IENoZWNrIGZv ciBnb2JqZWN0LTIuMCAoQnVnIzEyMzMyKS4KCj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1 cmUuYWMnCi0tLSBjb25maWd1cmUuYWMJMjAxMi0wOS0wMiAxMToxMzoyNCArMDAwMAorKysg Y29uZmlndXJlLmFjCTIwMTItMDktMDMgMDE6NTY6MjggKzAwMDAKQEAgLTM0NTAsNyArMzQ1 MCw3IEBACiAgIGN5Z3dpbiApCiAgICAgQUNfREVGSU5FKFBUWV9JVEVSQVRJT04sIFtpbnQg aTsgZm9yIChpID0gMDsgaSA8IDE7IGkrKyldKQogICAgIGRubCBtdWx0aS1saW5lIEFDX0RF RklORXMgYXJlIGhhcmQuIDooCi0gICAgQUNfREVGSU5FKFBUWV9PUEVOLCBbIGRvIHsgaW50 IGR1bW15OyBTSUdNQVNLVFlQRSBtYXNrOyBtYXNrID0gc2lnYmxvY2sgKHNpZ21hc2sgKFNJ R0NITEQpKTsgaWYgKC0xID09IG9wZW5wdHkgKCZmZCwgJmR1bW15LCBwdHlfbmFtZSwgMCwg MCkpIGZkID0gLTE7IHNpZ3NldG1hc2sgKG1hc2spOyBpZiAoZmQgPj0gMCkgZW1hY3NfY2xv c2UgKGR1bW15KTsgfSB3aGlsZSAoMCldKQorICAgIEFDX0RFRklORShQVFlfT1BFTiwgWyBk byB7IGludCBkdW1teTsgc2lnc2V0X3QgYmxvY2tlZCwgcHJvY21hc2s7IHNpZ2VtcHR5c2V0 ICgmYmxvY2tlZCk7IHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR0NITEQpOyBwdGhyZWFkX3Np Z21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQsICZwcm9jbWFzayk7IGlmICgtMSA9PSBvcGVu cHR5ICgmZmQsICZkdW1teSwgcHR5X25hbWUsIDAsIDApKSBmZCA9IC0xOyBwdGhyZWFkX3Np Z21hc2sgKFNJR19TRVRNQVNLLCAmcHJvY21hc2ssIDApOyBpZiAoZmQgPj0gMCkgZW1hY3Nf Y2xvc2UgKGR1bW15KTsgfSB3aGlsZSAoMCldKQogICAgIEFDX0RFRklORShQVFlfTkFNRV9T UFJJTlRGLCBbXSkKICAgICBBQ19ERUZJTkUoUFRZX1RUWV9OQU1FX1NQUklOVEYsIFtdKQog ICAgIDs7CkBAIC0zNDc5LDcgKzM0NzksNyBAQAogICAgICAgQUNfREVGSU5FKFBUWV9JVEVS QVRJT04sIFtpbnQgaTsgZm9yIChpID0gMDsgaSA8IDE7IGkrKyldKQogICAgICAgZG5sIE5v dGUgdGhhdCBncmFudHB0IGFuZCB1bmxvY2twdCBtYXkgZm9yay4gIFdlIG11c3QgYmxvY2sg U0lHQ0hMRAogICAgICAgZG5sIHRvIHByZXZlbnQgc2lnY2hsZF9oYW5kbGVyIGZyb20gaW50 ZXJjZXB0aW5nIHRoZSBjaGlsZCdzIGRlYXRoLgotICAgICAgQUNfREVGSU5FKFBUWV9UVFlf TkFNRV9TUFJJTlRGLCBbeyBjaGFyICpwdHluYW1lOyBzaWdibG9jayAoc2lnbWFzayAoU0lH Q0hMRCkpOyBpZiAoZ3JhbnRwdCAoZmQpID09IC0xIHx8IHVubG9ja3B0IChmZCkgPT0gLTEg fHwgIShwdHluYW1lID0gcHRzbmFtZShmZCkpKSB7IHNpZ3VuYmxvY2sgKHNpZ21hc2sgKFNJ R0NITEQpKTsgY2xvc2UgKGZkKTsgcmV0dXJuIC0xOyB9IHNucHJpbnRmIChwdHlfbmFtZSwg c2l6ZW9mIHB0eV9uYW1lLCAiJXMiLCBwdHluYW1lKTsgc2lndW5ibG9jayAoc2lnbWFzayAo U0lHQ0hMRCkpOyB9XSkKKyAgICAgIEFDX0RFRklORShQVFlfVFRZX05BTUVfU1BSSU5URiwg W3sgY2hhciAqcHR5bmFtZSA9IDA7IHNpZ3NldF90IGJsb2NrZWQsIHByb2NtYXNrOyBzaWdl bXB0eXNldCAoJmJsb2NrZWQpOyBzaWdhZGRzZXQgKCZibG9ja2VkLCBTSUdDSExEKTsgcHRo cmVhZF9zaWdtYXNrIChTSUdfQkxPQ0ssICZibG9ja2VkLCAmcHJvY21hc2spOyBpZiAoZ3Jh bnRwdCAoZmQpICE9IC0xICYmIHVubG9ja3B0IChmZCkgIT0gLTEpIHB0eW5hbWUgPSBwdHNu YW1lKGZkKTsgcHRocmVhZF9zaWdtYXNrIChTSUdfU0VUTUFTSywgJnByb2NtYXNrLCAwKTsg aWYgKCFwdHluYW1lKSB7IGNsb3NlIChmZCk7IHJldHVybiAtMTsgfSBzbnByaW50ZiAocHR5 X25hbWUsIHNpemVvZiBwdHlfbmFtZSwgIiVzIiwgcHR5bmFtZSk7IH1dKQogICAgICAgZG5s IGlmIEhBVkVfUE9TSVhfT1BFTlBUCiAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcG9z aXhfb3BlbnB0IiA9IHh5ZXM7IHRoZW4KICAgICAgICAgQUNfREVGSU5FKFBUWV9PUEVOLCBb ZmQgPSBwb3NpeF9vcGVucHQgKE9fUkRXUiB8IE9fTk9DVFRZKV0pCkBAIC0zNTI0LDE4ICsz NTI0LDE1IEBACiAgICAgOzsKIAogICBzb2wyKiApCi0gICAgZG5sIFVzZXMgc2lnYmxvY2sv c2lndW5ibG9jayByYXRoZXIgdGhhbiBzaWdob2xkL3NpZ3JlbHNlLAotICAgIGRubCB3aGlj aCBhcHBlYXIgdG8gYmUgQlNENC4xIHNwZWNpZmljLiAgSXQgbWF5IGFsc28gYmUgYXBwcm9w cmlhdGUKLSAgICBkbmwgZm9yIFNWUjQueCAoeDwyKSBidXQgSSdtIG5vdCBzdXJlLiAgIGZu ZkBjeWdudXMuY29tCiAgICAgZG5sIE9uIFN5c1ZyNCwgZ3JhbnRwdCgzKSBmb3JrcyBhIHN1 YnByb2Nlc3MsIHNvIGtlZXAgc2lnY2hsZF9oYW5kbGVyKCkKICAgICBkbmwgZnJvbSBpbnRl cmNlcHRpbmcgdGhhdCBkZWF0aC4gIElmIGFueSBjaGlsZCBidXQgZ3JhbnRwdCdzIHNob3Vs ZCBkaWUKICAgICBkbmwgd2l0aGluLCBpdCBzaG91bGQgYmUgY2F1Z2h0IGFmdGVyIHNpZ3Jl bHNlKDIpLgotICAgIEFDX0RFRklORShQVFlfVFRZX05BTUVfU1BSSU5URiwgW3sgY2hhciAq cHRzbmFtZSAoaW50KSwgKnB0eW5hbWU7IHNpZ2Jsb2NrIChzaWdtYXNrIChTSUdDTEQpKTsg aWYgKGdyYW50cHQgKGZkKSA9PSAtMSkgeyBlbWFjc19jbG9zZSAoZmQpOyByZXR1cm4gLTE7 IH0gc2lndW5ibG9jayAoc2lnbWFzayAoU0lHQ0xEKSk7IGlmICh1bmxvY2twdCAoZmQpID09 IC0xKSB7IGVtYWNzX2Nsb3NlIChmZCk7IHJldHVybiAtMTsgfSBpZiAoIShwdHluYW1lID0g cHRzbmFtZSAoZmQpKSkgeyBlbWFjc19jbG9zZSAoZmQpOyByZXR1cm4gLTE7IH0gc25wcmlu dGYgKHB0eV9uYW1lLCBzaXplb2YgcHR5X25hbWUsICIlcyIsIHB0eW5hbWUpOyB9XSkKKyAg ICBBQ19ERUZJTkUoUFRZX1RUWV9OQU1FX1NQUklOVEYsIFt7IGNoYXIgKnB0c25hbWUgKGlu dCksICpwdHluYW1lOyBpbnQgZ3JhbnRwdF9yZXN1bHQ7IHNpZ3NldF90IGJsb2NrZWQsIHBy b2NtYXNrOyBzaWdlbXB0eXNldCAoJmJsb2NrZWQpOyBzaWdhZGRzZXQgKCZibG9ja2VkLCBT SUdDTEQpOyBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQsICZwcm9jbWFz ayk7IGdyYW50cHRfcmVzdWx0ID0gZ3JhbnRwdCAoZmQpOyBwdGhyZWFkX3NpZ21hc2sgKFNJ R19TRVRNQVNLLCAmcHJvY21hc2ssIDApOyBpZiAoZ3JhbnRwdF9yZXN1bHQgPT0gLTEgfHwg dW5sb2NrcHQgKGZkKSA9PSAtMSB8fCAhKHB0eW5hbWUgPSBwdHNuYW1lIChmZCkpKSB7IGVt YWNzX2Nsb3NlIChmZCk7IHJldHVybiAtMTsgfSBzbnByaW50ZiAocHR5X25hbWUsIHNpemVv ZiBwdHlfbmFtZSwgIiVzIiwgcHR5bmFtZSk7IH1dKQogICAgIDs7CiAKICAgdW5peHdhcmUg KQogICAgIGRubCBDb21tZW50cyBhcmUgYXMgcGVyIHNvbDIqLgotICAgIEFDX0RFRklORShQ VFlfVFRZX05BTUVfU1BSSU5URiwgW3sgY2hhciAqcHRzbmFtZSAoaW50KSwgKnB0eW5hbWU7 IHNpZ2Jsb2NrKHNpZ21hc2soU0lHQ0xEKSk7IGlmIChncmFudHB0KGZkKSA9PSAtMSkgZmF0 YWwoImNvdWxkIG5vdCBncmFudCBzbGF2ZSBwdHkiKTsgc2lndW5ibG9jayhzaWdtYXNrKFNJ R0NMRCkpOyBpZiAodW5sb2NrcHQoZmQpID09IC0xKSBmYXRhbCgiY291bGQgbm90IHVubG9j ayBzbGF2ZSBwdHkiKTsgaWYgKCEocHR5bmFtZSA9IHB0c25hbWUoZmQpKSkgZmF0YWwgKCJj b3VsZCBub3QgZW5hYmxlIHNsYXZlIHB0eSIpOyBzbnByaW50ZiAocHR5X25hbWUsIHNpemVv ZiBwdHlfbmFtZSwgIiVzIiwgcHR5bmFtZSk7IH1dKQorICAgIEFDX0RFRklORShQVFlfVFRZ X05BTUVfU1BSSU5URiwgW3sgY2hhciAqcHRzbmFtZSAoaW50KSwgKnB0eW5hbWU7IGludCBn cmFudHB0X3Jlc3VsdDsgc2lnc2V0X3QgYmxvY2tlZCwgcHJvY21hc2s7IHNpZ2VtcHR5c2V0 ICgmYmxvY2tlZCk7IHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR0NMRCk7IHB0aHJlYWRfc2ln bWFzayAoU0lHX0JMT0NLLCAmYmxvY2tlZCwgJnByb2NtYXNrKTsgZ3JhbnRwdF9yZXN1bHQg PSBncmFudHB0IChmZCk7IHB0aHJlYWRfc2lnbWFzayAoU0lHX0JMT0NLLCAmYmxvY2tlZCwg JnByb2NtYXNrKTsgaWYgKGdyYW50cHRfcmVzdWx0ID09IC0xKSBmYXRhbCgiY291bGQgbm90 IGdyYW50IHNsYXZlIHB0eSIpOyBpZiAodW5sb2NrcHQoZmQpID09IC0xKSBmYXRhbCgiY291 bGQgbm90IHVubG9jayBzbGF2ZSBwdHkiKTsgaWYgKCEocHR5bmFtZSA9IHB0c25hbWUoZmQp KSkgZmF0YWwgKCJjb3VsZCBub3QgZW5hYmxlIHNsYXZlIHB0eSIpOyBzbnByaW50ZiAocHR5 X25hbWUsIHNpemVvZiBwdHlfbmFtZSwgIiVzIiwgcHR5bmFtZSk7IH1dKQogICAgIDs7CiBl c2FjCiAKQEAgLTM4MTEsMTMgKzM4MDgsNiBAQAogICAgIEFDX0RFRklORShYT1NfTkVFRFNf VElNRV9ILCAxLCBbQ29tcGVuc2F0ZSBmb3IgYSBidWcgaW4gWG9zLmggb24KICAgICAgIHNv bWUgc3lzdGVtcywgd2hlcmUgaXQgcmVxdWlyZXMgdGltZS5oLl0pCiAgICAgOzsKLQotICBu ZXRic2QgfCBvcGVuYnNkICkKLSAgICBkbmwgR3JlZyBBLiBXb29kcyA8d29vZHNAd2VpcmQu Y29tPiBzYXlzIHdlIG11c3QgaW5jbHVkZSBzaWduYWwuaAotICAgIGRubCBiZWZvcmUgc3lz c2lnbmFsLmggaXMgaW5jbHVkZWQsIHRvIHdvcmsgYXJvdW5kIGludGVyZmFjZSBjb25mbGlj dHMKLSAgICBkbmwgdGhhdCBhcmUgaGFuZGxlZCB3aXRoIENQUCBfX1JFTkFNRSgpIG1hY3Jv IGluIHNpZ25hbC5oLgotICAgIEFDX0RFRklORShTSUdOQUxfSF9BSEIsIDEsIFtEZWZpbmUg aWYgQUhfQk9UVE9NIHNob3VsZCBpbmNsdWRlIHNpZ25hbC5oLl0pCi0gICAgOzsKIGVzYWMK IAogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL0NoYW5nZUxvZycKLS0tIHNyYy9DaGFuZ2VM b2cJMjAxMi0wOS0wMiAxNzoxMDozNSArMDAwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEyLTA5 LTAzIDA4OjAyOjMzICswMDAwCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTItMDktMDMgIFBhdWwg RWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJU2lnbmFsLWhhbmRsZXIgY2xlYW51 cCAoQnVnIzEyMzI3KS4KKwlFbWFjcydzIHNpZ25hbCBoYW5kbGVycyB3ZXJlIHdyaXR0ZW4g aW4gdGhlIG9sZCA0LjJCU0Qgc3R5bGUgd2l0aAorCXNpZ2Jsb2NrIGFuZCBzaWdtYXNrIGFu ZCBzbyBmb3J0aCwgYW5kIHRoaXMgbGVkIHRvIHNvbWUKKwlpbmVmZmljaWVuY2llcyBhbmQg Y29uZnVzaW9uLiAgUmV3cml0ZSB0aGVzZSB0byB1c2UKKwlwdGhyZWFkX3NpZ21hc2sgZXRj LiB3aXRob3V0IGNvcHlpbmcgc2lnbmFsIHNldHMgYXJvdW5kLiAgQWxzbywKKwlnZXQgcmlk IG9mIHRoZSBjb25mdXNpbmcgbWFjcm9zICdTSUdOQUxfVEhSRUFEX0NIRUNLJyBhbmQKKwkn c2lnbmFsJywgYW5kIGluc3RlYWQgdXNlIGZ1bmN0aW9ucyB0aGF0IGRvIG5vdCBhdHRlbXB0 IHRvIHRha2UKKwlvdmVyIHRoZSBzeXN0ZW0gbmFtZSBzcGFjZS4gIFRoaXMgcGF0Y2ggY2F1 c2VzIEVtYWNzJ3MgdGV4dAorCXNlZ21lbnQgdG8gc2hyaW5rIGJ5IDAuNyUgb24gbXkgcGxh dGZvcm0sIEZlZG9yYSAxNyB4ODYtNjQuCisJKiBhbGxvYy5jLCBlbWFjc2d0a2ZpeGVkLmMs IG5zZm5zLm0sIHdpZGdldC5jLCB4bWVudS5jOgorCURvIG5vdCBpbmNsdWRlIDxzaWduYWwu aD4gb3IgInN5c3NpZ25hbC5oIiwgYXMgdGhlc2UKKwltb2R1bGVzIGRvIG5vdCB1c2Ugc2ln bmFscy4KKwkqIGF0aW1lci5jLCBjYWxscHJvYy5jLCBkYXRhLmMsIGRpc3BuZXcuYywgZW1h Y3MuYywgZmxvYXRmbnMuYzoKKwkqIGd0a3V0aWwuYywga2V5Ym9hcmQuYywgcHJvY2Vzcy5j LCBzb3VuZC5jLCBzeXNkZXAuYywgdGVybS5jLCB4dGVybS5jOgorCURvIG5vdCBpbmNsdWRl IDxzaWduYWwuaD4sIGFzICJzeXNzaWduYWwuaCIgZG9lcyB0aGF0IGZvciB1cyBub3cuCisJ KiBhdGltZXIuYyAoc2lnbWFza19hdGltZXJzKTogTmV3IGZ1bmN0aW9uLgorCShibG9ja19h dGltZXJzLCB1bmJsb2NrX2F0aW1lcnMpOiBOZXcgZnVuY3Rpb25zLAorCXJlcGxhY2luZyB0 aGUgb2xkIG1hY3JvcyBCTE9DS19BVElNRVJTIGFuZCBVTkJMT0NLX0FUSU1FUlMuCisJQWxs IHVzZXMgcmVwbGFjZWQuCisJKiBjb25mX3Bvc3QuaCBbU0lHTkFMX0hfQUhCXTogRG8gbm90 IGluY2x1ZGUgPHNpZ25hbC5oPjsKKwlubyBsb25nZXIgbmVlZGVkIGhlcmUuCisJKiBlbWFj cy5jIChtYWluKTogSW5zcGVjdCBleGlzdGluZyBzaWduYWwgaGFuZGxlciB3aXRoIHNpZ2Fj dGlvbiwKKwlzbyB0aGF0IHRoZXJlJ3MJbm8gbmVlZCB0byBibG9jayBhbmQgdW5ibG9jayBT SUdIVVAuCisJKiBzeXNkZXAuYywgc3lzc2lnbmFsLmggKFNZU1NJR05BTF9JTkxJTkUpOiBO ZXcgbWFjcm8uCisJKiBzeXNkZXAuYyAoc3RydWN0IHNhdmVfc2lnbmFsKTogTmV3IG1lbWJl ciAnYWN0aW9uJywgcmVwbGFjaW5nCisJb2xkIG1lbWJlciAnaGFuZGxlcicuCisJKHNhdmVf c2lnbmFsX2hhbmRsZXJzLCByZXN0b3JlX3NpZ25hbF9oYW5kbGVycyk6CisJVXNlIHNpZ2Fj dGlvbiBpbnN0ZWFkIG9mICdzaWduYWwnIHRvIHNhdmUgYW5kIHJlc3RvcmUuCisJKGdldF9z ZXRfc2lnaGFuZGxlciwgc2V0X3NpZ2hhbmRsZXIpIFshV0lORE9XU05UXToKKwlOZXcgZnVu Y3Rpb24uICBBbGwgdXNlcnMgb2YgJ3NpZ25hbCcgbW9kaWZpZWQgdG8gdXNlIHNldF9zaWdo YW5kbGVyCisJaWYgdGhleSdyZSB3cml0ZW9ubHksIGFuZCB0byB1c2Ugc3lzX3NpZ25hbCBp ZiB0aGV5J3JlIHJlYWQrd3JpdGUuCisJKGVtYWNzX3NpZ2FjdGlvbl9pbml0LCBmb3J3YXJk ZWRfc2lnbmFsKTogTmV3IGZ1bmN0aW9ucy4KKwkoc3lzX3NpZ25hbCk6IFJlbW92ZS4gIEFs bCB1c2VzIHJlcGxhY2VkIGJ5IGNhbGxzIHRvIHNpZ2FjdGlvbgorCWFuZCBlbWFjc19zaWdh Y3Rpb25faW5pdCwgb3IgYnkgZGlyZWN0IGNhbGxzIHRvICdzaWduYWwnLgorCShzeXNfc2ln bWFzaykgWyFfX0dOVUNfX106IFJlbW92ZTsgbm8gbG9uZ2VyIG5lZWRlZC4KKwkoc3lzX3Np Z2Jsb2NrLCBzeXNfc2lndW5ibG9jaywgc3lzX3NpZ3NldG1hc2spOiBSZW1vdmU7CisJYWxs IHVzZXMgcmVwbGFjZWQgYnkgcHRocmVhZF9zaWdtYXNrIGV0Yy4gY2FsbHMuCisJKiBzeXNz aWduYWwuaDogSW5jbHVkZSA8c2lnbmFsLmg+IGFuZCA8c3RkYm9vbC5oPi4KKwlVc2UgSU5M SU5FX0hFQURFUl9CRUdJTiwgSU5MSU5FX0hFQURFUl9FTkQuCisJKGVtYWNzX3NpZ2FjdGlv bl9pbml0LCBmb3J3YXJkZWRfc2lnbmFsKTogTmV3IGRlY2xzLgorCShTSUdNQVNLVFlQRSk6 IFJlbW92ZS4gIEFsbCB1c2VzIHJlcGxhY2VkIGJ5IGl0cyBkZWZpbmllbnMsIHNpZ3NldF90 LgorCShTSUdFTVBUWU1BU0spOiBSZW1vdmU7IGFsbCB1c2VzIHJlcGxhY2VkIGJ5IGl0cyBk ZWZpbmllbnMsIGVtcHR5X21hc2suCisJKHNpZ21hc2ssIHN5c19zaWdtYXNrKTogUmVtb3Zl OyBubyBsb25nZXIgbmVlZGVkLgorCShzaWdwYXVzZSk6IFJlbW92ZS4gIEFsbCB1c2VzIHJl cGxhY2VkIGJ5IGl0cyBkZWZpbmllbnMsIHNpZ3N1c3BlbmQuCisJKHNpZ2Jsb2NrLCBzaWd1 bmJsb2NrLCBzaWdmcmVlKToKKwkoc2lnc2V0bWFzaykgWyFkZWZpbmVkIHNpZ3NldG1hc2td OgorCVJlbW92ZS4gIEFsbCB1c2VzIHJlcGxhY2VkIGJ5IHB0aHJlYWRfc2lnbWFzay4KKwko c2lnbmFsKTogUmVtb3ZlLiAgSXRzIHJlbWFpbmluZyB1c2VzICh3aXRoIFNJR19ERkwgYW5k IFNJR19JR04pCisJbm8gbG9uZ2VyIG5lZWQgdG8gYmUgcmVwbGFjZWQsIGFuZCBpdHMgdHlw aWNhbCBvbGQgdXNlcworCWFyZSBub3cgZG9uZSB2aWEgZW1hY3Nfc2lnYWN0aW9uX2luaXQg YW5kIHNpZ2FjdGlvbi4KKwkoc3lzX3NpZ2Jsb2NrLCBzeXNfc2lndW5ibG9jaywgc3lzX3Np Z3NldG1hc2spOiBSZW1vdmUgZGVjbHMuCisJKHN5c19zaWdkZWwpOiBSZW1vdmU7IHVudXNl ZC4KKwkoTlNJRyk6IFJlbW92ZSBhIEZJWE1FOyB0aGUgY29kZSdzIGZpbmUuICBSZW1vdmUg YW4gdW5uZWNlc3NhcnkgaWZkZWYuCisJKFNJR05BTF9USFJFQURfQ0hFQ0spOiBSZW1vdmUu ICBBbGwgdXNlcyByZXBsYWNlZCBieSBjYWxscyB0bworCWZvcndhcmRlZF9zaWduYWwuICBU aGlzIGlzIGNsZWFuZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBjYW4gbm93CisJc2VlIHRoYXQg dGhlIGNoZWNrIG1pZ2h0IGltbWVkaWF0ZWx5IHJldHVybiBmcm9tIHRoZSBjYWxsZXIuCisK IDIwMTItMDktMDIgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCiAJKiBl bWFjcy5jLCBldmFsLmM6IFVzZSBib29sIGZvciBib29sZWFuLgoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0wOS0wMiAxNjo1NjozMSAr MDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wOS0wMyAwMDowNjoyNSArMDAwMApAQCAtMjYs OCArMjYsNiBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgkJLyogRm9yIENIQVJfQklULiAgKi8K ICNpbmNsdWRlIDxzZXRqbXAuaD4KIAotI2luY2x1ZGUgPHNpZ25hbC5oPgotCiAjaWZkZWYg SEFWRV9QVEhSRUFECiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCkBAIC00Miw3ICs0 MCw2IEBACiAjaW5jbHVkZSAia2V5Ym9hcmQuaCIKICNpbmNsdWRlICJmcmFtZS5oIgogI2lu Y2x1ZGUgImJsb2NraW5wdXQuaCIKLSNpbmNsdWRlICJzeXNzaWduYWwuaCIKICNpbmNsdWRl ICJ0ZXJtaG9va3MuaCIJCS8qIEZvciBzdHJ1Y3QgdGVybWluYWwuICAqLwogI2luY2x1ZGUg PHNldGptcC5oPgogI2luY2x1ZGUgPHZlcmlmeS5oPgoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy9hdGltZXIuYycKLS0tIHNyYy9hdGltZXIuYwkyMDEyLTA4LTIzIDA4OjI3OjA4ICswMDAw CisrKyBzcmMvYXRpbWVyLmMJMjAxMi0wOS0wMyAwNzoyNDowMyArMDAwMApAQCAtMTcsNyAr MTcsNiBAQAogYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5j bHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzZXRqbXAu aD4KICNpbmNsdWRlICJsaXNwLmgiCkBAIC01MSw4ICs1MCwyNCBAQAogCiAvKiBCbG9jay91 bmJsb2NrIFNJR0FMUk0uICAqLwogCi0jZGVmaW5lIEJMT0NLX0FUSU1FUlMgICBzaWdibG9j ayAoc2lnbWFzayAoU0lHQUxSTSkpCi0jZGVmaW5lIFVOQkxPQ0tfQVRJTUVSUyBzaWd1bmJs b2NrIChzaWdtYXNrIChTSUdBTFJNKSkKK3N0YXRpYyB2b2lkCitzaWdtYXNrX2F0aW1lcnMg KGludCBob3cpCit7CisgIHNpZ3NldF90IGJsb2NrZWQ7CisgIHNpZ2VtcHR5c2V0ICgmYmxv Y2tlZCk7CisgIHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR0FMUk0pOworICBwdGhyZWFkX3Np Z21hc2sgKGhvdywgJmJsb2NrZWQsIDApOworfQorc3RhdGljIHZvaWQKK2Jsb2NrX2F0aW1l cnMgKHZvaWQpCit7CisgIHNpZ21hc2tfYXRpbWVycyAoU0lHX0JMT0NLKTsKK30KK3N0YXRp YyB2b2lkCit1bmJsb2NrX2F0aW1lcnMgKHZvaWQpCit7CisgIHNpZ21hc2tfYXRpbWVycyAo U0lHX1VOQkxPQ0spOworfQogCiAvKiBGdW5jdGlvbiBwcm90b3R5cGVzLiAgKi8KIApAQCAt MTExLDcgKzEyNiw3IEBACiAgIHQtPmZuID0gZm47CiAgIHQtPmNsaWVudF9kYXRhID0gY2xp ZW50X2RhdGE7CiAKLSAgQkxPQ0tfQVRJTUVSUzsKKyAgYmxvY2tfYXRpbWVycyAoKTsKIAog ICAvKiBDb21wdXRlIHRoZSB0aW1lcidzIGV4cGlyYXRpb24gdGltZS4gICovCiAgIHN3aXRj aCAodHlwZSkKQEAgLTEzMiw3ICsxNDcsNyBAQAogCiAgIC8qIEluc2VydCB0aGUgdGltZXIg aW4gdGhlIGxpc3Qgb2YgYWN0aXZlIGF0aW1lcnMuICAqLwogICBzY2hlZHVsZV9hdGltZXIg KHQpOwotICBVTkJMT0NLX0FUSU1FUlM7CisgIHVuYmxvY2tfYXRpbWVycyAoKTsKIAogICAv KiBBcnJhbmdlIGZvciBhIFNJR0FMUk0gYXQgdGhlIHRpbWUgdGhlIG5leHQgYXRpbWVyIGlz IHJpcGUuICAqLwogICBzZXRfYWxhcm0gKCk7CkBAIC0xNDgsNyArMTYzLDcgQEAKIHsKICAg aW50IGk7CiAKLSAgQkxPQ0tfQVRJTUVSUzsKKyAgYmxvY2tfYXRpbWVycyAoKTsKIAogICBm b3IgKGkgPSAwOyBpIDwgMjsgKytpKQogICAgIHsKQEAgLTE3NSw3ICsxOTAsNyBAQAogCX0K ICAgICB9CiAKLSAgVU5CTE9DS19BVElNRVJTOworICB1bmJsb2NrX2F0aW1lcnMgKCk7CiB9 CiAKIApAQCAtMjA2LDcgKzIyMSw3IEBACiB2b2lkCiBzdG9wX290aGVyX2F0aW1lcnMgKHN0 cnVjdCBhdGltZXIgKnQpCiB7Ci0gIEJMT0NLX0FUSU1FUlM7CisgIGJsb2NrX2F0aW1lcnMg KCk7CiAKICAgaWYgKHQpCiAgICAgewpAQCAtMjMxLDcgKzI0Niw3IEBACiAKICAgc3RvcHBl ZF9hdGltZXJzID0gYXBwZW5kX2F0aW1lcl9saXN0cyAoYXRpbWVycywgc3RvcHBlZF9hdGlt ZXJzKTsKICAgYXRpbWVycyA9IHQ7Ci0gIFVOQkxPQ0tfQVRJTUVSUzsKKyAgdW5ibG9ja19h dGltZXJzICgpOwogfQogCiAKQEAgLTI0Niw3ICsyNjEsNyBAQAogICAgICAgc3RydWN0IGF0 aW1lciAqdCA9IGF0aW1lcnM7CiAgICAgICBzdHJ1Y3QgYXRpbWVyICpuZXh0OwogCi0gICAg ICBCTE9DS19BVElNRVJTOworICAgICAgYmxvY2tfYXRpbWVycyAoKTsKICAgICAgIGF0aW1l cnMgPSBzdG9wcGVkX2F0aW1lcnM7CiAgICAgICBzdG9wcGVkX2F0aW1lcnMgPSBOVUxMOwog CkBAIC0yNTcsNyArMjcyLDcgQEAKIAkgIHQgPSBuZXh0OwogCX0KIAotICAgICAgVU5CTE9D S19BVElNRVJTOworICAgICAgdW5ibG9ja19hdGltZXJzICgpOwogICAgIH0KIH0KIApAQCAt Mzc4LDcgKzM5Myw4IEBACiBhbGFybV9zaWduYWxfaGFuZGxlciAoaW50IHNpZ25vKQogewog I2lmbmRlZiBTWU5DX0lOUFVUCi0gIFNJR05BTF9USFJFQURfQ0hFQ0sgKHNpZ25vKTsKKyAg aWYgKGZvcndhcmRlZF9zaWduYWwgKHNpZ25vKSkKKyAgICByZXR1cm47CiAjZW5kaWYKIAog ICBwZW5kaW5nX2F0aW1lcnMgPSAxOwpAQCAtMzk3LDkgKzQxMyw5IEBACiB7CiAgIGlmIChw ZW5kaW5nX2F0aW1lcnMpCiAgICAgewotICAgICAgQkxPQ0tfQVRJTUVSUzsKKyAgICAgIGJs b2NrX2F0aW1lcnMgKCk7CiAgICAgICBydW5fdGltZXJzICgpOwotICAgICAgVU5CTE9DS19B VElNRVJTOworICAgICAgdW5ibG9ja19hdGltZXJzICgpOwogICAgIH0KIH0KIApAQCAtNDEy LDcgKzQyOCw5IEBACiB7CiAgIGlmIChvbikKICAgICB7Ci0gICAgICBzaWduYWwgKFNJR0FM Uk0sIGFsYXJtX3NpZ25hbF9oYW5kbGVyKTsKKyAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0 aW9uOworICAgICAgZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIGFsYXJtX3NpZ25h bF9oYW5kbGVyKTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHQUxSTSwgJmFjdGlvbiwgMCk7CiAg ICAgICBzZXRfYWxhcm0gKCk7CiAgICAgfQogICBlbHNlCkBAIC00MjMsOCArNDQxLDEwIEBA CiB2b2lkCiBpbml0X2F0aW1lciAodm9pZCkKIHsKKyAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rp b247CiAgIGZyZWVfYXRpbWVycyA9IHN0b3BwZWRfYXRpbWVycyA9IGF0aW1lcnMgPSBOVUxM OwogICBwZW5kaW5nX2F0aW1lcnMgPSAwOwogICAvKiBwZW5kaW5nX3NpZ25hbHMgaXMgaW5p dGlhbGl6ZWQgaW4gaW5pdF9rZXlib2FyZC4qLwotICBzaWduYWwgKFNJR0FMUk0sIGFsYXJt X3NpZ25hbF9oYW5kbGVyKTsKKyAgZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIGFs YXJtX3NpZ25hbF9oYW5kbGVyKTsKKyAgc2lnYWN0aW9uIChTSUdBTFJNLCAmYWN0aW9uLCAw KTsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbHByb2MuYycKLS0tIHNyYy9jYWxs cHJvYy5jCTIwMTItMDgtMjUgMDM6MTE6MTIgKzAwMDAKKysrIHNyYy9jYWxscHJvYy5jCTIw MTItMDktMDMgMDY6NTA6MTkgKzAwMDAKQEAgLTE5LDcgKzE5LDYgQEAKIAogCiAjaW5jbHVk ZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K ICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHNldGptcC5oPgpAQCAtNTA2LDkgKzUw NSw2IEBACiAKICAgICBpZiAoZmRfb3V0cHV0ID49IDApCiAgICAgICBmZDEgPSBmZF9vdXRw dXQ7Ci0jaWYgMCAgLyogU29tZSBzeXN0ZW1zIGRvbid0IGhhdmUgc2lnYmxvY2suICAqLwot ICAgIG1hc2sgPSBzaWdibG9jayAoc2lnbWFzayAoU0lHQ0hMRCkpOwotI2VuZGlmCiAKICAg ICAvKiBSZWNvcmQgdGhhdCB3ZSdyZSBhYm91dCB0byBjcmVhdGUgYSBzeW5jaHJvbm91cyBw cm9jZXNzLiAgKi8KICAgICBzeW5jaF9wcm9jZXNzX2FsaXZlID0gMTsKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvY29uZl9wb3N0LmgnCi0tLSBzcmMvY29uZl9wb3N0LmgJMjAxMi0wOC0y MCAxNjo0ODoxMCArMDAwMAorKysgc3JjL2NvbmZfcG9zdC5oCTIwMTItMDktMDEgMjE6Mzc6 MDcgKzAwMDAKQEAgLTQwLDExICs0MCw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWZkZWYg U0lHTkFMX0hfQUhCCi0jdW5kZWYgU0lHTkFMX0hfQUhCCi0jaW5jbHVkZSA8c2lnbmFsLmg+ Ci0jZW5kaWYKLQogLyogVGhpcyBzaWxlbmNlcyBhIGZldyBjb21waWxhdGlvbiB3YXJuaW5n cyBvbiBGcmVlQlNELiAgKi8KICNpZmRlZiBCU0RfU1lTVEVNX0FIQgogI3VuZGVmIEJTRF9T WVNURU1fQUhCCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RhdGEuYycKLS0tIHNyYy9kYXRh LmMJMjAxMi0wOC0yNyAxNzoyMzo0OCArMDAwMAorKysgc3JjL2RhdGEuYwkyMDEyLTA5LTAz IDA3OjI0OjAzICswMDAwCkBAIC0xOSw3ICsxOSw2IEBACiAKIAogI2luY2x1ZGUgPGNvbmZp Zy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVk ZSA8c2V0am1wLmg+CiAKQEAgLTMyMTMsMTUgKzMyMTIsMTYgQEAKIHN0YXRpYyB2b2lkCiBh cml0aF9lcnJvciAoaW50IHNpZ25vKQogewotICBzaWdzZXRtYXNrIChTSUdFTVBUWU1BU0sp OwotCi0gIFNJR05BTF9USFJFQURfQ0hFQ0sgKHNpZ25vKTsKKyAgcHRocmVhZF9zaWdtYXNr IChTSUdfU0VUTUFTSywgJmVtcHR5X21hc2ssIDApOworICBpZiAoZm9yd2FyZGVkX3NpZ25h bCAoc2lnbm8pKQorICAgIHJldHVybjsKICAgeHNpZ25hbDAgKFFhcml0aF9lcnJvcik7CiB9 CiAKIHZvaWQKIGluaXRfZGF0YSAodm9pZCkKIHsKKyAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rp b247CiAgIC8qIERvbid0IGRvIHRoaXMgaWYganVzdCBkdW1waW5nIG91dC4KICAgICAgV2Ug ZG9uJ3Qgd2FudCB0byBjYWxsIGBzaWduYWwnIGluIHRoaXMgY2FzZQogICAgICBzbyB0aGF0 IHdlIGRvbid0IGhhdmUgdHJvdWJsZSB3aXRoIGR1bXBpbmcKQEAgLTMyMzAsNSArMzIzMCw2 IEBACiAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgcmV0dXJuOwogI2VuZGlmIC8qIENBTk5P VF9EVU1QICovCi0gIHNpZ25hbCAoU0lHRlBFLCBhcml0aF9lcnJvcik7CisgIGVtYWNzX3Np Z2FjdGlvbl9pbml0ICgmYWN0aW9uLCBhcml0aF9lcnJvcik7CisgIHNpZ2FjdGlvbiAoU0lH RlBFLCAmYWN0aW9uLCAwKTsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZGlzcG5ldy5j JwotLS0gc3JjL2Rpc3BuZXcuYwkyMDEyLTA5LTAxIDA2OjM4OjUyICswMDAwCisrKyBzcmMv ZGlzcG5ldy5jCTIwMTItMDktMDMgMDc6MjQ6MDMgKzAwMDAKQEAgLTIxLDcgKzIxLDYgQEAK IAogI2RlZmluZSBESVNQRVhURVJOX0lOTElORSBFWFRFUk5fSU5MSU5FCiAKLSNpbmNsdWRl IDxzaWduYWwuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHNldGptcC5oPgog I2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTU2MSw4ICs1NTYwLDExIEBACiAKICAgc3RydWN0 IHR0eV9kaXNwbGF5X2luZm8gKnR0eTsKIAotICBzaWduYWwgKFNJR1dJTkNILCB3aW5kb3df Y2hhbmdlX3NpZ25hbCk7Ci0gIFNJR05BTF9USFJFQURfQ0hFQ0sgKHNpZ25hbG51bSk7Cisg IHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworICBlbWFjc19zaWdhY3Rpb25faW5pdCAoJmFj dGlvbiwgd2luZG93X2NoYW5nZV9zaWduYWwpOworICBzaWdhY3Rpb24gKFNJR1dJTkNILCAm YWN0aW9uLCAwKTsKKyAgaWYgKGZvcndhcmRlZF9zaWduYWwgKHNpZ25hbG51bSkpCisgICAg cmV0dXJuOwogCiAgIC8qIFRoZSBmcmFtZSBzaXplIGNoYW5nZSBvYnZpb3VzbHkgYXBwbGll cyB0byBhIHNpbmdsZQogICAgICB0ZXJtY2FwLWNvbnRyb2xsZWQgdGVybWluYWwsIGJ1dCB3 ZSBjYW4ndCBkZWNpZGUgd2hpY2guCkBAIC02MTczLDcgKzYxNzUsMTEgQEAKICNpZm5kZWYg Q0FOTk9UX0RVTVAKICAgaWYgKGluaXRpYWxpemVkKQogI2VuZGlmIC8qIENBTk5PVF9EVU1Q ICovCi0gICAgc2lnbmFsIChTSUdXSU5DSCwgd2luZG93X2NoYW5nZV9zaWduYWwpOworICAg IHsKKyAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworICAgICAgZW1hY3Nfc2lnYWN0 aW9uX2luaXQgKCZhY3Rpb24sIHdpbmRvd19jaGFuZ2Vfc2lnbmFsKTsKKyAgICAgIHNpZ2Fj dGlvbiAoU0lHV0lOQ0gsICZhY3Rpb24sIDApOworICAgIH0KICNlbmRpZiAvKiBTSUdXSU5D SCAqLwogCiAgIC8qIElmIHJ1bm5pbmcgYXMgYSBkYWVtb24sIG5vIG5lZWQgdG8gaW5pdGlh bGl6ZSBhbnkgZnJhbWVzL3Rlcm1pbmFsLiAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9l bWFjcy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxMi0wOS0wMiAxNzoxMDozNSArMDAwMAorKysg c3JjL2VtYWNzLmMJMjAxMi0wOS0wMyAwNzoyNDowMyArMDAwMApAQCAtMjAsNyArMjAsNiBA QAogCiAKICNpbmNsdWRlIDxjb25maWcuaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNs dWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTI5Nyw3ICsyOTYsMTAg QEAKIHZvaWQKIGZhdGFsX2Vycm9yX3NpZ25hbCAoaW50IHNpZykKIHsKLSAgU0lHTkFMX1RI UkVBRF9DSEVDSyAoc2lnKTsKKyAgc2lnc2V0X3QgdW5ibG9ja2VkOworCisgIGlmIChmb3J3 YXJkZWRfc2lnbmFsIChzaWcpKQorICAgIHJldHVybjsKICAgZmF0YWxfZXJyb3JfY29kZSA9 IHNpZzsKICAgc2lnbmFsIChzaWcsIFNJR19ERkwpOwogCkBAIC0zMTksNyArMzIxLDkgQEAK ICAgICAgZ29pbmcgdG8gc2VuZCBpcyBwcm9iYWJseSBibG9ja2VkLCBzbyB3ZSBoYXZlIHRv IHVuYmxvY2sgaXQgaWYgd2UKICAgICAgd2FudCB0byByZWFsbHkgcmVjZWl2ZSBpdC4gICov CiAjaWZuZGVmIE1TRE9TCi0gIHNpZ3VuYmxvY2sgKHNpZ21hc2sgKGZhdGFsX2Vycm9yX2Nv ZGUpKTsKKyAgc2lnZW1wdHlzZXQgKCZ1bmJsb2NrZWQpOworICBzaWdhZGRzZXQgKCZ1bmJs b2NrZWQsIGZhdGFsX2Vycm9yX2NvZGUpOworICBwdGhyZWFkX3NpZ21hc2sgKFNJR19VTkJM T0NLLCAmdW5ibG9ja2VkLCAwKTsKICNlbmRpZgogCiAgIGtpbGwgKGdldHBpZCAoKSwgZmF0 YWxfZXJyb3JfY29kZSk7CkBAIC0zMzEsOCArMzM1LDExIEBACiB2b2lkCiBtZW1vcnlfd2Fy bmluZ19zaWduYWwgKGludCBzaWcpCiB7Ci0gIHNpZ25hbCAoc2lnLCBtZW1vcnlfd2Fybmlu Z19zaWduYWwpOwotICBTSUdOQUxfVEhSRUFEX0NIRUNLIChzaWcpOworICBzdHJ1Y3Qgc2ln YWN0aW9uIGFjdGlvbjsKKyAgZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIG1lbW9y eV93YXJuaW5nX3NpZ25hbCk7CisgIHNpZ2FjdGlvbiAoc2lnLCAmYWN0aW9uLCAwKTsKKyAg aWYgKGZvcndhcmRlZF9zaWduYWwgKHNpZykpCisgICAgcmV0dXJuOwogCiAgIG1hbGxvY193 YXJuaW5nICgiT3BlcmF0aW5nIHN5c3RlbSB3YXJucyB0aGF0IHZpcnR1YWwgbWVtb3J5IGlz IHJ1bm5pbmcgbG93LlxuIik7CiAKQEAgLTY4Nyw2ICs2OTQsNyBAQAogICBjaGFyIGRuYW1l X2FyZzJbODBdOwogI2VuZGlmCiAgIGNoYXIgKmNoX3RvX2RpcjsKKyAgc3RydWN0IHNpZ2Fj dGlvbiBmYXRhbF9lcnJvcl9hY3Rpb247CiAKICNpZiBHQ19NQVJLX1NUQUNLCiAgIHN0YWNr X2Jhc2UgPSAmZHVtbXk7CkBAIC0xMTExLDYgKzExMTksNyBAQAogICAgIH0KIAogICBpbml0 X3NpZ25hbHMgKCk7CisgIGVtYWNzX3NpZ2FjdGlvbl9pbml0ICgmZmF0YWxfZXJyb3JfYWN0 aW9uLCBmYXRhbF9lcnJvcl9zaWduYWwpOwogCiAgIC8qIERvbid0IGNhdGNoIFNJR0hVUCBp ZiBkdW1waW5nLiAgKi8KICAgaWYgKDEKQEAgLTExMTksMTMgKzExMjgsMTcgQEAKICNlbmRp ZgogICAgICAgKQogICAgIHsKLSAgICAgIHNpZ2Jsb2NrIChzaWdtYXNrIChTSUdIVVApKTsK ICAgICAgIC8qIEluIC0tYmF0Y2ggbW9kZSwgZG9uJ3QgY2F0Y2ggU0lHSFVQIGlmIGFscmVh ZHkgaWdub3JlZC4KIAkgVGhhdCBtYWtlcyBub2h1cCB3b3JrLiAgKi8KLSAgICAgIGlmICgh IG5vbmludGVyYWN0aXZlCi0JICB8fCBzaWduYWwgKFNJR0hVUCwgU0lHX0lHTikgIT0gU0lH X0lHTikKLQlzaWduYWwgKFNJR0hVUCwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKLSAgICAgIHNp Z3VuYmxvY2sgKHNpZ21hc2sgKFNJR0hVUCkpOworICAgICAgYm9vbCBjYXRjaF9TSUdIVVAg PSAhbm9uaW50ZXJhY3RpdmU7CisgICAgICBpZiAoIWNhdGNoX1NJR0hVUCkKKwl7CisJICBz dHJ1Y3Qgc2lnYWN0aW9uIG9sZF9hY3Rpb247CisJICBzaWdhY3Rpb24gKFNJR0hVUCwgMCwg Jm9sZF9hY3Rpb24pOworCSAgY2F0Y2hfU0lHSFVQID0gb2xkX2FjdGlvbi5zYV9oYW5kbGVy ICE9IFNJR19JR047CisJfQorICAgICAgaWYgKGNhdGNoX1NJR0hVUCkKKwlzaWdhY3Rpb24g KFNJR0hVUCwgJmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAgICAgfQogCiAgIGlmICgKQEAg LTExMzksOSArMTE1Miw5IEBACiAgICAgICAvKiBEb24ndCBjYXRjaCB0aGVzZSBzaWduYWxz IGluIGJhdGNoIG1vZGUgaWYgZHVtcGluZy4KIAkgT24gc29tZSBtYWNoaW5lcywgdGhpcyBz ZXRzIHN0YXRpYyBkYXRhIHRoYXQgd291bGQgbWFrZQogCSBzaWduYWwgZmFpbCB0byB3b3Jr IHJpZ2h0IHdoZW4gdGhlIGR1bXBlZCBFbWFjcyBpcyBydW4uICAqLwotICAgICAgc2lnbmFs IChTSUdRVUlULCBmYXRhbF9lcnJvcl9zaWduYWwpOwotICAgICAgc2lnbmFsIChTSUdJTEws IGZhdGFsX2Vycm9yX3NpZ25hbCk7Ci0gICAgICBzaWduYWwgKFNJR1RSQVAsIGZhdGFsX2Vy cm9yX3NpZ25hbCk7CisgICAgICBzaWdhY3Rpb24gKFNJR1FVSVQsICZmYXRhbF9lcnJvcl9h Y3Rpb24sIDApOworICAgICAgc2lnYWN0aW9uIChTSUdJTEwsICZmYXRhbF9lcnJvcl9hY3Rp b24sIDApOworICAgICAgc2lnYWN0aW9uIChTSUdUUkFQLCAmZmF0YWxfZXJyb3JfYWN0aW9u LCAwKTsKICNpZmRlZiBTSUdVU1IxCiAgICAgICBhZGRfdXNlcl9zaWduYWwgKFNJR1VTUjEs ICJzaWd1c3IxIik7CiAjZW5kaWYKQEAgLTExNDksNjggKzExNjIsNzMgQEAKICAgICAgIGFk ZF91c2VyX3NpZ25hbCAoU0lHVVNSMiwgInNpZ3VzcjIiKTsKICNlbmRpZgogI2lmZGVmIFNJ R0FCUlQKLSAgICAgIHNpZ25hbCAoU0lHQUJSVCwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKKyAg ICAgIHNpZ2FjdGlvbiAoU0lHQUJSVCwgJmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAjZW5k aWYKICNpZmRlZiBTSUdIV0UKLSAgICAgIHNpZ25hbCAoU0lHSFdFLCBmYXRhbF9lcnJvcl9z aWduYWwpOworICAgICAgc2lnYWN0aW9uIChTSUdIV0UsICZmYXRhbF9lcnJvcl9hY3Rpb24s IDApOwogI2VuZGlmCiAjaWZkZWYgU0lHUFJFCi0gICAgICBzaWduYWwgKFNJR1BSRSwgZmF0 YWxfZXJyb3Jfc2lnbmFsKTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHUFJFLCAmZmF0YWxfZXJy b3JfYWN0aW9uLCAwKTsKICNlbmRpZgogI2lmZGVmIFNJR09SRQotICAgICAgc2lnbmFsIChT SUdPUkUsIGZhdGFsX2Vycm9yX3NpZ25hbCk7CisgICAgICBzaWdhY3Rpb24gKFNJR09SRSwg JmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAjZW5kaWYKICNpZmRlZiBTSUdVTUUKLSAgICAg IHNpZ25hbCAoU0lHVU1FLCBmYXRhbF9lcnJvcl9zaWduYWwpOworICAgICAgc2lnYWN0aW9u IChTSUdVTUUsICZmYXRhbF9lcnJvcl9hY3Rpb24sIDApOwogI2VuZGlmCiAjaWZkZWYgU0lH RExLCi0gICAgICBzaWduYWwgKFNJR0RMSywgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKKyAgICAg IHNpZ2FjdGlvbiAoU0lHRExLLCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAwKTsKICNlbmRpZgog I2lmZGVmIFNJR0NQVUxJTQotICAgICAgc2lnbmFsIChTSUdDUFVMSU0sIGZhdGFsX2Vycm9y X3NpZ25hbCk7CisgICAgICBzaWdhY3Rpb24gKFNJR0NQVUxJTSwgJmZhdGFsX2Vycm9yX2Fj dGlvbiwgMCk7CiAjZW5kaWYKICNpZmRlZiBTSUdJT1QKICAgICAgIC8qIFRoaXMgaXMgbWlz c2luZyBvbiBzb21lIHN5c3RlbXMgLSBPUy8yLCBmb3IgZXhhbXBsZS4gICovCi0gICAgICBz aWduYWwgKFNJR0lPVCwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKKyAgICAgIHNpZ2FjdGlvbiAo U0lHSU9ULCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAwKTsKICNlbmRpZgogI2lmZGVmIFNJR0VN VAotICAgICAgc2lnbmFsIChTSUdFTVQsIGZhdGFsX2Vycm9yX3NpZ25hbCk7CisgICAgICBz aWdhY3Rpb24gKFNJR0VNVCwgJmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAjZW5kaWYKLSAg ICAgIHNpZ25hbCAoU0lHRlBFLCBmYXRhbF9lcnJvcl9zaWduYWwpOworICAgICAgc2lnYWN0 aW9uIChTSUdGUEUsICZmYXRhbF9lcnJvcl9hY3Rpb24sIDApOwogI2lmZGVmIFNJR0JVUwot ICAgICAgc2lnbmFsIChTSUdCVVMsIGZhdGFsX2Vycm9yX3NpZ25hbCk7CisgICAgICBzaWdh Y3Rpb24gKFNJR0JVUywgJmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAjZW5kaWYKLSAgICAg IHNpZ25hbCAoU0lHU0VHViwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKKyAgICAgIHNpZ2FjdGlv biAoU0lHU0VHViwgJmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAjaWZkZWYgU0lHU1lTCi0g ICAgICBzaWduYWwgKFNJR1NZUywgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKKyAgICAgIHNpZ2Fj dGlvbiAoU0lHU1lTLCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAwKTsKICNlbmRpZgogICAgICAg LyogIE1heSBuZWVkIHNwZWNpYWwgdHJlYXRtZW50IG9uIE1TLVdpbmRvd3MuIFNlZQogICAg ICAgICAgIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9lbWFjcy1kZXZlbC8y MDEwLTA5L21zZzAxMDYyLmh0bWwKICAgICAgICAgICBQbGVhc2UgdXBkYXRlIHRoZSBkb2Mg b2Yga2lsbC1lbWFjcywga2lsbC1lbWFjcy1ob29rLCBhbmQKICAgICAgICAgICBORVdTIGlm IHlvdSBjaGFuZ2UgdGhpcy4KICAgICAgICovCi0gICAgICBpZiAobm9uaW50ZXJhY3RpdmUp IHNpZ25hbCAoU0lHSU5ULCBmYXRhbF9lcnJvcl9zaWduYWwpOwotICAgICAgc2lnbmFsIChT SUdURVJNLCBmYXRhbF9lcnJvcl9zaWduYWwpOworICAgICAgaWYgKG5vbmludGVyYWN0aXZl KQorCXNpZ2FjdGlvbiAoU0lHSU5ULCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAwKTsKKyAgICAg IHNpZ2FjdGlvbiAoU0lHVEVSTSwgJmZhdGFsX2Vycm9yX2FjdGlvbiwgMCk7CiAjaWZkZWYg U0lHWENQVQotICAgICAgc2lnbmFsIChTSUdYQ1BVLCBmYXRhbF9lcnJvcl9zaWduYWwpOwor ICAgICAgc2lnYWN0aW9uIChTSUdYQ1BVLCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAwKTsKICNl bmRpZgogI2lmZGVmIFNJR1hGU1oKLSAgICAgIHNpZ25hbCAoU0lHWEZTWiwgZmF0YWxfZXJy b3Jfc2lnbmFsKTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHWEZTWiwgJmZhdGFsX2Vycm9yX2Fj dGlvbiwgMCk7CiAjZW5kaWYgLyogU0lHWEZTWiAqLwogCiAjaWZkZWYgU0lHREFOR0VSCiAg ICAgICAvKiBUaGlzIGp1c3QgbWVhbnMgYXZhaWxhYmxlIG1lbW9yeSBpcyBnZXR0aW5nIGxv dy4gICovCi0gICAgICBzaWduYWwgKFNJR0RBTkdFUiwgbWVtb3J5X3dhcm5pbmdfc2lnbmFs KTsKKyAgICAgIHsKKwlzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKKwllbWFjc19zaWdhY3Rp b25faW5pdCAoJmFjdGlvbiwgbWVtb3J5X3dhcm5pbmdfc2lnbmFsKTsKKwlzaWdhY3Rpb24g KFNJR0RBTkdFUiwgJmFjdGlvbiwgMCk7CisgICAgICB9CiAjZW5kaWYKIAogI2lmZGVmIEFJ WAogLyogMjAgaXMgU0lHQ0hMRCwgMjEgaXMgU0lHVFRJTiwgMjIgaXMgU0lHVFRPVS4gICov Ci0gICAgICBzaWduYWwgKFNJR1hDUFUsIGZhdGFsX2Vycm9yX3NpZ25hbCk7Ci0gICAgICBz aWduYWwgKFNJR0lPSU5ULCBmYXRhbF9lcnJvcl9zaWduYWwpOwotICAgICAgc2lnbmFsIChT SUdHUkFOVCwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKLSAgICAgIHNpZ25hbCAoU0lHUkVUUkFD VCwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKLSAgICAgIHNpZ25hbCAoU0lHU09VTkQsIGZhdGFs X2Vycm9yX3NpZ25hbCk7Ci0gICAgICBzaWduYWwgKFNJR01TRywgZmF0YWxfZXJyb3Jfc2ln bmFsKTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHWENQVSwgJmZhdGFsX2Vycm9yX2FjdGlvbiwg MCk7CisgICAgICBzaWdhY3Rpb24gKFNJR0lPSU5ULCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAw KTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHR1JBTlQsICZmYXRhbF9lcnJvcl9hY3Rpb24sIDAp OworICAgICAgc2lnYWN0aW9uIChTSUdSRVRSQUNULCAmZmF0YWxfZXJyb3JfYWN0aW9uLCAw KTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHU09VTkQsICZmYXRhbF9lcnJvcl9hY3Rpb24sIDAp OworICAgICAgc2lnYWN0aW9uIChTSUdNU0csICZmYXRhbF9lcnJvcl9hY3Rpb24sIDApOwog I2VuZGlmIC8qIEFJWCAqLwogICAgIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9lbWFj c2d0a2ZpeGVkLmMnCi0tLSBzcmMvZW1hY3NndGtmaXhlZC5jCTIwMTItMDQtMjMgMDc6MzQ6 MjkgKzAwMDAKKysrIHNyYy9lbWFjc2d0a2ZpeGVkLmMJMjAxMi0wOS0wMSAyMTozNzowNyAr MDAwMApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgPGNvbmZpZy5oPgogCiAjaW5jbHVk ZSAiZW1hY3NndGtmaXhlZC5oIgotI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0 ZGlvLmg+CiAjaW5jbHVkZSA8c2V0am1wLmg+CiAjaW5jbHVkZSAibGlzcC5oIgoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9mbG9hdGZucy5jJwotLS0gc3JjL2Zsb2F0Zm5zLmMJMjAxMi0w Ny0xNyAwMjo1NjowMCArMDAwMAorKysgc3JjL2Zsb2F0Zm5zLmMJMjAxMi0wOS0wMyAwNzoy NDowMyArMDAwMApAQCAtNDgsNyArNDgsNiBAQAogICovCiAKICNpbmNsdWRlIDxjb25maWcu aD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDxzZXRqbXAuaD4KICNpbmNsdWRl ICJsaXNwLmgiCiAjaW5jbHVkZSAic3lzc2lnbmFsLmgiCkBAIC05NTUsMTMgKzk1NCwxOCBA QAogICAgIGZhdGFsX2Vycm9yX3NpZ25hbCAoc2lnbm8pOwogCiAjaWZkZWYgQlNEX1NZU1RF TQotICBzaWdzZXRtYXNrIChTSUdFTVBUWU1BU0spOworICBwdGhyZWFkX3NpZ21hc2sgKFNJ R19TRVRNQVNLLCAmZW1wdHlfbWFzaywgMCk7CiAjZWxzZQogICAvKiBNdXN0IHJlZXN0YWJs aXNoIGhhbmRsZXIgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gICovCi0gIHNpZ25hbCAoU0lH SUxMLCBmbG9hdF9lcnJvcik7CisgIHsKKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsK KyAgICBlbWFjc19zaWdhY3Rpb25faW5pdCAoJmFjdGlvbiwgZmxvYXRfZXJyb3IpOworICAg IHNpZ2FjdGlvbiAoU0lHSUxMLCAmYWN0aW9uLCAwKTsKKyAgfQogI2VuZGlmIC8qIEJTRF9T WVNURU0gKi8KIAotICBTSUdOQUxfVEhSRUFEX0NIRUNLIChzaWdubyk7CisgIGlmIChmb3J3 YXJkZWRfc2lnbmFsIChzaWdubykpCisgICAgcmV0dXJuOwogICBpbl9mbG9hdCA9IDA7CiAK ICAgeHNpZ25hbDEgKFFhcml0aF9lcnJvciwgZmxvYXRfZXJyb3JfYXJnKTsKQEAgLTEwMDcs NyArMTAxMSw5IEBACiBpbml0X2Zsb2F0Zm5zICh2b2lkKQogewogI2lmZGVmIEZMT0FUX0NB VENIX1NJR0lMTAotICBzaWduYWwgKFNJR0lMTCwgZmxvYXRfZXJyb3IpOworICBzdHJ1Y3Qg c2lnYWN0aW9uIGFjdGlvbjsKKyAgZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIGZs b2F0X2Vycm9yKTsKKyAgc2lnYWN0aW9uIChTSUdJTEwsICZhY3Rpb24sIDApOwogI2VuZGlm CiAgIGluX2Zsb2F0ID0gMDsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZ3RrdXRpbC5j JwotLS0gc3JjL2d0a3V0aWwuYwkyMDEyLTA5LTAyIDE2OjU2OjMxICswMDAwCisrKyBzcmMv Z3RrdXRpbC5jCTIwMTItMDktMDMgMDY6NTA6MTkgKzAwMDAKQEAgLTIxLDcgKzIxLDYgQEAK IAogI2lmZGVmIFVTRV9HVEsKICNpbmNsdWRlIDxmbG9hdC5oPgotI2luY2x1ZGUgPHNpZ25h bC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c2V0am1wLmg+CiAKQEAgLTE5 NzksNyArMTk3OCwxMCBAQAogICAvKiBJIHJlYWxseSBkb24ndCBrbm93IHdoeSB0aGlzIGlz IG5lZWRlZCwgYnV0IHdpdGhvdXQgdGhpcyB0aGUgR0xJQkMgYWRkIG9uCiAgICAgIGxpYnJh cnkgbGludXh0aHJlYWRzIGhhbmdzIHdoZW4gdGhlIEdub21lIGZpbGUgY2hvb3NlciBiYWNr ZW5kIGNyZWF0ZXMKICAgICAgdGhyZWFkcy4gICovCi0gIHNpZ2Jsb2NrIChzaWdtYXNrIChf X1NJR1JUTUlOKSk7CisgIHNpZ3NldF90IGJsb2NrZWQ7CisgIHNpZ2VtcHR5c2V0ICgmYmxv Y2tlZCk7CisgIHNpZ2FkZHNldCAoJmJsb2NrZWQsIF9fU0lHUlRNSU4pOworICBwdGhyZWFk X3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQsIDApOwogI2VuZGlmIC8qIEhBVkVfUFRI UkVBRCAqLwogCiAjaWZkZWYgSEFWRV9HVEtfRklMRV9TRUxFQ1RJT05fTkVXCkBAIC0yMDAx LDcgKzIwMDMsNyBAQAogICBmaWxlc2VsX2RvbmUgPSB4Z19kaWFsb2dfcnVuIChmLCB3KTsK IAogI2lmIGRlZmluZWQgKEhBVkVfUFRIUkVBRCkgJiYgZGVmaW5lZCAoX19TSUdSVE1JTikK LSAgc2lndW5ibG9jayAoc2lnbWFzayAoX19TSUdSVE1JTikpOworICBwdGhyZWFkX3NpZ21h c2sgKFNJR19VTkJMT0NLLCAmYmxvY2tlZCwgMCk7CiAjZW5kaWYKIAogICBpZiAoZmlsZXNl bF9kb25lID09IEdUS19SRVNQT05TRV9PSykKQEAgLTIwNTYsNyArMjA1OCwxMCBAQAogICBM aXNwX09iamVjdCBmb250ID0gUW5pbDsKIAogI2lmIGRlZmluZWQgKEhBVkVfUFRIUkVBRCkg JiYgZGVmaW5lZCAoX19TSUdSVE1JTikKLSAgc2lnYmxvY2sgKHNpZ21hc2sgKF9fU0lHUlRN SU4pKTsKKyAgc2lnc2V0X3QgYmxvY2tlZDsKKyAgc2lnZW1wdHlzZXQgKCZibG9ja2VkKTsK KyAgc2lnYWRkc2V0ICgmYmxvY2tlZCwgX19TSUdSVE1JTik7CisgIHB0aHJlYWRfc2lnbWFz ayAoU0lHX0JMT0NLLCAmYmxvY2tlZCwgMCk7CiAjZW5kaWYgLyogSEFWRV9QVEhSRUFEICov CiAKICAgdyA9IGd0a19mb250X2Nob29zZXJfZGlhbG9nX25ldwpAQCAtMjA4NSw3ICsyMDkw LDcgQEAKICAgZG9uZSA9IHhnX2RpYWxvZ19ydW4gKGYsIHcpOwogCiAjaWYgZGVmaW5lZCAo SEFWRV9QVEhSRUFEKSAmJiBkZWZpbmVkIChfX1NJR1JUTUlOKQotICBzaWd1bmJsb2NrIChz aWdtYXNrIChfX1NJR1JUTUlOKSk7CisgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1VOQkxPQ0ss ICZibG9ja2VkLCAwKTsKICNlbmRpZgogCiAgIGlmIChkb25lID09IEdUS19SRVNQT05TRV9P SykKCj09PSBtb2RpZmllZCBmaWxlICdzcmMva2V5Ym9hcmQuYycKLS0tIHNyYy9rZXlib2Fy ZC5jCTIwMTItMDktMDIgMTY6NTY6MzEgKzAwMDAKKysrIHNyYy9rZXlib2FyZC5jCTIwMTIt MDktMDMgMDc6MjQ6MDMgKzAwMDAKQEAgLTIxLDcgKzIxLDYgQEAKIAogI2RlZmluZSBLRVlC T0FSRF9JTkxJTkUgRVhURVJOX0lOTElORQogCi0jaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5j bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzZXRqbXAuaD4KICNpbmNsdWRlICJsaXNwLmgi CkBAIC0zNjgxLDcgKzM2ODAsNyBAQAogICAgICAgaWYgKGltbWVkaWF0ZV9xdWl0ICYmIE5J TFAgKFZpbmhpYml0X3F1aXQpKQogCXsKIAkgIGltbWVkaWF0ZV9xdWl0ID0gMDsKLQkgIHNp Z2ZyZWUgKCk7CisJICBwdGhyZWFkX3NpZ21hc2sgKFNJR19TRVRNQVNLLCAmZW1wdHlfbWFz aywgMCk7CiAJICBRVUlUOwogCX0KICAgICB9CkBAIC0zODMzLDcgKzM4MzIsMTEgQEAKICAg ICAgIHVuaG9sZF9rZXlib2FyZF9pbnB1dCAoKTsKICNpZmRlZiBTSUdJTwogICAgICAgaWYg KCFub25pbnRlcmFjdGl2ZSkKLSAgICAgICAgc2lnbmFsIChTSUdJTywgaW5wdXRfYXZhaWxh YmxlX3NpZ25hbCk7CisJeworCSAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisJICBlbWFj c19zaWdhY3Rpb25faW5pdCAoJmFjdGlvbiwgaW5wdXRfYXZhaWxhYmxlX3NpZ25hbCk7CisJ ICBzaWdhY3Rpb24gKFNJR0lPLCAmYWN0aW9uLCAwKTsKKwl9CiAjZW5kaWYgLyogU0lHSU8g Ki8KICAgICAgIHN0YXJ0X3BvbGxpbmcgKCk7CiAgICAgfQpAQCAtNjc4MSwxMCArNjc4NCwx MiBAQAogI2lmZGVmIFNJR0lPCiAgIGlmIChpbnRlcnJ1cHRfaW5wdXQpCiAgICAgewotICAg ICAgU0lHTUFTS1RZUEUgbWFzazsKLSAgICAgIG1hc2sgPSBzaWdibG9jayAoc2lnbWFzayAo U0lHSU8pKTsKKyAgICAgIHNpZ3NldF90IGJsb2NrZWQsIHByb2NtYXNrOworICAgICAgc2ln ZW1wdHlzZXQgKCZibG9ja2VkKTsKKyAgICAgIHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR0lP KTsKKyAgICAgIHB0aHJlYWRfc2lnbWFzayAoU0lHX0JMT0NLLCAmYmxvY2tlZCwgJnByb2Nt YXNrKTsKICAgICAgIHJlYWRfYXZhaWxfaW5wdXQgKGV4cGVjdGVkKTsKLSAgICAgIHNpZ3Nl dG1hc2sgKG1hc2spOworICAgICAgcHRocmVhZF9zaWdtYXNrIChTSUdfU0VUTUFTSywgJnBy b2NtYXNrLCAwKTsKICAgICB9CiAgIGVsc2UKICNpZmRlZiBQT0xMX0ZPUl9JTlBVVApAQCAt Njc5MywxMCArNjc5OCwxMiBAQAogICAgICBpdCdzIGFsd2F5cyBzZXQuICAqLwogICBpZiAo IWludGVycnVwdF9pbnB1dCAmJiBwb2xsX3N1cHByZXNzX2NvdW50ID09IDApCiAgICAgewot ICAgICAgU0lHTUFTS1RZUEUgbWFzazsKLSAgICAgIG1hc2sgPSBzaWdibG9jayAoc2lnbWFz ayAoU0lHQUxSTSkpOworICAgICAgc2lnc2V0X3QgYmxvY2tlZCwgcHJvY21hc2s7CisgICAg ICBzaWdlbXB0eXNldCAoJmJsb2NrZWQpOworICAgICAgc2lnYWRkc2V0ICgmYmxvY2tlZCwg U0lHQUxSTSk7CisgICAgICBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQs ICZwcm9jbWFzayk7CiAgICAgICByZWFkX2F2YWlsX2lucHV0IChleHBlY3RlZCk7Ci0gICAg ICBzaWdzZXRtYXNrIChtYXNrKTsKKyAgICAgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1NFVE1B U0ssICZwcm9jbWFzaywgMCk7CiAgICAgfQogICBlbHNlCiAjZW5kaWYKQEAgLTY4MzIsMTAg KzY4MzksMTIgQEAKICNpZmRlZiBTSUdJTwogICBpZiAoaW50ZXJydXB0X2lucHV0KQogICAg IHsKLSAgICAgIFNJR01BU0tUWVBFIG1hc2s7Ci0gICAgICBtYXNrID0gc2lnYmxvY2sgKHNp Z21hc2sgKFNJR0lPKSk7CisgICAgICBzaWdzZXRfdCBibG9ja2VkLCBwcm9jbWFzazsKKyAg ICAgIHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7CisgICAgICBzaWdhZGRzZXQgKCZibG9ja2Vk LCBTSUdJTyk7CisgICAgICBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQs ICZwcm9jbWFzayk7CiAgICAgICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50ICgmZXZlbnQpOwot ICAgICAgc2lnc2V0bWFzayAobWFzayk7CisgICAgICBwdGhyZWFkX3NpZ21hc2sgKFNJR19T RVRNQVNLLCAmcHJvY21hc2ssIDApOwogICAgIH0KICAgZWxzZQogI2VuZGlmCkBAIC03MjQw LDcgKzcyNDksOCBAQAogewogICAvKiBNdXN0IHByZXNlcnZlIG1haW4gcHJvZ3JhbSdzIHZh bHVlIG9mIGVycm5vLiAgKi8KICAgaW50IG9sZF9lcnJubyA9IGVycm5vOwotICBTSUdOQUxf VEhSRUFEX0NIRUNLIChzaWdubyk7CisgIGlmIChmb3J3YXJkZWRfc2lnbmFsIChzaWdubykp CisgICAgcmV0dXJuOwogCiAjaWZkZWYgU1lOQ19JTlBVVAogICBpbnRlcnJ1cHRfaW5wdXRf cGVuZGluZyA9IDE7CkBAIC03Mjk2LDYgKzczMDYsNyBAQAogdm9pZAogYWRkX3VzZXJfc2ln bmFsIChpbnQgc2lnLCBjb25zdCBjaGFyICpuYW1lKQogeworICBzdHJ1Y3Qgc2lnYWN0aW9u IGFjdGlvbjsKICAgc3RydWN0IHVzZXJfc2lnbmFsX2luZm8gKnA7CiAKICAgZm9yIChwID0g dXNlcl9zaWduYWxzOyBwOyBwID0gcC0+bmV4dCkKQEAgLTczMTAsNyArNzMyMSw4IEBACiAg IHAtPm5leHQgPSB1c2VyX3NpZ25hbHM7CiAgIHVzZXJfc2lnbmFscyA9IHA7CiAKLSAgc2ln bmFsIChzaWcsIGhhbmRsZV91c2VyX3NpZ25hbCk7CisgIGVtYWNzX3NpZ2FjdGlvbl9pbml0 ICgmYWN0aW9uLCBoYW5kbGVfdXNlcl9zaWduYWwpOworICBzaWdhY3Rpb24gKHNpZywgJmFj dGlvbiwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC03MzIwLDcgKzczMzIsOCBAQAogICBz dHJ1Y3QgdXNlcl9zaWduYWxfaW5mbyAqcDsKICAgY29uc3QgY2hhciAqc3BlY2lhbF9ldmVu dF9uYW1lID0gTlVMTDsKIAotICBTSUdOQUxfVEhSRUFEX0NIRUNLIChzaWcpOworICBpZiAo Zm9yd2FyZGVkX3NpZ25hbCAoc2lnKSkKKyAgICByZXR1cm47CiAKICAgaWYgKFNZTUJPTFAg KFZkZWJ1Z19vbl9ldmVudCkpCiAgICAgc3BlY2lhbF9ldmVudF9uYW1lID0gU1NEQVRBIChT WU1CT0xfTkFNRSAoVmRlYnVnX29uX2V2ZW50KSk7CkBAIC03MzgxLDcgKzczOTQsNyBAQAog ICBmb3IgKHAgPSB1c2VyX3NpZ25hbHM7IHA7IHAgPSBwLT5uZXh0KQogICAgIGlmIChwLT5u cGVuZGluZyA+IDApCiAgICAgICB7Ci0JU0lHTUFTS1RZUEUgbWFzazsKKwlzaWdzZXRfdCBi bG9ja2VkLCBwcm9jbWFzazsKIAogCWlmIChuc3RvcmVkID09IDApCiAJICB7CkBAIC03Mzkx LDcgKzc0MDQsMTAgQEAKIAkgIH0KIAluc3RvcmVkICs9IHAtPm5wZW5kaW5nOwogCi0JbWFz ayA9IHNpZ2Jsb2NrIChzaWdtYXNrIChwLT5zaWcpKTsKKwlzaWdlbXB0eXNldCAoJmJsb2Nr ZWQpOworCXNpZ2FkZHNldCAoJmJsb2NrZWQsIHAtPnNpZyk7CisJcHRocmVhZF9zaWdtYXNr IChTSUdfQkxPQ0ssICZibG9ja2VkLCAmcHJvY21hc2spOworCiAJZG8KIAkgIHsKIAkgICAg YnVmLmNvZGUgPSBwLT5zaWc7CkBAIC03Mzk5LDcgKzc0MTUsOCBAQAogCSAgICBwLT5ucGVu ZGluZy0tOwogCSAgfQogCXdoaWxlIChwLT5ucGVuZGluZyA+IDApOwotCXNpZ3NldG1hc2sg KG1hc2spOworCisJcHRocmVhZF9zaWdtYXNrIChTSUdfU0VUTUFTSywgJnByb2NtYXNrLCAw KTsKICAgICAgIH0KIAogICByZXR1cm4gbnN0b3JlZDsKQEAgLTEwNzgzLDcgKzEwODAwLDgg QEAKICAgaW50IG9sZF9lcnJubyA9IGVycm5vOwogICBzdHJ1Y3QgdGVybWluYWwgKnRlcm1p bmFsOwogCi0gIFNJR05BTF9USFJFQURfQ0hFQ0sgKHNpZ25hbG51bSk7CisgIGlmIChmb3J3 YXJkZWRfc2lnbmFsIChzaWduYWxudW0pKQorICAgIHJldHVybjsKIAogICAvKiBTZWUgaWYg d2UgaGF2ZSBhbiBhY3RpdmUgdGVybWluYWwgb24gb3VyIGNvbnRyb2xsaW5nIHR0eS4gICov CiAgIHRlcm1pbmFsID0gZ2V0X25hbWVkX3R0eSAoIi9kZXYvdHR5Iik7CkBAIC0xMDg0MCw3 ICsxMDg1OCwxMCBAQAogICAgICAgLyogSWYgU0lHSU5UIGlzbid0IGJsb2NrZWQsIGRvbid0 IGxldCB1cyBiZSBpbnRlcnJ1cHRlZCBieQogCSBhbm90aGVyIFNJR0lOVCwgaXQgbWlnaHQg YmUgaGFybWZ1bCBkdWUgdG8gbm9uLXJlZW50cmFuY3kKIAkgaW4gSS9PIGZ1bmN0aW9ucy4g ICovCi0gICAgICBzaWdibG9jayAoc2lnbWFzayAoU0lHSU5UKSk7CisgICAgICBzaWdzZXRf dCBibG9ja2VkOworICAgICAgc2lnZW1wdHlzZXQgKCZibG9ja2VkKTsKKyAgICAgIHNpZ2Fk ZHNldCAoJmJsb2NrZWQsIFNJR0lOVCk7CisgICAgICBwdGhyZWFkX3NpZ21hc2sgKFNJR19C TE9DSywgJmJsb2NrZWQsIDApOwogCiAgICAgICBmZmx1c2ggKHN0ZG91dCk7CiAgICAgICBy ZXNldF9hbGxfc3lzX21vZGVzICgpOwpAQCAtMTA5MTEsNyArMTA5MzIsNyBAQAogI2VuZGlm IC8qIG5vdCBNU0RPUyAqLwogICAgICAgZmZsdXNoIChzdGRvdXQpOwogICAgICAgaW5pdF9h bGxfc3lzX21vZGVzICgpOwotICAgICAgc2lnZnJlZSAoKTsKKyAgICAgIHB0aHJlYWRfc2ln bWFzayAoU0lHX1NFVE1BU0ssICZlbXB0eV9tYXNrLCAwKTsKICAgICB9CiAgIGVsc2UKICAg ICB7CkBAIC0xMDkyNCw3ICsxMDk0NSw3IEBACiAJICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMywgZ2Nwcm80OwogCiAJICBpbW1lZGlhdGVfcXVpdCA9IDA7Ci0gICAg ICAgICAgc2lnZnJlZSAoKTsKKwkgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1NFVE1BU0ssICZl bXB0eV9tYXNrLCAwKTsKIAkgIHNhdmVkID0gZ2xfc3RhdGU7CiAJICBHQ1BSTzQgKHNhdmVk Lm9iamVjdCwgc2F2ZWQuZ2xvYmFsX2NvZGUsCiAJCSAgc2F2ZWQuY3VycmVudF9zeW50YXhf dGFibGUsIHNhdmVkLm9sZF9wcm9wKTsKQEAgLTEwOTY5LDcgKzEwOTkwLDcgQEAKICAgaWYg KCFmcm9tX3NpZ25hbCAmJiBFUSAoVnF1aXRfZmxhZywgUWtpbGxfZW1hY3MpKQogICAgIEZr aWxsX2VtYWNzIChRbmlsKTsKIAotICBzaWdmcmVlICgpOworICBwdGhyZWFkX3NpZ21hc2sg KFNJR19TRVRNQVNLLCAmZW1wdHlfbWFzaywgMCk7CiAgIC8qIFByZXZlbnQgYW5vdGhlciBz aWduYWwgZnJvbSBkb2luZyB0aGlzIGJlZm9yZSB3ZSBmaW5pc2guICAqLwogICBjbGVhcl93 YWl0aW5nX2Zvcl9pbnB1dCAoKTsKICAgaW5wdXRfcGVuZGluZyA9IDA7CkBAIC0xMTQwNCwx NyArMTE0MjUsMjMgQEAKICAgICAgICAgIFNJR0lOVC4gIFRoZXJlIGlzIHNwZWNpYWwgY29k ZSBpbiBpbnRlcnJ1cHRfc2lnbmFsIHRvIGV4aXQKICAgICAgICAgIEVtYWNzIG9uIFNJR0lO VCB3aGVuIHRoZXJlIGFyZSBubyB0ZXJtY2FwIGZyYW1lcyBvbiB0aGUKICAgICAgICAgIGNv bnRyb2xsaW5nIHRlcm1pbmFsLiAgKi8KLSAgICAgIHNpZ25hbCAoU0lHSU5ULCBpbnRlcnJ1 cHRfc2lnbmFsKTsKKyAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworICAgICAgZW1h Y3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIGludGVycnVwdF9zaWduYWwpOworICAgICAg c2lnYWN0aW9uIChTSUdJTlQsICZhY3Rpb24sIDApOwogI2lmbmRlZiBET1NfTlQKICAgICAg IC8qIEZvciBzeXN0ZW1zIHdpdGggU3lzViBURVJNSU8sIEMtZyBpcyBzZXQgdXAgZm9yIGJv dGggU0lHSU5UIGFuZAogCSBTSUdRVUlUIGFuZCB3ZSBjYW4ndCB0ZWxsIHdoaWNoIG9uZSBp dCB3aWxsIGdpdmUgdXMuICAqLwotICAgICAgc2lnbmFsIChTSUdRVUlULCBpbnRlcnJ1cHRf c2lnbmFsKTsKKyAgICAgIHNpZ2FjdGlvbiAoU0lHUVVJVCwgJmFjdGlvbiwgMCk7CiAjZW5k aWYgLyogbm90IERPU19OVCAqLwogICAgIH0KIC8qIE5vdGUgU0lHSU8gaGFzIGJlZW4gdW5k ZWYnZCBpZiBGSU9OUkVBRCBpcyBtaXNzaW5nLiAgKi8KICNpZmRlZiBTSUdJTwogICBpZiAo IW5vbmludGVyYWN0aXZlKQotICAgIHNpZ25hbCAoU0lHSU8sIGlucHV0X2F2YWlsYWJsZV9z aWduYWwpOworICAgIHsKKyAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworICAgICAg ZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIGlucHV0X2F2YWlsYWJsZV9zaWduYWwp OworICAgICAgc2lnYWN0aW9uIChTSUdJTywgJmFjdGlvbiwgMCk7CisgICAgfQogI2VuZGlm IC8qIFNJR0lPICovCiAKIC8qIFVzZSBpbnRlcnJ1cHQgaW5wdXQgYnkgZGVmYXVsdCwgaWYg aXQgd29ya3MgYW5kIG5vbmludGVycnVwdCBpbnB1dApAQCAtMTE0MjYsNyArMTE0NTMsNyBA QAogICBpbnRlcnJ1cHRfaW5wdXQgPSAwOwogI2VuZGlmCiAKLSAgc2lnZnJlZSAoKTsKKyAg cHRocmVhZF9zaWdtYXNrIChTSUdfU0VUTUFTSywgJmVtcHR5X21hc2ssIDApOwogICBkcmli YmxlID0gMDsKIAogICBpZiAoa2V5Ym9hcmRfaW5pdF9ob29rKQoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9uc2Zucy5tJwotLS0gc3JjL25zZm5zLm0JMjAxMi0wOC0xNyAyMzozODo0MyAr MDAwMAorKysgc3JjL25zZm5zLm0JMjAxMi0wOS0wMSAyMTozNzowNyArMDAwMApAQCAtMzAs NyArMzAsNiBAQAogICAgaW50ZXJwcmV0YXRpb24gb2YgZXZlbiB0aGUgc3lzdGVtIGluY2x1 ZGVzLiAqLwogI2luY2x1ZGUgPGNvbmZpZy5oPgogCi0jaW5jbHVkZSA8c2lnbmFsLmg+CiAj aW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHNldGptcC5oPgogI2luY2x1ZGUgPGMtc3Ry Y2FzZS5oPgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9wcm9jZXNzLmMnCi0tLSBzcmMvcHJv Y2Vzcy5jCTIwMTItMDktMDIgMTc6MTA6MzUgKzAwMDAKKysrIHNyYy9wcm9jZXNzLmMJMjAx Mi0wOS0wMyAwNzoyNDowMyArMDAwMApAQCAtMjMsNyArMjMsNiBAQAogCiAjZGVmaW5lIFBS T0NFU1NfSU5MSU5FIEVYVEVSTl9JTkxJTkUKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgogI2lu Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzZXRqbXAu aD4KQEAgLTE2MDMsOCArMTYwMiw3IEBACiAjaWYgIWRlZmluZWQgKFdJTkRPV1NOVCkgJiYg ZGVmaW5lZCAoRkRfQ0xPRVhFQykKICAgaW50IHdhaXRfY2hpbGRfc2V0dXBbMl07CiAjZW5k aWYKLSAgc2lnc2V0X3QgcHJvY21hc2s7Ci0gIHNpZ3NldF90IGJsb2NrZWQ7CisgIHNpZ3Nl dF90IGJsb2NrZWQsIHByb2NtYXNrOwogICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ2ludF9hY3Rp b247CiAgIHN0cnVjdCBzaWdhY3Rpb24gc2lncXVpdF9hY3Rpb247CiAgIHN0cnVjdCBzaWdh Y3Rpb24gc2lncGlwZV9hY3Rpb247CkBAIC0xNzU2LDEyICsxNzU0LDYgQEAKIAlpbnQgeGZv cmtpbiA9IGZvcmtpbjsKIAlpbnQgeGZvcmtvdXQgPSBmb3Jrb3V0OwogCi0jaWYgMCAvKiBU aGlzIHdhcyBwcm9iYWJseSBhIG1pc3Rha2UtLWl0IGR1cGxpY2F0ZXMgY29kZSBsYXRlciBv biwKLQkgYnV0IGZhaWxzIHRvIGhhbmRsZSBhbGwgdGhlIGNhc2VzLiAgKi8KLQkvKiBNYWtl IHN1cmUgU0lHQ0hMRCBpcyBub3QgYmxvY2tlZCBpbiB0aGUgY2hpbGQuICAqLwotCXNpZ3Nl dG1hc2sgKFNJR0VNUFRZTUFTSyk7Ci0jZW5kaWYKLQogCS8qIE1ha2UgdGhlIHB0eSBiZSB0 aGUgY29udHJvbGxpbmcgdGVybWluYWwgb2YgdGhlIHByb2Nlc3MuICAqLwogI2lmZGVmIEhB VkVfUFRZUwogCS8qIEZpcnN0LCBkaXNjb25uZWN0IGl0cyBjdXJyZW50IGNvbnRyb2xsaW5n IHRlcm1pbmFsLiAgKi8KQEAgLTU0MjksOCArNTQyMSwxMiBAQAogc3RhdGljIHZvaWQKIHNl bmRfcHJvY2Vzc190cmFwIChpbnQgaWdub3JlKQogewotICBTSUdOQUxfVEhSRUFEX0NIRUNL IChTSUdQSVBFKTsKLSAgc2lndW5ibG9jayAoc2lnbWFzayAoU0lHUElQRSkpOworICBzaWdz ZXRfdCB1bmJsb2NrZWQ7CisgIGlmIChmb3J3YXJkZWRfc2lnbmFsIChTSUdQSVBFKSkKKyAg ICByZXR1cm47CisgIHNpZ2VtcHR5c2V0ICgmdW5ibG9ja2VkKTsKKyAgc2lnYWRkc2V0ICgm dW5ibG9ja2VkLCBTSUdQSVBFKTsKKyAgcHRocmVhZF9zaWdtYXNrIChTSUdfVU5CTE9DSywg JnVuYmxvY2tlZCwgMCk7CiAgIGxvbmdqbXAgKHNlbmRfcHJvY2Vzc19mcmFtZSwgMSk7CiB9 CiAKQEAgLTU1MjQsNyArNTUyMCw3IEBACiAgIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnAgPSBY UFJPQ0VTUyAocHJvYyk7CiAgIHNzaXplX3QgcnY7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVt ICpjb2Rpbmc7Ci0gIHZvaWQgKCp2b2xhdGlsZSBvbGRfc2lncGlwZSkgKGludCk7CisgIHN0 cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ3BpcGVfYWN0aW9uOwogCiAgIGlmIChwLT5yYXdfc3Rh dHVzX25ldykKICAgICB1cGRhdGVfc3RhdHVzIChwKTsKQEAgLTU2NjMsNyArNTY1OSw5IEBA CiAJICAgICAgLyogU2VuZCB0aGlzIGJhdGNoLCB1c2luZyBvbmUgb3IgbW9yZSB3cml0ZSBj YWxscy4gICovCiAJICAgICAgcHRyZGlmZl90IHdyaXR0ZW4gPSAwOwogCSAgICAgIGludCBv dXRmZCA9IHAtPm91dGZkOwotCSAgICAgIG9sZF9zaWdwaXBlID0gKHZvaWQgKCopIChpbnQp KSBzaWduYWwgKFNJR1BJUEUsIHNlbmRfcHJvY2Vzc190cmFwKTsKKwkgICAgICBzdHJ1Y3Qg c2lnYWN0aW9uIGFjdGlvbjsKKwkgICAgICBlbWFjc19zaWdhY3Rpb25faW5pdCAoJmFjdGlv biwgc2VuZF9wcm9jZXNzX3RyYXApOworCSAgICAgIHNpZ2FjdGlvbiAoU0lHUElQRSwgJmFj dGlvbiwgJm9sZF9zaWdwaXBlX2FjdGlvbik7CiAjaWZkZWYgREFUQUdSQU1fU09DS0VUUwog CSAgICAgIGlmIChEQVRBR1JBTV9DSEFOX1AgKG91dGZkKSkKIAkJewpAQCAtNTY3NCw3ICs1 NjcyLDcgQEAKIAkJICAgIHdyaXR0ZW4gPSBydjsKIAkJICBlbHNlIGlmIChlcnJubyA9PSBF TVNHU0laRSkKIAkJICAgIHsKLQkJICAgICAgc2lnbmFsIChTSUdQSVBFLCBvbGRfc2lncGlw ZSk7CisJCSAgICAgIHNpZ2FjdGlvbiAoU0lHUElQRSwgJm9sZF9zaWdwaXBlX2FjdGlvbiwg MCk7CiAJCSAgICAgIHJlcG9ydF9maWxlX2Vycm9yICgic2VuZGluZyBkYXRhZ3JhbSIsCiAJ CQkJCSBGY29ucyAocHJvYywgUW5pbCkpOwogCQkgICAgfQpAQCAtNTY5OSw3ICs1Njk3LDcg QEAKIAkJICAgIH0KICNlbmRpZgogCQl9Ci0JICAgICAgc2lnbmFsIChTSUdQSVBFLCBvbGRf c2lncGlwZSk7CisJICAgICAgc2lnYWN0aW9uIChTSUdQSVBFLCAmb2xkX3NpZ3BpcGVfYWN0 aW9uLCAwKTsKIAogCSAgICAgIGlmIChydiA8IDApCiAJCXsKQEAgLTU3NTksNyArNTc1Nyw3 IEBACiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc2lnbmFsIChTSUdQSVBFLCBvbGRf c2lncGlwZSk7CisgICAgICBzaWdhY3Rpb24gKFNJR1BJUEUsICZvbGRfc2lncGlwZV9hY3Rp b24sIDApOwogICAgICAgcHJvYyA9IHByb2Nlc3Nfc2VudF90bzsKICAgICAgIHAgPSBYUFJP Q0VTUyAocHJvYyk7CiAgICAgICBwLT5yYXdfc3RhdHVzX25ldyA9IDA7CkBAIC02NDA0LDcg KzY0MDIsOCBAQAogICBMaXNwX09iamVjdCBwcm9jOwogICBzdHJ1Y3QgTGlzcF9Qcm9jZXNz ICpwOwogCi0gIFNJR05BTF9USFJFQURfQ0hFQ0sgKHNpZ25vKTsKKyAgaWYgKGZvcndhcmRl ZF9zaWduYWwgKHNpZ25vKSkKKyAgICByZXR1cm47CiAKICAgd2hpbGUgKDEpCiAgICAgewpA QCAtNzM4Nyw3ICs3Mzg2LDExIEBACiAjaWZuZGVmIENBTk5PVF9EVU1QCiAgIGlmICghIG5v bmludGVyYWN0aXZlIHx8IGluaXRpYWxpemVkKQogI2VuZGlmCi0gICAgc2lnbmFsIChTSUdD SExELCBzaWdjaGxkX2hhbmRsZXIpOworICAgIHsKKyAgICAgIHN0cnVjdCBzaWdhY3Rpb24g YWN0aW9uOworICAgICAgZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIHNpZ2NobGRf aGFuZGxlcik7CisgICAgICBzaWdhY3Rpb24gKFNJR0NITEQsICZhY3Rpb24sIDApOworICAg IH0KICNlbmRpZgogCiAgIEZEX1pFUk8gKCZpbnB1dF93YWl0X21hc2spOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9zb3VuZC5jJwotLS0gc3JjL3NvdW5kLmMJMjAxMi0wNy0yOSAwODox ODoyOSArMDAwMAorKysgc3JjL3NvdW5kLmMJMjAxMi0wOS0wMyAwNjo1MDoxOSArMDAwMApA QCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgImxpc3AuaCIKICNpbmNsdWRlICJkaXNwZXh0 ZXJuLmgiCiAjaW5jbHVkZSAiYXRpbWVyLmgiCi0jaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5j bHVkZSAic3lzc2lnbmFsLmgiCiAvKiBFTkQ6IENvbW1vbiBJbmNsdWRlcyAqLwogCkBAIC0z MTYsNyArMzE1LDEyIEBACiAKICAgdHVybl9vbl9hdGltZXJzICgxKTsKICNpZmRlZiBTSUdJ TwotICBzaWd1bmJsb2NrIChzaWdtYXNrIChTSUdJTykpOworICB7CisgICAgc2lnc2V0X3Qg dW5ibG9ja2VkOworICAgIHNpZ2VtcHR5c2V0ICgmdW5ibG9ja2VkKTsKKyAgICBzaWdhZGRz ZXQgKCZ1bmJsb2NrZWQsIFNJR0lPKTsKKyAgICBwdGhyZWFkX3NpZ21hc2sgKFNJR19VTkJM T0NLLCAmdW5ibG9ja2VkLCAwKTsKKyAgfQogI2VuZGlmCiAgIGlmIChzYXZlZF9lcnJubyAh PSAwKQogICAgIGVycm9yICgiJXM6ICVzIiwgbXNnLCBzdHJlcnJvciAoc2F2ZWRfZXJybm8p KTsKQEAgLTcyOCw2ICs3MzIsOSBAQAogdm94X2NvbmZpZ3VyZSAoc3RydWN0IHNvdW5kX2Rl dmljZSAqc2QpCiB7CiAgIGludCB2YWw7CisjaWZkZWYgU0lHSU8KKyAgc2lnc2V0X3QgYmxv Y2tlZDsKKyNlbmRpZgogCiAgIGVhc3NlcnQgKHNkLT5mZCA+PSAwKTsKIApAQCAtNzM2LDcg Kzc0Myw5IEBACiAgICAgIHRyb3VibGVzLiAgKi8KICAgdHVybl9vbl9hdGltZXJzICgwKTsK ICNpZmRlZiBTSUdJTwotICBzaWdibG9jayAoc2lnbWFzayAoU0lHSU8pKTsKKyAgc2lnZW1w dHlzZXQgKCZibG9ja2VkKTsKKyAgc2lnYWRkc2V0ICgmYmxvY2tlZCwgU0lHSU8pOworICBw dGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQsIDApOwogI2VuZGlmCiAKICAg dmFsID0gc2QtPmZvcm1hdDsKQEAgLTc3MCw3ICs3NzksNyBAQAogCiAgIHR1cm5fb25fYXRp bWVycyAoMSk7CiAjaWZkZWYgU0lHSU8KLSAgc2lndW5ibG9jayAoc2lnbWFzayAoU0lHSU8p KTsKKyAgcHRocmVhZF9zaWdtYXNrIChTSUdfVU5CTE9DSywgJmJsb2NrZWQsIDApOwogI2Vu ZGlmCiB9CiAKQEAgLTc4Niw3ICs3OTUsMTAgQEAKIAkgYmUgaW50ZXJydXB0ZWQgYnkgYSBz aWduYWwuICBCbG9jayB0aGUgb25lcyB3ZSBrbm93IHRvIGNhdXNlCiAJIHRyb3VibGVzLiAg Ki8KICNpZmRlZiBTSUdJTwotICAgICAgc2lnYmxvY2sgKHNpZ21hc2sgKFNJR0lPKSk7Cisg ICAgICBzaWdzZXRfdCBibG9ja2VkOworICAgICAgc2lnZW1wdHlzZXQgKCZibG9ja2VkKTsK KyAgICAgIHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR0lPKTsKKyAgICAgIHB0aHJlYWRfc2ln bWFzayAoU0lHX0JMT0NLLCAmYmxvY2tlZCwgMCk7CiAjZW5kaWYKICAgICAgIHR1cm5fb25f YXRpbWVycyAoMCk7CiAKQEAgLTc5NSw3ICs4MDcsNyBAQAogCiAgICAgICB0dXJuX29uX2F0 aW1lcnMgKDEpOwogI2lmZGVmIFNJR0lPCi0gICAgICBzaWd1bmJsb2NrIChzaWdtYXNrIChT SUdJTykpOworICAgICAgcHRocmVhZF9zaWdtYXNrIChTSUdfVU5CTE9DSywgJmJsb2NrZWQs IDApOwogI2VuZGlmCiAKICAgICAgIC8qIENsb3NlIHRoZSBkZXZpY2UuICAqLwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNyYy9zeXNkZXAuYwkyMDEyLTA5LTAx IDAxOjEzOjUwICswMDAwCisrKyBzcmMvc3lzZGVwLmMJMjAxMi0wOS0wMyAwNzozODozOCAr MDAwMApAQCAtMTksOSArMTksOSBAQAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAKKyNkZWZp bmUgU1lTU0lHTkFMX0lOTElORSBFWFRFUk5fSU5MSU5FCiAjZGVmaW5lIFNZU1RJTUVfSU5M SU5FIEVYVEVSTl9JTkxJTkUKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0 ZGlvLmg+CiAjaW5jbHVkZSA8c2V0am1wLmg+CiAjaWZkZWYgSEFWRV9QV0RfSApAQCAtMzAy LDI3ICszMDIsMzQgQEAKIAkgdGVybWluYXRpb24gb2Ygc3VicHJvY2Vzc2VzLCBwZXJoYXBz IGludm9sdmluZyBhIGtlcm5lbCBidWcgdG9vLAogCSBidXQgbm8gaWRlYSB3aGF0IGl0IGlz LiAgSnVzdCBhcyBhIGh1bmNoIHdlIHNpZ25hbCBTSUdDSExEIHRvIHNlZQogCSBpZiB0aGF0 IGNhdXNlcyB0aGUgcHJvYmxlbSB0byBnbyBhd2F5IG9yIGdldCB3b3JzZS4gICovCi0gICAg ICBzaWdzZXRtYXNrIChzaWdtYXNrIChTSUdDSExEKSk7CisgICAgICBzaWdzZXRfdCBzaWdj aGlsZF9tYXNrOworICAgICAgc2lnZW1wdHlzZXQgKCZzaWdjaGlsZF9tYXNrKTsKKyAgICAg IHNpZ2FkZHNldCAoJnNpZ2NoaWxkX21hc2ssIFNJR0NITEQpOworICAgICAgcHRocmVhZF9z aWdtYXNrIChTSUdfU0VUTUFTSywgJnNpZ2NoaWxkX21hc2ssIDApOworCiAgICAgICBpZiAo MCA+IGtpbGwgKHBpZCwgMCkpCiAJewotCSAgc2lnc2V0bWFzayAoU0lHRU1QVFlNQVNLKTsK KwkgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1NFVE1BU0ssICZlbXB0eV9tYXNrLCAwKTsKIAkg IGtpbGwgKGdldHBpZCAoKSwgU0lHQ0hMRCk7CiAJICBicmVhazsKIAl9CiAgICAgICBpZiAo d2FpdF9kZWJ1Z2dpbmcpCiAJc2xlZXAgKDEpOwogICAgICAgZWxzZQotCXNpZ3BhdXNlIChT SUdFTVBUWU1BU0spOworCXNpZ3N1c3BlbmQgKCZlbXB0eV9tYXNrKTsKICNlbHNlIC8qIG5v dCBCU0RfU1lTVEVNLCBhbmQgbm90IEhQVVggdmVyc2lvbiA+PSA2ICovCiAjaWZkZWYgV0lO RE9XU05UCiAgICAgICB3YWl0ICgwKTsKICAgICAgIGJyZWFrOwogI2Vsc2UgLyogbm90IFdJ TkRPV1NOVCAqLwotICAgICAgc2lnYmxvY2sgKHNpZ21hc2sgKFNJR0NITEQpKTsKKyAgICAg IHNpZ3NldF90IGJsb2NrZWQ7CisgICAgICBzaWdlbXB0eXNldCAoJmJsb2NrZWQpOworICAg ICAgc2lnYWRkc2V0ICgmYmxvY2tlZCwgU0lHQ0hMRCk7CisgICAgICBwdGhyZWFkX3NpZ21h c2sgKFNJR19CTE9DSywgJmJsb2NrZWQsIDApOwogICAgICAgZXJybm8gPSAwOwogICAgICAg aWYgKGtpbGwgKHBpZCwgMCkgPT0gLTEgJiYgZXJybm8gPT0gRVNSQ0gpCiAJewotCSAgc2ln dW5ibG9jayAoc2lnbWFzayAoU0lHQ0hMRCkpOworCSAgcHRocmVhZF9zaWdtYXNrIChTSUdf VU5CTE9DSywgJmJsb2NrZWQsIDApOwogCSAgYnJlYWs7CiAJfQogCkBAIC00NTYsMTEgKzQ2 MywxMSBAQAogI2VuZGlmCS8qIG5vdCBNU0RPUyAqLwogCiAMCi0vKiBSZWNvcmQgYSBzaWdu YWwgY29kZSBhbmQgdGhlIGhhbmRsZXIgZm9yIGl0LiAgKi8KKy8qIFJlY29yZCBhIHNpZ25h bCBjb2RlIGFuZCB0aGUgYWN0aW9uIGZvciBpdC4gICovCiBzdHJ1Y3Qgc2F2ZV9zaWduYWwK IHsKICAgaW50IGNvZGU7Ci0gIHZvaWQgKCpoYW5kbGVyKSAoaW50KTsKKyAgc3RydWN0IHNp Z2FjdGlvbiBhY3Rpb247CiB9OwogCiBzdGF0aWMgdm9pZCBzYXZlX3NpZ25hbF9oYW5kbGVy cyAoc3RydWN0IHNhdmVfc2lnbmFsICopOwpAQCAtNjE4LDggKzYyNSw5IEBACiB7CiAgIHdo aWxlIChzYXZlZF9oYW5kbGVycy0+Y29kZSkKICAgICB7Ci0gICAgICBzYXZlZF9oYW5kbGVy cy0+aGFuZGxlcgotICAgICAgICA9ICh2b2lkICgqKSAoaW50KSkgc2lnbmFsIChzYXZlZF9o YW5kbGVycy0+Y29kZSwgU0lHX0lHTik7CisgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlv bjsKKyAgICAgIGVtYWNzX3NpZ2FjdGlvbl9pbml0ICgmYWN0aW9uLCBTSUdfSUdOKTsKKyAg ICAgIHNpZ2FjdGlvbiAoc2F2ZWRfaGFuZGxlcnMtPmNvZGUsICZhY3Rpb24sICZzYXZlZF9o YW5kbGVycy0+YWN0aW9uKTsKICAgICAgIHNhdmVkX2hhbmRsZXJzKys7CiAgICAgfQogfQpA QCAtNjI5LDcgKzYzNyw3IEBACiB7CiAgIHdoaWxlIChzYXZlZF9oYW5kbGVycy0+Y29kZSkK ICAgICB7Ci0gICAgICBzaWduYWwgKHNhdmVkX2hhbmRsZXJzLT5jb2RlLCBzYXZlZF9oYW5k bGVycy0+aGFuZGxlcik7CisgICAgICBzaWdhY3Rpb24gKHNhdmVkX2hhbmRsZXJzLT5jb2Rl LCAmc2F2ZWRfaGFuZGxlcnMtPmFjdGlvbiwgMCk7CiAgICAgICBzYXZlZF9oYW5kbGVycysr OwogICAgIH0KIH0KQEAgLTY4NiwxMyArNjk0LDE3IEBACiB2b2lkCiByZXF1ZXN0X3NpZ2lv ICh2b2lkKQogeworICBzaWdzZXRfdCB1bmJsb2NrZWQ7CisKICAgaWYgKG5vbmludGVyYWN0 aXZlKQogICAgIHJldHVybjsKIAorICBzaWdlbXB0eXNldCAoJnVuYmxvY2tlZCk7CiAjaWZk ZWYgU0lHV0lOQ0gKLSAgc2lndW5ibG9jayAoc2lnbWFzayAoU0lHV0lOQ0gpKTsKKyAgc2ln YWRkc2V0ICgmdW5ibG9ja2VkLCBTSUdXSU5DSCk7CiAjZW5kaWYKLSAgc2lndW5ibG9jayAo c2lnbWFzayAoU0lHSU8pKTsKKyAgc2lnYWRkc2V0ICgmdW5ibG9ja2VkLCBTSUdJTyk7Cisg IHB0aHJlYWRfc2lnbWFzayAoU0lHX1VOQkxPQ0ssICZ1bmJsb2NrZWQsIDApOwogCiAgIGlu dGVycnVwdHNfZGVmZXJyZWQgPSAwOwogfQpAQCAtNzAwLDYgKzcxMiw4IEBACiB2b2lkCiB1 bnJlcXVlc3Rfc2lnaW8gKHZvaWQpCiB7CisgIHNpZ3NldF90IGJsb2NrZWQ7CisKICAgaWYg KG5vbmludGVyYWN0aXZlKQogICAgIHJldHVybjsKIApAQCAtNzA4LDEwICs3MjIsMTIgQEAK ICAgICByZXR1cm47CiAjZW5kaWYKIAorICBzaWdlbXB0eXNldCAoJmJsb2NrZWQpOwogI2lm ZGVmIFNJR1dJTkNICi0gIHNpZ2Jsb2NrIChzaWdtYXNrIChTSUdXSU5DSCkpOworICBzaWdh ZGRzZXQgKCZibG9ja2VkLCBTSUdXSU5DSCk7CiAjZW5kaWYKLSAgc2lnYmxvY2sgKHNpZ21h c2sgKFNJR0lPKSk7CisgIHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR0lPKTsKKyAgcHRocmVh ZF9zaWdtYXNrIChTSUdfQkxPQ0ssICZibG9ja2VkLCAwKTsKICAgaW50ZXJydXB0c19kZWZl cnJlZCA9IDE7CiB9CiAKQEAgLTE0NzAsMjAgKzE0ODYsMTYgQEAKICAgfQogfQogDAotLyog UE9TSVggc2lnbmFscyBzdXBwb3J0IC0gREpCICovCi0vKiBBbnlvbmUgd2l0aCBQT1NJWCBz aWduYWxzIHNob3VsZCBoYXZlIEFOU0kgQyBkZWNsYXJhdGlvbnMgKi8KLQogc2lnc2V0X3Qg ZW1wdHlfbWFzazsKIAotI2lmbmRlZiBXSU5ET1dTTlQKLQotc2lnbmFsX2hhbmRsZXJfdAot c3lzX3NpZ25hbCAoaW50IHNpZ25hbF9udW1iZXIsIHNpZ25hbF9oYW5kbGVyX3QgYWN0aW9u KQorLyogU3RvcmUgaW50byAqQUNUSU9OIGEgc2lnbmFsIGFjdGlvbiBzdWl0YWJsZSBmb3Ig RW1hY3MsIHdpdGggaGFuZGxlcgorICAgSEFORExFUi4gICovCit2b2lkCitlbWFjc19zaWdh Y3Rpb25faW5pdCAoc3RydWN0IHNpZ2FjdGlvbiAqYWN0aW9uLCBzaWduYWxfaGFuZGxlcl90 IGhhbmRsZXIpCiB7Ci0gIHN0cnVjdCBzaWdhY3Rpb24gbmV3X2FjdGlvbiwgb2xkX2FjdGlv bjsKLSAgc2lnZW1wdHlzZXQgKCZuZXdfYWN0aW9uLnNhX21hc2spOwotICBuZXdfYWN0aW9u LnNhX2hhbmRsZXIgPSBhY3Rpb247Ci0gIG5ld19hY3Rpb24uc2FfZmxhZ3MgPSAwOworICBz aWdlbXB0eXNldCAoJmFjdGlvbi0+c2FfbWFzayk7CisgIGFjdGlvbi0+c2FfaGFuZGxlciA9 IGhhbmRsZXI7CisgIGFjdGlvbi0+c2FfZmxhZ3MgPSAwOwogI2lmIGRlZmluZWQgKFNBX1JF U1RBUlQpCiAgIC8qIEVtYWNzIG1vc3RseSB3b3JrcyBiZXR0ZXIgd2l0aCByZXN0YXJ0YWJs ZSBzeXN0ZW0gc2VydmljZXMuIElmIHRoaXMKICAgICAgZmxhZyBleGlzdHMsIHdlIHByb2Jh Ymx5IHdhbnQgdG8gdHVybiBpdCBvbiBoZXJlLgpAQCAtMTUwMCw1NyArMTUxMiwzMSBAQAog IyBpZiBkZWZpbmVkIChCUk9LRU5fU0FfUkVTVEFSVCkgfHwgZGVmaW5lZCAoU1lOQ19JTlBV VCkKICAgaWYgKG5vbmludGVyYWN0aXZlKQogIyBlbmRpZgotICAgIG5ld19hY3Rpb24uc2Ff ZmxhZ3MgPSBTQV9SRVNUQVJUOwotI2VuZGlmCi0gIHNpZ2FjdGlvbiAoc2lnbmFsX251bWJl ciwgJm5ld19hY3Rpb24sICZvbGRfYWN0aW9uKTsKLSAgcmV0dXJuIChvbGRfYWN0aW9uLnNh X2hhbmRsZXIpOwotfQotCi0jZW5kaWYJLyogV0lORE9XU05UICovCi0KLSNpZm5kZWYgX19H TlVDX18KLS8qIElmIHdlJ3JlIGNvbXBpbGluZyB3aXRoIEdDQywgd2UgZG9uJ3QgbmVlZCB0 aGlzIGZ1bmN0aW9uLCBzaW5jZSBpdAotICAgY2FuIGJlIHdyaXR0ZW4gYXMgYSBtYWNyby4g ICovCi1zaWdzZXRfdAotc3lzX3NpZ21hc2sgKGludCBzaWcpCi17Ci0gIHNpZ3NldF90IG1h c2s7Ci0gIHNpZ2VtcHR5c2V0ICgmbWFzayk7Ci0gIHNpZ2FkZHNldCAoJm1hc2ssIHNpZyk7 Ci0gIHJldHVybiBtYXNrOwotfQotI2VuZGlmCi0KLS8qIEknZCBsaWtlIHRvIGhhdmUgdGhl c2UgZ3V5cyByZXR1cm4gcG9pbnRlcnMgdG8gdGhlIG1hc2sgc3RvcmFnZSBpbiBoZXJlLAot ICAgYnV0IHRoZXJlJ2QgYmUgdHJvdWJsZSBpZiB0aGUgY29kZSB3YXMgc2F2aW5nIG11bHRp cGxlIG1hc2tzLiAgSSdsbCBiZQotICAgc2FmZSBhbmQgcGFzcyB0aGUgc3RydWN0dXJlLiAg SXQgbm9ybWFsbHkgd29uJ3QgYmUgbW9yZSB0aGFuIDIgYnl0ZXMKLSAgIGFueWhvdy4gLSBE SkIgKi8KLQotc2lnc2V0X3QKLXN5c19zaWdibG9jayAoc2lnc2V0X3QgbmV3X21hc2spCi17 Ci0gIHNpZ3NldF90IG9sZF9tYXNrOwotICBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywg Jm5ld19tYXNrLCAmb2xkX21hc2spOwotICByZXR1cm4gKG9sZF9tYXNrKTsKLX0KLQotc2ln c2V0X3QKLXN5c19zaWd1bmJsb2NrIChzaWdzZXRfdCBuZXdfbWFzaykKLXsKLSAgc2lnc2V0 X3Qgb2xkX21hc2s7Ci0gIHB0aHJlYWRfc2lnbWFzayAoU0lHX1VOQkxPQ0ssICZuZXdfbWFz aywgJm9sZF9tYXNrKTsKLSAgcmV0dXJuIChvbGRfbWFzayk7Ci19Ci0KLXNpZ3NldF90Ci1z eXNfc2lnc2V0bWFzayAoc2lnc2V0X3QgbmV3X21hc2spCi17Ci0gIHNpZ3NldF90IG9sZF9t YXNrOwotICBwdGhyZWFkX3NpZ21hc2sgKFNJR19TRVRNQVNLLCAmbmV3X21hc2ssICZvbGRf bWFzayk7Ci0gIHJldHVybiAob2xkX21hc2spOwotfQotCi0MCisgICAgYWN0aW9uLT5zYV9m bGFncyA9IFNBX1JFU1RBUlQ7CisjZW5kaWYKK30KKworI2lmZGVmIEZPUldBUkRfU0lHTkFM X1RPX01BSU5fVEhSRUFECisvKiBQT1NJWCBzYXlzIGFueSB0aHJlYWQgY2FuIHJlY2VpdmUg dGhlIHNpZ25hbC4gIE9uIEdOVS9MaW51eCB0aGF0IGlzCisgICBub3QgdHJ1ZSwgYnV0IGZv ciBvdGhlciBzeXN0ZW1zIChGcmVlQlNEIGF0IGxlYXN0KSBpdCBpcy4gIFNvCisgICBkaXJl Y3QgdGhlIHNpZ25hbCB0byB0aGUgY29ycmVjdCB0aHJlYWQgYW5kIGJsb2NrIGl0IGZyb20g dGhpcyB0aHJlYWQuICAqLworYm9vbAorZm9yd2FyZGVkX3NpZ25hbCAoaW50IHNpZ25vKQor eworICBpZiAocHRocmVhZF9lcXVhbCAocHRocmVhZF9zZWxmICgpLCBtYWluX3RocmVhZCkp CisgICAgcmV0dXJuIDA7CisgIGVsc2UKKyAgICB7CisgICAgICBzaWdzZXRfdCBibG9ja2Vk OworICAgICAgc2lnZW1wdHlzZXQgKCZibG9ja2VkKTsKKyAgICAgIHNpZ2FkZHNldCAoJmJs b2NrZWQsIHNpZ25vKTsKKyAgICAgIHB0aHJlYWRfc2lnbWFzayAoU0lHX0JMT0NLLCAmYmxv Y2tlZCwgMCk7CisgICAgICBwdGhyZWFkX2tpbGwgKG1haW5fdGhyZWFkLCBzaWdubyk7Cisg ICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisjZW5kaWYKKwogI2lmICFkZWZpbmVkIEhBVkVf U1RSU0lHTkFMICYmICFIQVZFX0RFQ0xfU1lTX1NJR0xJU1QKIHN0YXRpYyBjaGFyICpteV9z eXNfc2lnbGlzdFtOU0lHXTsKICMgaWZkZWYgc3lzX3NpZ2xpc3QKCj09PSBtb2RpZmllZCBm aWxlICdzcmMvc3lzc2lnbmFsLmgnCi0tLSBzcmMvc3lzc2lnbmFsLmgJMjAxMi0wNy0xMyAw MToxOTowNiArMDAwMAorKysgc3JjL3N5c3NpZ25hbC5oCTIwMTItMDktMDMgMDc6Mzg6Mzgg KzAwMDAKQEAgLTE3LDYgKzE3LDkgQEAKIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIEdOVSBF bWFjcy4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisKIGV4dGVy biB2b2lkIGluaXRfc2lnbmFscyAodm9pZCk7CiAKICNpZmRlZiBIQVZFX1BUSFJFQUQKQEAg LTI2LDYzICsyOSwyMSBAQAogI2RlZmluZSBGT1JXQVJEX1NJR05BTF9UT19NQUlOX1RIUkVB RAogI2VuZGlmCiAKLS8qIERvbid0ICNpbmNsdWRlIDxzaWduYWwuaD4uICBUaGF0IGhlYWRl ciBzaG91bGQgYWx3YXlzIGJlICNpbmNsdWRlZAotICAgYmVmb3JlICJjb25maWcuaCIsIGJl Y2F1c2Ugc29tZSBjb25maWd1cmF0aW9uIGZpbGVzIChsaWtlIHMvaHB1eC5oKQotICAgaW5k aWNhdGUgdGhhdCBTSUdJTyBkb2Vzbid0IHdvcmsgYnkgI3VuZGVmLWluZyBTSUdJTy4gIElm IHRoaXMgZmlsZQotICAgI2luY2x1ZGVzIDxzaWduYWwuaD4sIHRoZW4gdGhhdCB3aWxsIHJl LSNkZWZpbmUgU0lHSU8gYW5kIGNvbmZ1c2UKLSAgIHRoaW5ncy4gICovCi0vKiBYWFggVGhp cyBpcyBub3QgY29ycmVjdCBhbnltb3JlLCB0aGVyZSBpcyBhIEJST0tFTl9TSUdJTyBtYWNy by4gKi8KLQotI2RlZmluZSBTSUdNQVNLVFlQRSBzaWdzZXRfdAotCi0jZGVmaW5lIFNJR0VN UFRZTUFTSyAoZW1wdHlfbWFzaykKK0lOTElORV9IRUFERVJfQkVHSU4KKyNpZm5kZWYgU1lT U0lHTkFMX0lOTElORQorIyBkZWZpbmUgU1lTU0lHTkFMX0lOTElORSBJTkxJTkUKKyNlbmRp ZgorCiBleHRlcm4gc2lnc2V0X3QgZW1wdHlfbWFzazsKIAotLyogUE9TSVggcHJldHR5IG11 Y2ggZGVzdHJveXMgYW55IHBvc3NpYmlsaXR5IG9mIHdyaXRpbmcgc2lnbWFzayBhcyBhCi0g ICBtYWNybyBpbiBzdGFuZGFyZCBDLiAgV2UgYWx3YXlzIGRlZmluZSBvdXIgb3duIHZlcnNp b24gYmVjYXVzZSB0aGUKLSAgIHByZWRlZmluZWQgbWFjcm8gaW4gR2xpYmMgMi4xIGlzIG9u bHkgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgZm9yIG9sZAotICAgcHJvZ3JhbXMgdGhh dCB1c2UgaW50IGFzIHNpZ25hbCBtYXNrIHR5cGUuICAqLwotI3VuZGVmIHNpZ21hc2sKLSNp ZmRlZiBfX0dOVUNfXwotI2RlZmluZSBzaWdtYXNrKFNJRykgCQkJCVwKLSAgKHsJCQkJCQlc Ci0gICAgc2lnc2V0X3QgX21hc2s7CQkJCVwKLSAgICBzaWdlbXB0eXNldCAoJl9tYXNrKTsJ CQlcCi0gICAgc2lnYWRkc2V0ICgmX21hc2ssIFNJRyk7CQkJXAotICAgIF9tYXNrOwkJCQkJ XAotICB9KQotI2Vsc2UgLyogISBkZWZpbmVkIChfX0dOVUNfXykgKi8KLWV4dGVybiBzaWdz ZXRfdCBzeXNfc2lnbWFzayAoKTsKLSNkZWZpbmUgc2lnbWFzayhTSUcpIChzeXNfc2lnbWFz ayAoU0lHKSkKLSNlbmRpZiAvKiAhIGRlZmluZWQgKF9fR05VQ19fKSAqLwotCi0jdW5kZWYg c2lncGF1c2UKLSNkZWZpbmUgc2lncGF1c2UoTUFTSykgICAgc2lnc3VzcGVuZCAoJihNQVNL KSkKLQotI2RlZmluZSBzaWdibG9jayhTSUcpICAgIHN5c19zaWdibG9jayAoU0lHKQotI2Rl ZmluZSBzaWd1bmJsb2NrKFNJRykgIHN5c19zaWd1bmJsb2NrIChTSUcpCi0jaWZuZGVmIHNp Z3NldG1hc2sKLSNkZWZpbmUgc2lnc2V0bWFzayhTSUcpICBzeXNfc2lnc2V0bWFzayAoU0lH KQotI2VuZGlmCi0jdW5kZWYgc2lnbmFsCi0jZGVmaW5lIHNpZ25hbChTSUcsQUNUKSAgICAg IHN5c19zaWduYWwoU0lHLEFDVCkKLQotLyogV2hldGhlciB0aGlzIGlzIHdoYXQgYWxsIHN5 c3RlbXMgd2FudCBvciBub3QsIHRoaXMgaXMgd2hhdAotICAgYXBwZWFycyB0byBiZSBhc3N1 bWVkIGluIHRoZSBzb3VyY2UsIGZvciBleGFtcGxlIGRhdGEuYzphcml0aF9lcnJvci4gICov CiB0eXBlZGVmIHZvaWQgKCpzaWduYWxfaGFuZGxlcl90KSAoaW50KTsKIAotc2lnbmFsX2hh bmRsZXJfdCBzeXNfc2lnbmFsIChpbnQgc2lnbmFsX251bWJlciwgc2lnbmFsX2hhbmRsZXJf dCBhY3Rpb24pOwotc2lnc2V0X3Qgc3lzX3NpZ2Jsb2NrICAgKHNpZ3NldF90IG5ld19tYXNr KTsKLXNpZ3NldF90IHN5c19zaWd1bmJsb2NrIChzaWdzZXRfdCBuZXdfbWFzayk7Ci1zaWdz ZXRfdCBzeXNfc2lnc2V0bWFzayAoc2lnc2V0X3QgbmV3X21hc2spOworZXh0ZXJuIHZvaWQg ZW1hY3Nfc2lnYWN0aW9uX2luaXQgKHN0cnVjdCBzaWdhY3Rpb24gKiwgc2lnbmFsX2hhbmRs ZXJfdCk7CisKICNpZiAhIChkZWZpbmVkIFRJT0NOT1RUWSB8fCBkZWZpbmVkIFVTRzUgfHwg ZGVmaW5lZCBDWUdXSU4pCiBfTm9yZXR1cm4gdm9pZCBjcm9hayAoY2hhciAqKTsKICNlbmRp ZgogCi0jZGVmaW5lIHN5c19zaWdkZWwoTUFTSyxTSUcpIHNpZ2RlbHNldCAoJk1BU0ssU0lH KQotCi0jZGVmaW5lIHNpZ2ZyZWUoKSBzaWdzZXRtYXNrIChTSUdFTVBUWU1BU0spCi0KICNp ZiBkZWZpbmVkIChTSUdJTykgJiYgZGVmaW5lZCAoQlJPS0VOX1NJR0lPKQogIyB1bmRlZiBT SUdJTwogI2VuZGlmCkBAIC05NywxMiArNTgsOCBAQAogI3VuZGVmIFNJR1BUWQogI2VuZGlm CiAKLQotLyogRklYTUU/ICBFbWFjcyBvbmx5IGRlZmluZXMgTlNJR19NSU5JTVVNIG9uIHNv bWUgcGxhdGZvcm1zPyAgKi8KICNpZiBOU0lHIDwgTlNJR19NSU5JTVVNCi0jIGlmZGVmIE5T SUcKLSMgIHVuZGVmIE5TSUcKLSMgZW5kaWYKKyMgdW5kZWYgTlNJRwogIyBkZWZpbmUgTlNJ RyBOU0lHX01JTklNVU0KICNlbmRpZgogCkBAIC0xMzMsMjQgKzkwLDkgQEAKIAogI2lmZGVm IEZPUldBUkRfU0lHTkFMX1RPX01BSU5fVEhSRUFECiBleHRlcm4gcHRocmVhZF90IG1haW5f dGhyZWFkOwotI2RlZmluZSBTSUdOQUxfVEhSRUFEX0NIRUNLKHNpZ25vKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg IGlmICghcHRocmVhZF9lcXVhbCAocHRocmVhZF9zZWxmICgpLCBtYWluX3RocmVhZCkpCQkJ XAotICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAvKiBQT1NJWCBzYXlzIGFueSB0aHJl YWQgY2FuIHJlY2VpdmUgdGhlIHNpZ25hbC4gIE9uIEdOVS9MaW51eCAgXAotICAgICAgICAg ICB0aGF0IGlzIG5vdCB0cnVlLCBidXQgZm9yIG90aGVyIHN5c3RlbXMgKEZyZWVCU0QgYXQg bGVhc3QpICAgXAotICAgICAgICAgICBpdCBpcy4gIFNvIGRpcmVjdCB0aGUgc2lnbmFsIHRv IHRoZSBjb3JyZWN0IHRocmVhZCBhbmQgYmxvY2sgXAotICAgICAgICAgICBpdCBmcm9tIHRo aXMgdGhyZWFkLiAgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICBzaWdzZXRfdCBuZXdfbWFzazsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzaWdl bXB0eXNldCAoJm5ld19tYXNrKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICAgICBzaWdhZGRzZXQgKCZuZXdfbWFzaywgc2lnbm8pOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwdGhyZWFkX3NpZ21hc2sg KFNJR19CTE9DSywgJm5ld19tYXNrLCAwKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICBwdGhyZWFkX2tpbGwgKG1haW5fdGhyZWFkLCBzaWdubyk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgfSB3aGlsZSAoMCkKK2V4dGVybiBib29sIGZvcndhcmRlZF9zaWduYWwgKGlu dCk7CisjZWxzZQorU1lTU0lHTkFMX0lOTElORSBib29sIGZvcndhcmRlZF9zaWduYWwgKGlu dCBzaWdubykgeyByZXR1cm4gMDsgfQorI2VuZGlmCiAKLSNlbHNlIC8qIG5vdCBGT1JXQVJE X1NJR05BTF9UT19NQUlOX1RIUkVBRCAqLwotI2RlZmluZSBTSUdOQUxfVEhSRUFEX0NIRUNL KHNpZ25vKQotI2VuZGlmIC8qIG5vdCBGT1JXQVJEX1NJR05BTF9UT19NQUlOX1RIUkVBRCAq LworSU5MSU5FX0hFQURFUl9FTkQKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdGVybS5jJwot LS0gc3JjL3Rlcm0uYwkyMDEyLTA4LTMxIDEwOjUzOjE5ICswMDAwCisrKyBzcmMvdGVybS5j CTIwMTItMDktMDMgMDY6NTA6MTkgKzAwMDAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRl IDxzeXMvZmlsZS5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVkZSA8dW5pc3Rk Lmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c2V0am1wLmg+CiAKICNpbmNs dWRlICJsaXNwLmgiCkBAIC0yOTMyLDcgKzI5MzEsMTAgQEAKICAgICAgIG5vX2NvbnRyb2xs aW5nX3R0eSA9IDE7CiAjZWxzZQogI2lmZGVmIFRJT0NOT1RUWSAgICAgICAgICAgICAgICAv KiBUcnkgQlNEIGlvY3Rscy4gKi8KLSAgICAgIHNpZ2Jsb2NrIChzaWdtYXNrIChTSUdUVE9V KSk7CisgICAgICBzaWdzZXRfdCBibG9ja2VkOworICAgICAgc2lnZW1wdHlzZXQgKCZibG9j a2VkKTsKKyAgICAgIHNpZ2FkZHNldCAoJmJsb2NrZWQsIFNJR1RUT1UpOworICAgICAgcHRo cmVhZF9zaWdtYXNrIChTSUdfQkxPQ0ssICZibG9ja2VkLCAwKTsKICAgICAgIGZkID0gZW1h Y3Nfb3BlbiAoREVWX1RUWSwgT19SRFdSLCAwKTsKICAgICAgIGlmIChmZCAhPSAtMSAmJiBp b2N0bCAoZmQsIFRJT0NOT1RUWSwgMCkgIT0gLTEpCiAgICAgICAgIHsKQEAgLTI5NDAsNyAr Mjk0Miw3IEBACiAgICAgICAgIH0KICAgICAgIGlmIChmZCAhPSAtMSkKICAgICAgICAgZW1h Y3NfY2xvc2UgKGZkKTsKLSAgICAgIHNpZ3VuYmxvY2sgKHNpZ21hc2sgKFNJR1RUT1UpKTsK KyAgICAgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1VOQkxPQ0ssICZibG9ja2VkLCAwKTsKICNl bHNlCiAgICAgICAvKiBVbmtub3duIHN5c3RlbS4gKi8KICAgICAgIGNyb2FrICgpOwpAQCAt Mjk3MSw2ICsyOTczLDcgQEAKICAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IE5V TEw7CiAgIHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwgPSBOVUxMOwogICBpbnQgY3R0eSA9 IDA7ICAgICAgICAgICAgICAgICAvKiAxIGlmIGFza2VkIHRvIG9wZW4gY29udHJvbGxpbmcg dHR5LiAqLworICBzaWdzZXRfdCBibG9ja2VkOwogCiAgIGlmICghdGVybWluYWxfdHlwZSkK ICAgICBtYXliZV9mYXRhbCAobXVzdF9zdWNjZWVkLCAwLApAQCAtMzA3NCw5ICszMDc3LDEx IEBACiAKICAgLyogT24gc29tZSBzeXN0ZW1zLCB0Z2V0ZW50IHRyaWVzIHRvIGFjY2VzcyB0 aGUgY29udHJvbGxpbmcKICAgICAgdGVybWluYWwuICovCi0gIHNpZ2Jsb2NrIChzaWdtYXNr IChTSUdUVE9VKSk7CisgIHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7CisgIHNpZ2FkZHNldCAo JmJsb2NrZWQsIFNJR1RUT1UpOworICBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJs b2NrZWQsIDApOwogICBzdGF0dXMgPSB0Z2V0ZW50ICh0dHktPnRlcm1jYXBfdGVybV9idWZm ZXIsIHRlcm1pbmFsX3R5cGUpOwotICBzaWd1bmJsb2NrIChzaWdtYXNrIChTSUdUVE9VKSk7 CisgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1VOQkxPQ0ssICZibG9ja2VkLCAwKTsKIAogICBp ZiAoc3RhdHVzIDwgMCkKICAgICB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3dpZGdldC5j JwotLS0gc3JjL3dpZGdldC5jCTIwMTItMDktMDIgMTY6NTY6MzEgKzAwMDAKKysrIHNyYy93 aWRnZXQuYwkyMDEyLTA5LTAzIDAwOjA2OjI1ICswMDAwCkBAIC01MCw5ICs1MCw2IEBACiAj aW5jbHVkZSA8WDExL1NoZWxsUC5oPgogI2luY2x1ZGUgIi4uL2x3bGliL2x3bGliLmgiCiAK LSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlICJzeXNzaWduYWwuaCIKLQogI2luY2x1 ZGUgImNoYXJhY3Rlci5oIgogI2luY2x1ZGUgImZvbnQuaCIKIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy94bWVudS5jJwotLS0gc3JjL3htZW51LmMJMjAxMi0wOC0xNyAyMTo1MjoxNSAr MDAwMAorKysgc3JjL3htZW51LmMJMjAxMi0wOS0wMSAyMTozNzowNyArMDAwMApAQCAtMzIs MTEgKzMyLDYgQEAKIAogI2luY2x1ZGUgPGNvbmZpZy5oPgogCi0jaWYgMCAgLyogV2h5IHdh cyB0aGlzIGluY2x1ZGVkPyAgQW5kIHdpdGhvdXQgc3lzc2lnbmFsLmg/ICAqLwotLyogT24g NC4zIHRoaXMgbG9zZXMgaWYgaXQgY29tZXMgYWZ0ZXIgeHRlcm0uaC4gICovCi0jaW5jbHVk ZSA8c2lnbmFsLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8 c2V0am1wLmg+CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveHRlcm0uYycKLS0tIHNyYy94 dGVybS5jCTIwMTItMDktMDIgMTc6MTA6MzUgKzAwMDAKKysrIHNyYy94dGVybS5jCTIwMTIt MDktMDMgMDc6MjQ6MDMgKzAwMDAKQEAgLTIxLDcgKzIxLDYgQEAKIC8qIFh0IGZlYXR1cmVz IG1hZGUgYnkgRnJlZCBQaWVycmVzdGVndXkuICAqLwogCiAjaW5jbHVkZSA8Y29uZmlnLmg+ Ci0jaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxz ZXRqbXAuaD4KIApAQCAtMjksOSArMjgsNiBAQAogCiAjaW5jbHVkZSAibGlzcC5oIgogI2lu Y2x1ZGUgImJsb2NraW5wdXQuaCIKLQotLyogTmVlZCBzeXNzaWduYWwuaCBmb3IgdmFyaW91 cyBleHRlcm5zIGFuZCBkZWZpbml0aW9ucyB0aGF0IG1heSBiZSByZXF1aXJlZAotICAgYnkg c29tZSBjb25maWd1cmF0aW9ucyBmb3IgY2FsbHMgdG8gc2lnbmFsIGxhdGVyIGluIHRoaXMg c291cmNlIGZpbGUuICAqLwogI2luY2x1ZGUgInN5c3NpZ25hbC5oIgogCiAvKiBUaGlzIG1h eSBpbmNsdWRlIHN5cy90eXBlcy5oLCBhbmQgdGhhdCBzb21laG93IGxvc2VzCkBAIC03NzY2 LDcgKzc3NjIsOSBAQAogI2lmZGVmIFVTRwogICAvKiBVU0cgc3lzdGVtcyBmb3JnZXQgaGFu ZGxlcnMgd2hlbiB0aGV5IGFyZSB1c2VkOwogICAgICBtdXN0IHJlZXN0YWJsaXNoIGVhY2gg dGltZSAqLwotICBzaWduYWwgKHNpZ25hbG51bSwgeF9jb25uZWN0aW9uX3NpZ25hbCk7Cisg IHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworICBlbWFjc19zaWdhY3Rpb25faW5pdCAoJmFj dGlvbiwgeF9jb25uZWN0aW9uX3NpZ25hbCk7CisgIHNpZ2FjdGlvbiAoc2lnbmFsbnVtLCAm YWN0aW9uLCAwKTsKICNlbmRpZiAvKiBVU0cgKi8KIH0KIApAQCAtNzc4OCw2ICs3Nzg2LDcg QEAKICAgc3RydWN0IHhfZGlzcGxheV9pbmZvICpkcHlpbmZvID0geF9kaXNwbGF5X2luZm9f Zm9yX2Rpc3BsYXkgKGRweSk7CiAgIExpc3BfT2JqZWN0IGZyYW1lLCB0YWlsOwogICBwdHJk aWZmX3QgaWR4ID0gU1BFQ1BETF9JTkRFWCAoKTsKKyAgc2lnc2V0X3QgdW5ibG9ja2VkOwog CiAgIGVycm9yX21zZyA9IGFsbG9jYSAoc3RybGVuIChlcnJvcl9tZXNzYWdlKSArIDEpOwog ICBzdHJjcHkgKGVycm9yX21zZywgZXJyb3JfbWVzc2FnZSk7CkBAIC03ODc2LDEwICs3ODc1 LDEyIEBACiAgICAgfQogCiAgIC8qIE9yZGluYXJ5IHN0YWNrIHVud2luZCBkb2Vzbid0IGRl YWwgd2l0aCB0aGVzZS4gICovCisgIHNpZ2VtcHR5c2V0ICgmdW5ibG9ja2VkKTsKICNpZmRl ZiBTSUdJTwotICBzaWd1bmJsb2NrIChzaWdtYXNrIChTSUdJTykpOworICBzaWdhZGRzZXQg KCZ1bmJsb2NrZWQsIFNJR0lPKTsKICNlbmRpZgotICBzaWd1bmJsb2NrIChzaWdtYXNrIChT SUdBTFJNKSk7CisgIHNpZ2FkZHNldCAoJnVuYmxvY2tlZCwgU0lHQUxSTSk7CisgIHB0aHJl YWRfc2lnbWFzayAoU0lHX1VOQkxPQ0ssICZ1bmJsb2NrZWQsIDApOwogICBUT1RBTExZX1VO QkxPQ0tfSU5QVVQ7CiAKICAgdW5iaW5kX3RvIChpZHgsIFFuaWwpOwpAQCAtMTA3NTksNiAr MTA3NjAsOCBAQAogdm9pZAogeF9pbml0aWFsaXplICh2b2lkKQogeworICBzdHJ1Y3Qgc2ln YWN0aW9uIGFjdGlvbjsKKwogICBiYXVkX3JhdGUgPSAxOTIwMDsKIAogICB4X25vb3BfY291 bnQgPSAwOwpAQCAtMTA4MDUsNyArMTA4MDgsOCBAQAogICBYU2V0RXJyb3JIYW5kbGVyICh4 X2Vycm9yX2hhbmRsZXIpOwogICBYU2V0SU9FcnJvckhhbmRsZXIgKHhfaW9fZXJyb3JfcXVp dHRlcik7CiAKLSAgc2lnbmFsIChTSUdQSVBFLCB4X2Nvbm5lY3Rpb25fc2lnbmFsKTsKKyAg ZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIHhfY29ubmVjdGlvbl9zaWduYWwpOwor ICBzaWdhY3Rpb24gKFNJR1BJUEUsICZhY3Rpb24sIDApOwogfQogCiAK --------------010606010907020401040501-- From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 04:51:06 2012 Received: (at 12327) by debbugs.gnu.org; 3 Sep 2012 08:51:06 +0000 Received: from localhost ([127.0.0.1]:35610 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8SN5-00066s-S6 for submit@debbugs.gnu.org; Mon, 03 Sep 2012 04:51:06 -0400 Received: from mail-out.m-online.net ([212.18.0.10]:56065) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8SN1-00066N-Sq for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 04:51:02 -0400 Received: from frontend1.mail.m-online.net (frontend1.mail.intern.m-online.net [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id 3X9PxK6cQhz3hhjR; Mon, 3 Sep 2012 10:49:24 +0200 (CEST) X-Auth-Info: JrwuDjVWBwFt/KtXrB0qKsr/fApfzTZfe+KYLiQNOf4= Received: from igel.home (ppp-88-217-117-77.dynamic.mnet-online.de [88.217.117.77]) by mail.mnet-online.de (Postfix) with ESMTPA id 3X9PxJ4vdgzbbl2; Mon, 3 Sep 2012 10:49:24 +0200 (CEST) Received: by igel.home (Postfix, from userid 501) id 9D5C3CA2A4; Mon, 3 Sep 2012 10:49:23 +0200 (CEST) From: Andreas Schwab To: Paul Eggert Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> X-Yow: Are we THERE yet?! Date: Mon, 03 Sep 2012 10:49:22 +0200 In-Reply-To: <50446748.3060406@cs.ucla.edu> (Paul Eggert's message of "Mon, 03 Sep 2012 01:16:08 -0700") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, Eli Zaretskii , 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) Paul Eggert writes: > /* Must reestablish handler each time it is called. */ That's not true for POSIX signals. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 05:03:35 2012 Received: (at 12327) by debbugs.gnu.org; 3 Sep 2012 09:03:35 +0000 Received: from localhost ([127.0.0.1]:35624 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8SZC-0006OM-Bd for submit@debbugs.gnu.org; Mon, 03 Sep 2012 05:03:35 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:54134) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8SZ8-0006OC-KG for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 05:03:32 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 62486A6001E; Mon, 3 Sep 2012 02:01:58 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ro8gpryQ5NRp; Mon, 3 Sep 2012 02:01:58 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id C5051A6001A; Mon, 3 Sep 2012 02:01:57 -0700 (PDT) Message-ID: <5044720B.2030304@cs.ucla.edu> Date: Mon, 03 Sep 2012 02:02:03 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Andreas Schwab Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, Eli Zaretskii , 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) On 09/03/2012 01:49 AM, Andreas Schwab wrote: > That's not true for POSIX signals. Yes, thanks, that's right. Further cleanup is needed, both there and elsewhere. I've avoided these further cleanups in order to keep the size of the patch down. From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 05:18:39 2012 Received: (at 12327) by debbugs.gnu.org; 3 Sep 2012 09:18:40 +0000 Received: from localhost ([127.0.0.1]:35638 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Snn-0006iu-Hf for submit@debbugs.gnu.org; Mon, 03 Sep 2012 05:18:39 -0400 Received: from mail-out.m-online.net ([212.18.0.10]:60529) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Snl-0006im-5z for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 05:18:37 -0400 Received: from frontend1.mail.m-online.net (frontend1.mail.intern.m-online.net [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id 3X9QYB6Pqfz3hhZZ; Mon, 3 Sep 2012 11:17:02 +0200 (CEST) X-Auth-Info: S+6ZC6x3TSrgpfXE6W3l3uT6LRngOtYdkdVO7ZIS8Rg= Received: from igel.home (ppp-88-217-117-77.dynamic.mnet-online.de [88.217.117.77]) by mail.mnet-online.de (Postfix) with ESMTPA id 3X9QYB5xyKzbbh6; Mon, 3 Sep 2012 11:17:02 +0200 (CEST) Received: by igel.home (Postfix, from userid 501) id 78AF8CA2A4; Mon, 3 Sep 2012 11:17:02 +0200 (CEST) From: Andreas Schwab To: Paul Eggert Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> X-Yow: He is the MELBA-BEING... the ANGEL CAKE... XEROX him... XEROX him -- Date: Mon, 03 Sep 2012 11:17:02 +0200 In-Reply-To: <5044720B.2030304@cs.ucla.edu> (Paul Eggert's message of "Mon, 03 Sep 2012 02:02:03 -0700") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, Eli Zaretskii , 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) Paul Eggert writes: > On 09/03/2012 01:49 AM, Andreas Schwab wrote: >> That's not true for POSIX signals. > > Yes, thanks, that's right. Further cleanup is needed, > both there and elsewhere. I've avoided these further > cleanups in order to keep the size of the patch down. But that's really part of the signal->sigaction move. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 03 11:34:07 2012 Received: (at 12327) by debbugs.gnu.org; 3 Sep 2012 15:34:07 +0000 Received: from localhost ([127.0.0.1]:36485 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Yf9-0000M8-J0 for submit@debbugs.gnu.org; Mon, 03 Sep 2012 11:34:07 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:63220) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8Yf6-0000Ly-TK for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 11:34:06 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0M9S00C005SSMJ00@a-mtaout20.012.net.il> for 12327@debbugs.gnu.org; Mon, 03 Sep 2012 18:32:00 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9S00BSI5TAZV80@a-mtaout20.012.net.il>; Mon, 03 Sep 2012 18:31:59 +0300 (IDT) Date: Mon, 03 Sep 2012 18:32:06 +0300 From: Eli Zaretskii Subject: Re: Signal-handler cleanup for Emacs In-reply-to: <50446748.3060406@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <834nnff7gp.fsf@gnu.org> References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Mon, 03 Sep 2012 01:16:08 -0700 > From: Paul Eggert > CC: 12327@debbugs.gnu.org, lekktu@gmail.com > > > I could go with replacing 'signal' etc. with their modern Posix > > replacements > > OK, thanks, I reworked the patch to implement that suggestion. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 04 04:12:27 2012 Received: (at 12327) by debbugs.gnu.org; 4 Sep 2012 08:12:27 +0000 Received: from localhost ([127.0.0.1]:37654 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8oFF-0007eR-HN for submit@debbugs.gnu.org; Tue, 04 Sep 2012 04:12:26 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:34530) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T8oFC-0007eJ-0V for 12327@debbugs.gnu.org; Tue, 04 Sep 2012 04:12:24 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A28A2A60029; Tue, 4 Sep 2012 01:12:21 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t339c-jNP6lK; Tue, 4 Sep 2012 01:12:20 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 4BD5F39E8007; Tue, 4 Sep 2012 01:12:20 -0700 (PDT) Message-ID: <5045B7E1.7080901@cs.ucla.edu> Date: Tue, 04 Sep 2012 01:12:17 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Andreas Schwab Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> In-Reply-To: Content-Type: multipart/mixed; boundary="------------010903030601080708020807" X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, Eli Zaretskii , 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.6 (-) This is a multi-part message in MIME format. --------------010903030601080708020807 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 09/03/2012 02:17 AM, Andreas Schwab wrote: > But that's really part of the signal->sigaction move. OK, I looked into that, and several other places are also affected by the move. Attached is a patch to fix the issue that you found, and the other related issues that I saw. This assumes the patch I already sent in . --------------010903030601080708020807 Content-Type: text/plain; charset=UTF-8; name="syssignao.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="syssignao.txt" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIw MTItMDktMDQgMDY6NDU6NTQgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0wOS0wNCAw ODowMDoxNiArMDAwMApAQCAtMSw1ICsxLDQyIEBACiAyMDEyLTA5LTA0ICBQYXVsIEVnZ2Vy dCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KIAorCVNpbXBsaWZ5IGFuZCBhdm9pZCByYWNlcywg bm93IHRoYXQgd2UgaGF2ZSBzaWdhY3Rpb24uCisJKiBhdGltZXIuYyAodHVybl9vbl9hdGlt ZXJzKToKKwkqIGRpc3BuZXcuYyAod2luZG93X2NoYW5nZV9zaWduYWwpOgorCSogZW1hY3Mu YyAobWVtb3J5X3dhcm5pbmdfc2lnbmFsKToKKwlEb24ndCByZWVzdGFibGlzaCBzaWduYWw7 IG5vdCBuZWVkZWQgd2l0aCBzaWdhY3Rpb24uCisJKiBlbWFjcy5jIChmYXRhbF9lcnJvcl9z aWduYWwpOiBOb3cgYWx3YXlzIHN0YXRpYy4KKwkobWFpbik6IEJsb2NrIGFsbCBzaWduYWxz IHdoaWxlIGhhbmRsaW5nIGZhdGFsIGVycm9yOyB0aGF0J3Mgc2FmZXIuCisJKiBmbG9hdGZu cy5jIChET19JTl9GTE9BVCk6IE5ldyBtYWNyby4KKwkoSU5fRkxPQVQsIElOX0ZMT0FUMik6 IFVzZSBpdC4KKwkoZmxvYXRfZXJyb3IpIFtGTE9BVF9DQVRDSF9TSUdJTExdOiBSZW1vdmU7 IHVudXNlZC4KKwkoaW5pdF9mbG9hdGZucyk6IFJlbW92ZTsgbm8gbG9uZ2VyIGFueXRoaW5n IHRvIGRvLgorCUFsbCBjYWxsZXJzIHJlbW92ZWQuCisJKiBrZXlib2FyZC5jIChVU0VfU0lH SU8pOiBOZXcgbWFjcm8sIGluc3RlYWQgb2YgI3VuZGVmIFNJR0lPCisJd2hpY2ggaXMgcmlz a2llci4gIEFsbCB1c2VzIG9mICJkZWZpbmVkIFNJR0lPIiBjaGFuZ2VkLgorCShpbnB1dF9h dmFpbGFibGVfc2lnbmFsKTogRGVmaW5lIGEgc3Vic3RpdHV0ZSB3aGVuIHRoZQorCW1haW4g cm91dGluZSBpcyBub3QgYXZhaWxhYmxlLgorCShoYW5kbGVfaW50ZXJydXB0KTogTm93IHRh a2VzIGJvb2wgSU5fU0lHTkFMX0hBTkRMRVIgYXMgYXJnLiAgQWxsCisJY2FsbGVycyBjaGFu Z2VkLgorCSogbGlzcC5oIChpbml0X2Zsb2F0Zm5zKToKKwkoZmF0YWxfZXJyb3Jfc2lnbmFs KSBbRkxPQVRfQ0FUQ0hfU0lHSUxMXTogUmVtb3ZlLgorCSogcHJvY2Vzcy5jIChvbGRfc2ln cGlwZV9hY3Rpb24pOiBOZXcgc3RhdGljIHZhci4KKwkoc2VuZF9wcm9jZXNzX3RyYXApOiBE byBub3QgdW5ibG9jayBzaWduYWwgaGVyZTsgdGhhdCBsZWFkcyB0byBhIHJhY2UuCisJKHNl bmRfcHJvY2Vzcyk6IFVuYmxvY2sgaXQgaGVyZSBpbnN0ZWFkLiAgVW5ibG9jayB0aGVtIGFs bCwgc2luY2UKKwltYW55IGFyZSBibG9ja2VkIG5vdy4KKwkqIHN5c2RlcC5jICh3YWl0X2Zv cl90ZXJtaW5hdGlvbl8xKSBbKEJTRF9TWVNURU18fEhQVVgpICYmICFfX0dOVV9fXToKKwlS ZW1vdmUgY3J1ZnQgdG8gdGhhdCB3YXMgc3BlY3VsYXRlZCB0byB3b3JrIGFyb3VuZCBhIGxv bmctZGVhZCBidWcuCisJKHdhaXRfZGVidWdnaW5nKSBbIU1TRE9TXTogUmVtb3ZlIG5vdy11 bnVzZWQgdmFyaWFibGUuCisJKGVtYWNzX3NpZ2FjdGlvbl9pbml0KTogQmxvY2sgbm9uZmF0 YWwgc3lzdGVtIHNpZ25hbHMgdGhhdAorCWFyZSBjYXVnaHQgYnkgRW1hY3MsIHRvIG1ha2Ug cmFjZSBjb25kaXRpb25zIGxlc3MgbGlrZWx5LgorCU1vdmUgbXVjaCBjb2RlIHRvIGVtYWNz X3NpZ2FjdGlvbl9mbGFncywgYW5kIGNhbGwgaXQuCisJKiBzeXNzaWduYWwuaCAoZW1hY3Nf c2lnYWN0aW9uX2ZsYWdzKTogTmV3IGZ1bmN0aW9uLCBjb250YWluaW5nCisJbXVjaCBvZiB3 aGF0IHVzZWQgdG8gYmUgaW4gZW1hY3Nfc2lnYWN0aW9uX2luaXQuCisJKiB4dGVybS5jICh4 X2Nvbm5lY3Rpb25fc2lnbmFsKTogUmVtb3ZlOyBubyBsb25nZXIgbmVlZGVkCisJbm93IHRo YXQgd2UgdXNlIHNpZ2FjdGlvbi4uCisJKHhfaW5pdGlhbGl6ZSk6IE1lcmVseSBzZXQgU0lH UElQRSdzIGhhbmRsZXIgdG8gU0lHX0lHTiwKKwlzaW5jZSB0aGUgaGFuZGxlciBkaWQgbm90 aGluZy4KKwogCVNpZ25hbC1oYW5kbGVyIGNsZWFudXAgKEJ1ZyMxMjMyNykuCiAJRW1hY3Mn cyBzaWduYWwgaGFuZGxlcnMgd2VyZSB3cml0dGVuIGluIHRoZSBvbGQgNC4yQlNEIHN0eWxl IHdpdGgKIAlzaWdibG9jayBhbmQgc2lnbWFzayBhbmQgc28gZm9ydGgsIGFuZCB0aGlzIGxl ZCB0byBzb21lCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2F0aW1lci5jJwotLS0gc3JjL2F0 aW1lci5jCTIwMTItMDktMDMgMDc6MjQ6MDMgKzAwMDAKKysrIHNyYy9hdGltZXIuYwkyMDEy LTA5LTA0IDA2OjUyOjEyICswMDAwCkBAIC00MjcsMTIgKzQyNyw3IEBACiB0dXJuX29uX2F0 aW1lcnMgKGJvb2wgb24pCiB7CiAgIGlmIChvbikKLSAgICB7Ci0gICAgICBzdHJ1Y3Qgc2ln YWN0aW9uIGFjdGlvbjsKLSAgICAgIGVtYWNzX3NpZ2FjdGlvbl9pbml0ICgmYWN0aW9uLCBh bGFybV9zaWduYWxfaGFuZGxlcik7Ci0gICAgICBzaWdhY3Rpb24gKFNJR0FMUk0sICZhY3Rp b24sIDApOwotICAgICAgc2V0X2FsYXJtICgpOwotICAgIH0KKyAgICBzZXRfYWxhcm0gKCk7 CiAgIGVsc2UKICAgICBhbGFybSAoMCk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Rp c3BuZXcuYycKLS0tIHNyYy9kaXNwbmV3LmMJMjAxMi0wOS0wMyAwNzoyNDowMyArMDAwMAor Kysgc3JjL2Rpc3BuZXcuYwkyMDEyLTA5LTA0IDA2OjUyOjEyICswMDAwCkBAIC01NTUyLDE3 ICs1NTUyLDEzIEBACiAjaWZkZWYgU0lHV0lOQ0gKIAogc3RhdGljIHZvaWQKLXdpbmRvd19j aGFuZ2Vfc2lnbmFsIChpbnQgc2lnbmFsbnVtKSAvKiBJZiB3ZSBkb24ndCBoYXZlIGFuIGFy Z3VtZW50LCAqLwotICAgICAgICAgICAgICAgICAgIAkJLyogc29tZSBjb21waWxlcnMgY29t cGxhaW4gaW4gc2lnbmFsIGNhbGxzLiAgKi8KK3dpbmRvd19jaGFuZ2Vfc2lnbmFsIChpbnQg c2lnbmFsbnVtKQogewogICBpbnQgd2lkdGgsIGhlaWdodDsKICAgaW50IG9sZF9lcnJubyA9 IGVycm5vOwogCiAgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHk7CiAKLSAgc3RydWN0 IHNpZ2FjdGlvbiBhY3Rpb247Ci0gIGVtYWNzX3NpZ2FjdGlvbl9pbml0ICgmYWN0aW9uLCB3 aW5kb3dfY2hhbmdlX3NpZ25hbCk7Ci0gIHNpZ2FjdGlvbiAoU0lHV0lOQ0gsICZhY3Rpb24s IDApOwogICBpZiAoZm9yd2FyZGVkX3NpZ25hbCAoc2lnbmFsbnVtKSkKICAgICByZXR1cm47 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZW1hY3MuYycKLS0tIHNyYy9lbWFjcy5jCTIw MTItMDktMDMgMDc6MjQ6MDMgKzAwMDAKKysrIHNyYy9lbWFjcy5jCTIwMTItMDktMDQgMDc6 MjA6MTAgKzAwMDAKQEAgLTI5MCwxMCArMjkwLDcgQEAKIAogCiAvKiBIYW5kbGUgYnVzIGVy cm9ycywgaW52YWxpZCBpbnN0cnVjdGlvbiwgZXRjLiAgKi8KLSNpZm5kZWYgRkxPQVRfQ0FU Q0hfU0lHSUxMCi1zdGF0aWMKLSNlbmRpZgotdm9pZAorc3RhdGljIHZvaWQKIGZhdGFsX2Vy cm9yX3NpZ25hbCAoaW50IHNpZykKIHsKICAgc2lnc2V0X3QgdW5ibG9ja2VkOwpAQCAtMzMy LDEyICszMjksOSBAQAogI2lmZGVmIFNJR0RBTkdFUgogCiAvKiBIYW5kbGVyIGZvciBTSUdE QU5HRVIuICAqLwotdm9pZAorc3RhdGljIHZvaWQKIG1lbW9yeV93YXJuaW5nX3NpZ25hbCAo aW50IHNpZykKIHsKLSAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0gIGVtYWNzX3NpZ2Fj dGlvbl9pbml0ICgmYWN0aW9uLCBtZW1vcnlfd2FybmluZ19zaWduYWwpOwotICBzaWdhY3Rp b24gKHNpZywgJmFjdGlvbiwgMCk7CiAgIGlmIChmb3J3YXJkZWRfc2lnbmFsIChzaWcpKQog ICAgIHJldHVybjsKIApAQCAtMTExOSw3ICsxMTEzLDkgQEAKICAgICB9CiAKICAgaW5pdF9z aWduYWxzICgpOwotICBlbWFjc19zaWdhY3Rpb25faW5pdCAoJmZhdGFsX2Vycm9yX2FjdGlv biwgZmF0YWxfZXJyb3Jfc2lnbmFsKTsKKyAgc2lnZmlsbHNldCAoJmZhdGFsX2Vycm9yX2Fj dGlvbi5zYV9tYXNrKTsKKyAgZmF0YWxfZXJyb3JfYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXRh bF9lcnJvcl9zaWduYWw7CisgIGZhdGFsX2Vycm9yX2FjdGlvbi5zYV9mbGFncyA9IGVtYWNz X3NpZ2FjdGlvbl9mbGFncyAoKTsKIAogICAvKiBEb24ndCBjYXRjaCBTSUdIVVAgaWYgZHVt cGluZy4gICovCiAgIGlmICgxCkBAIC0xNTk1LDcgKzE1OTEsNiBAQAogICBpbml0X2ZyaW5n ZSAoKTsKICNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0gKi8KICAgaW5pdF9tYWNyb3Mg KCk7Ci0gIGluaXRfZmxvYXRmbnMgKCk7CiAgIGluaXRfd2luZG93ICgpOwogICBpbml0X2Zv bnQgKCk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmxvYXRmbnMuYycKLS0tIHNyYy9m bG9hdGZucy5jCTIwMTItMDktMDMgMDc6MjQ6MDMgKzAwMDAKKysrIHNyYy9mbG9hdGZucy5j CTIwMTItMDktMDQgMDc6MjY6MTYgKzAwMDAKQEAgLTM3LDkgKzM3LDYgQEAKICAgIERlZmlu ZSBGTE9BVF9DSEVDS19FUlJOTyBpZiB0aGUgZmxvYXQgbGlicmFyeSByb3V0aW5lcyBzZXQg ZXJybm8uCiAgICBUaGlzIGhhcyBubyBlZmZlY3QgaWYgSEFWRV9NQVRIRVJSIGlzIGRlZmlu ZWQuCiAKLSAgIERlZmluZSBGTE9BVF9DQVRDSF9TSUdJTEwgaWYgdGhlIGZsb2F0IGxpYnJh cnkgcm91dGluZXMgc2lnbmFsIFNJR0lMTC4KLSAgIChXaGF0IHN5c3RlbXMgYWN0dWFsbHkg ZG8gdGhpcz8gIFBsZWFzZSBsZXQgdXMga25vdy4pCi0KICAgIERlZmluZSBGTE9BVF9DSEVD S19ET01BSU4gaWYgdGhlIGZsb2F0IGxpYnJhcnkgZG9lc24ndCBoYW5kbGUgZXJyb3JzIGJ5 CiAgICBlaXRoZXIgc2V0dGluZyBlcnJubywgb3Igc2lnbmFsaW5nIFNJR0ZQRS9TSUdJTEwu ICBPdGhlcndpc2UsIGRvbWFpbiBhbmQKICAgIHJhbmdlIGNoZWNraW5nIHdpbGwgaGFwcGVu IGJlZm9yZSBjYWxsaW5nIHRoZSBmbG9hdCByb3V0aW5lcy4gIFRoaXMgaGFzCkBAIC05OCwx NCArOTUsMTUgQEAKICMgaW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZgogCi0jaWZkZWYgRkxP QVRfQ0FUQ0hfU0lHSUxMCi1zdGF0aWMgdm9pZCBmbG9hdF9lcnJvciAoKTsKLSNlbmRpZgot CisjaWZkZWYgSEFWRV9NQVRIRVJSCiAvKiBOb256ZXJvIHdoaWxlIGV4ZWN1dGluZyBpbiBm bG9hdGluZyBwb2ludC4KLSAgIFRoaXMgdGVsbHMgZmxvYXRfZXJyb3Igd2hhdCB0byBkby4g ICovCisgICBUaGlzIHRlbGxzIG1hdGhlcnIgd2hhdCB0byBkby4gICovCiAKIHN0YXRpYyBp bnQgaW5fZmxvYXQ7CisjZGVmaW5lIERPX0lOX0ZMT0FUKGQpICgodm9pZCkgKGluX2Zsb2F0 ID0gMSwgZCwgaW5fZmxvYXQgPSAwKSkKKyNlbHNlCisjZGVmaW5lIERPX0lOX0ZMT0FUKGQp ICh2b2lkKSAoZCkpCisjZW5kaWYKIAogLyogSWYgYW4gYXJndW1lbnQgaXMgb3V0IG9mIHJh bmdlIGZvciBhIG1hdGhlbWF0aWNhbCBmdW5jdGlvbiwKICAgIGhlcmUgaXMgdGhlIGFjdHVh bCBhcmd1bWVudCB2YWx1ZSB0byB1c2UgaW4gdGhlIGVycm9yIG1lc3NhZ2UuCkBAIC0xMzAs NyArMTI4LDcgQEAKICAgZG8gewkJCQkJCQlcCiAgICAgZmxvYXRfZXJyb3JfYXJnID0gbnVt OwkJCQlcCiAgICAgZmxvYXRfZXJyb3JfZm5fbmFtZSA9IG5hbWU7CQkJCVwKLSAgICBpbl9m bG9hdCA9IDE7IGVycm5vID0gMDsgKGQpOyBpbl9mbG9hdCA9IDA7CQlcCisgICAgZXJybm8g PSAwOyBET19JTl9GTE9BVCAoZCk7CQkJIAlcCiAgICAgc3dpdGNoIChlcnJubykgewkJCQkJ XAogICAgIGNhc2UgMDogYnJlYWs7CQkJCQlcCiAgICAgY2FzZSBFRE9NOgkgZG9tYWluX2Vy cm9yIChmbG9hdF9lcnJvcl9mbl9uYW1lLCBmbG9hdF9lcnJvcl9hcmcpOwlcCkBAIC0xNDMs NyArMTQxLDcgQEAKICAgICBmbG9hdF9lcnJvcl9hcmcgPSBudW07CQkJCVwKICAgICBmbG9h dF9lcnJvcl9hcmcyID0gbnVtMjsJCQkJXAogICAgIGZsb2F0X2Vycm9yX2ZuX25hbWUgPSBu YW1lOwkJCQlcCi0gICAgaW5fZmxvYXQgPSAxOyBlcnJubyA9IDA7IChkKTsgaW5fZmxvYXQg PSAwOwkJXAorICAgIGVycm5vID0gMDsgRE9fSU5fRkxPQVQgKGQpOwkJCQlcCiAgICAgc3dp dGNoIChlcnJubykgewkJCQkJXAogICAgIGNhc2UgMDogYnJlYWs7CQkJCQlcCiAgICAgY2Fz ZSBFRE9NOgkgZG9tYWluX2Vycm9yIChmbG9hdF9lcnJvcl9mbl9uYW1lLCBmbG9hdF9lcnJv cl9hcmcpOwlcCkBAIC0xNTIsOCArMTUwLDggQEAKICAgICB9CQkJCQkJCVwKICAgfSB3aGls ZSAoMCkKICNlbHNlCi0jZGVmaW5lIElOX0ZMT0FUKGQsIG5hbWUsIG51bSkgKGluX2Zsb2F0 ID0gMSwgKGQpLCBpbl9mbG9hdCA9IDApCi0jZGVmaW5lIElOX0ZMT0FUMihkLCBuYW1lLCBu dW0sIG51bTIpIChpbl9mbG9hdCA9IDEsIChkKSwgaW5fZmxvYXQgPSAwKQorI2RlZmluZSBJ Tl9GTE9BVChkLCBuYW1lLCBudW0pIERPX0lOX0ZMT0FUIChkKQorI2RlZmluZSBJTl9GTE9B VDIoZCwgbmFtZSwgbnVtLCBudW0yKSBET19JTl9GTE9BVCAoZCkKICNlbmRpZgogCiAvKiBD b252ZXJ0IGZsb2F0IHRvIExpc3BfSW50IGlmIGl0IGZpdHMsIGVsc2Ugc2lnbmFsIGEgcmFu Z2UgZXJyb3IKQEAgLTk0NiwzNiArOTQ0LDYgQEAKICAgcmV0dXJuIG1ha2VfZmxvYXQgKGQp OwogfQogDAotI2lmZGVmIEZMT0FUX0NBVENIX1NJR0lMTAotc3RhdGljIHZvaWQKLWZsb2F0 X2Vycm9yIChpbnQgc2lnbm8pCi17Ci0gIGlmICghIGluX2Zsb2F0KQotICAgIGZhdGFsX2Vy cm9yX3NpZ25hbCAoc2lnbm8pOwotCi0jaWZkZWYgQlNEX1NZU1RFTQotICBwdGhyZWFkX3Np Z21hc2sgKFNJR19TRVRNQVNLLCAmZW1wdHlfbWFzaywgMCk7Ci0jZWxzZQotICAvKiBNdXN0 IHJlZXN0YWJsaXNoIGhhbmRsZXIgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gICovCi0gIHsK LSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKLSAgICBlbWFjc19zaWdhY3Rpb25faW5p dCAoJmFjdGlvbiwgZmxvYXRfZXJyb3IpOwotICAgIHNpZ2FjdGlvbiAoU0lHSUxMLCAmYWN0 aW9uLCAwKTsKLSAgfQotI2VuZGlmIC8qIEJTRF9TWVNURU0gKi8KLQotICBpZiAoZm9yd2Fy ZGVkX3NpZ25hbCAoc2lnbm8pKQotICAgIHJldHVybjsKLSAgaW5fZmxvYXQgPSAwOwotCi0g IHhzaWduYWwxIChRYXJpdGhfZXJyb3IsIGZsb2F0X2Vycm9yX2FyZyk7Ci19Ci0KLS8qIEFu b3RoZXIgaWRlYSB3YXMgdG8gcmVwbGFjZSB0aGUgbGlicmFyeSBmdW5jdGlvbiBgaW5mbmFu JwotICAgd2hlcmUgU0lHSUxMIGlzIHNpZ25hbGVkLiAgKi8KLQotI2VuZGlmIC8qIEZMT0FU X0NBVENIX1NJR0lMTCAqLwotCiAjaWZkZWYgSEFWRV9NQVRIRVJSCiBpbnQKIG1hdGhlcnIg KHN0cnVjdCBleGNlcHRpb24gKngpCkBAIC0xMDA4LDE3ICs5NzYsNiBAQAogI2VuZGlmIC8q IEhBVkVfTUFUSEVSUiAqLwogCiB2b2lkCi1pbml0X2Zsb2F0Zm5zICh2b2lkKQotewotI2lm ZGVmIEZMT0FUX0NBVENIX1NJR0lMTAotICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKLSAg ZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24sIGZsb2F0X2Vycm9yKTsKLSAgc2lnYWN0 aW9uIChTSUdJTEwsICZhY3Rpb24sIDApOwotI2VuZGlmCi0gIGluX2Zsb2F0ID0gMDsKLX0K LQotdm9pZAogc3ltc19vZl9mbG9hdGZucyAodm9pZCkKIHsKICAgZGVmc3ViciAoJlNhY29z KTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMva2V5Ym9hcmQuYycKLS0tIHNyYy9rZXlib2Fy ZC5jCTIwMTItMDktMDMgMDc6MjQ6MDMgKzAwMDAKKysrIHNyYy9rZXlib2FyZC5jCTIwMTIt MDktMDQgMDc6MTg6MTUgKzAwMDAKQEAgLTM5MSwxMSArMzkxLDE0IEBACiAjZW5kaWYKIAog LyogV2UgYXJlIHVuYWJsZSB0byB1c2UgaW50ZXJydXB0cyBpZiBGSU9OUkVBRCBpcyBub3Qg YXZhaWxhYmxlLAotICAgc28gZmx1c2ggU0lHSU8gc28gd2Ugd29uJ3QgdHJ5LiAgKi8KLSNp ZiAhZGVmaW5lZCAoRklPTlJFQUQpCi0jaWZkZWYgU0lHSU8KLSN1bmRlZiBTSUdJTworICAg c28gd2Ugd29uJ3QgdHJ5LiAgKi8KKyNpZiBkZWZpbmVkIFNJR0lPICYmIGRlZmluZWQgRklP TlJFQUQKKyMgZGVmaW5lIFVTRV9TSUdJTyAxCisjZWxzZQorIyBkZWZpbmUgVVNFX1NJR0lP IDAKICNlbmRpZgorI2lmbmRlZiBTSUdJTworIyBkZWZpbmUgU0lHSU8gMCAvKiBwbGFjZWhv bGRlciAqLwogI2VuZGlmCiAKIC8qIElmIHdlIHN1cHBvcnQgYSB3aW5kb3cgc3lzdGVtLCB0 dXJuIG9uIHRoZSBjb2RlIHRvIHBvbGwgcGVyaW9kaWNhbGx5CkBAIC00NDksMTAgKzQ1Miwx MiBAQAogc3RhdGljIHZvaWQgY2xlYXJfZXZlbnQgKHN0cnVjdCBpbnB1dF9ldmVudCAqKTsK IHN0YXRpYyBMaXNwX09iamVjdCByZXN0b3JlX2tib2FyZF9jb25maWd1cmF0aW9uIChMaXNw X09iamVjdCk7CiBzdGF0aWMgdm9pZCBpbnRlcnJ1cHRfc2lnbmFsIChpbnQgc2lnbmFsbnVt KTsKLSNpZmRlZiBTSUdJTworI2lmIFVTRV9TSUdJTwogc3RhdGljIHZvaWQgaW5wdXRfYXZh aWxhYmxlX3NpZ25hbCAoaW50IHNpZ25vKTsKKyNlbHNlCisjIGRlZmluZSBpbnB1dF9hdmFp bGFibGVfc2lnbmFsIDAgLyogcGxhY2Vob2xkZXIgKi8KICNlbmRpZgotc3RhdGljIHZvaWQg aGFuZGxlX2ludGVycnVwdCAodm9pZCk7CitzdGF0aWMgdm9pZCBoYW5kbGVfaW50ZXJydXB0 IChib29sKTsKIHN0YXRpYyBfTm9yZXR1cm4gdm9pZCBxdWl0X3Rocm93X3RvX3JlYWRfY2hh ciAoaW50KTsKIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc3BlY2lhbF9ldmVudHMgKHZvaWQpOwog c3RhdGljIHZvaWQgdGltZXJfc3RhcnRfaWRsZSAodm9pZCk7CkBAIC0zNjIyLDcgKzM2Mjcs OCBAQAogCSAgfQogCiAJICBsYXN0X2V2ZW50X3RpbWVzdGFtcCA9IGV2ZW50LT50aW1lc3Rh bXA7Ci0JICBoYW5kbGVfaW50ZXJydXB0ICgpOworCisJICBoYW5kbGVfaW50ZXJydXB0ICgw KTsKIAkgIHJldHVybjsKIAl9CiAKQEAgLTM2NTgsMTAgKzM2NjQsOCBAQAogICAgICAgICAg IC8qIERvbid0IHJlYWQga2V5Ym9hcmQgaW5wdXQgdW50aWwgd2UgaGF2ZSBwcm9jZXNzZWQg a2JkX2J1ZmZlci4KICAgICAgICAgICAgICBUaGlzIGhhcHBlbnMgd2hlbiBwYXN0aW5nIHRl eHQgbG9uZ2VyIHRoYW4gS0JEX0JVRkZFUl9TSVpFLzIuICAqLwogICAgICAgICAgIGhvbGRf a2V5Ym9hcmRfaW5wdXQgKCk7Ci0jaWZkZWYgU0lHSU8KLSAgICAgICAgICBpZiAoIW5vbmlu dGVyYWN0aXZlKQorICAgICAgICAgIGlmIChVU0VfU0lHSU8gJiYgIW5vbmludGVyYWN0aXZl KQogICAgICAgICAgICAgc2lnbmFsIChTSUdJTywgU0lHX0lHTik7Ci0jZW5kaWYKICAgICAg ICAgICBzdG9wX3BvbGxpbmcgKCk7CiAgICAgICAgIH0KICNlbmRpZgkvKiBzdWJwcm9jZXNz ZXMgKi8KQEAgLTM4MzAsMTQgKzM4MzQsMTIgQEAKICAgICAgIC8qIFN0YXJ0IHJlYWRpbmcg aW5wdXQgYWdhaW4sIHdlIGhhdmUgcHJvY2Vzc2VkIGVub3VnaCBzbyB3ZSBjYW4KICAgICAg ICAgIGFjY2VwdCBuZXcgZXZlbnRzIGFnYWluLiAgKi8KICAgICAgIHVuaG9sZF9rZXlib2Fy ZF9pbnB1dCAoKTsKLSNpZmRlZiBTSUdJTwotICAgICAgaWYgKCFub25pbnRlcmFjdGl2ZSkK KyAgICAgIGlmIChVU0VfU0lHSU8gJiYgIW5vbmludGVyYWN0aXZlKQogCXsKIAkgIHN0cnVj dCBzaWdhY3Rpb24gYWN0aW9uOwogCSAgZW1hY3Nfc2lnYWN0aW9uX2luaXQgKCZhY3Rpb24s IGlucHV0X2F2YWlsYWJsZV9zaWduYWwpOwogCSAgc2lnYWN0aW9uIChTSUdJTywgJmFjdGlv biwgMCk7CiAJfQotI2VuZGlmIC8qIFNJR0lPICovCiAgICAgICBzdGFydF9wb2xsaW5nICgp OwogICAgIH0KICNlbmRpZgkvKiBzdWJwcm9jZXNzZXMgKi8KQEAgLTM4NzksMTAgKzM4ODEs OCBAQAogICAgICAgLyogT25lIHdheSBvciBhbm90aGVyLCB3YWl0IHVudGlsIGlucHV0IGlz IGF2YWlsYWJsZTsgdGhlbiwgaWYKIAkgaW50ZXJydXB0IGhhbmRsZXJzIGhhdmUgbm90IHJl YWQgaXQsIHJlYWQgaXQgbm93LiAgKi8KIAotLyogTm90ZSBTSUdJTyBoYXMgYmVlbiB1bmRl ZidkIGlmIEZJT05SRUFEIGlzIG1pc3NpbmcuICAqLwotI2lmZGVmIFNJR0lPCi0gICAgICBn b2JibGVfaW5wdXQgKDApOwotI2VuZGlmIC8qIFNJR0lPICovCisgICAgICBpZiAoVVNFX1NJ R0lPKQorCWdvYmJsZV9pbnB1dCAoMCk7CiAgICAgICBpZiAoa2JkX2ZldGNoX3B0ciAhPSBr YmRfc3RvcmVfcHRyKQogCWJyZWFrOwogI2lmIGRlZmluZWQgKEhBVkVfTU9VU0UpIHx8IGRl ZmluZWQgKEhBVkVfR1BNKQpAQCAtNjc4MSw4ICs2NzgxLDcgQEAKIHZvaWQKIGdvYmJsZV9p bnB1dCAoaW50IGV4cGVjdGVkKQogewotI2lmZGVmIFNJR0lPCi0gIGlmIChpbnRlcnJ1cHRf aW5wdXQpCisgIGlmIChVU0VfU0lHSU8gJiYgaW50ZXJydXB0X2lucHV0KQogICAgIHsKICAg ICAgIHNpZ3NldF90IGJsb2NrZWQsIHByb2NtYXNrOwogICAgICAgc2lnZW1wdHlzZXQgKCZi bG9ja2VkKTsKQEAgLTY4MDcsNyArNjgwNiw2IEBACiAgICAgfQogICBlbHNlCiAjZW5kaWYK LSNlbmRpZgogICAgIHJlYWRfYXZhaWxfaW5wdXQgKGV4cGVjdGVkKTsKIH0KIApAQCAtNjgz Niw4ICs2ODM0LDcgQEAKICAgICByZXR1cm47CiAKICAgLyogTWFrZSBzdXJlIG5vIGludGVy cnVwdCBoYXBwZW5zIHdoaWxlIHN0b3JpbmcgdGhlIGV2ZW50LiAgKi8KLSNpZmRlZiBTSUdJ TwotICBpZiAoaW50ZXJydXB0X2lucHV0KQorICBpZiAoVVNFX1NJR0lPICYmIGludGVycnVw dF9pbnB1dCkKICAgICB7CiAgICAgICBzaWdzZXRfdCBibG9ja2VkLCBwcm9jbWFzazsKICAg ICAgIHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7CkBAIC02ODQ3LDcgKzY4NDQsNiBAQAogICAg ICAgcHRocmVhZF9zaWdtYXNrIChTSUdfU0VUTUFTSywgJnByb2NtYXNrLCAwKTsKICAgICB9 CiAgIGVsc2UKLSNlbmRpZgogICAgIHsKICAgICAgIHN0b3BfcG9sbGluZyAoKTsKICAgICAg IGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZldmVudCk7CkBAIC03MjAyLDcgKzcxOTgsNyBA QAogICByZXR1cm4gbnJlYWQ7CiB9CiAMCi0jaWYgZGVmaW5lZCBTWU5DX0lOUFVUIHx8IGRl ZmluZWQgU0lHSU8KKyNpZiBkZWZpbmVkIFNZTkNfSU5QVVQgfHwgVVNFX1NJR0lPCiBzdGF0 aWMgdm9pZAogaGFuZGxlX2FzeW5jX2lucHV0ICh2b2lkKQogewpAQCAtNzIyOSw3ICs3MjI1 LDcgQEAKICAgLS1oYW5kbGluZ19zaWduYWw7CiAjZW5kaWYKIH0KLSNlbmRpZiAvKiBTWU5D X0lOUFVUIHx8IFNJR0lPICovCisjZW5kaWYKIAogI2lmZGVmIFNZTkNfSU5QVVQKIHZvaWQK QEAgLTcyNDEsOSArNzIzNyw3IEBACiB9CiAjZW5kaWYKIAotI2lmZGVmIFNJR0lPICAgLyog Zm9yIGVudGlyZSBwYWdlICovCi0vKiBOb3RlIFNJR0lPIGhhcyBiZWVuIHVuZGVmJ2QgaWYg RklPTlJFQUQgaXMgbWlzc2luZy4gICovCi0KKyNpZiBVU0VfU0lHSU8KIHN0YXRpYyB2b2lk CiBpbnB1dF9hdmFpbGFibGVfc2lnbmFsIChpbnQgc2lnbm8pCiB7CkBAIC03MjY2LDcgKzcy NjAsNyBAQAogCiAgIGVycm5vID0gb2xkX2Vycm5vOwogfQotI2VuZGlmIC8qIFNJR0lPICov CisjZW5kaWYKIAogLyogU2VuZCBvdXJzZWx2ZXMgYSBTSUdJTy4KIApAQCAtNzI3Nyw5ICs3 MjcxLDggQEAKIHZvaWQKIHJlaW52b2tlX2lucHV0X3NpZ25hbCAodm9pZCkKIHsKLSNpZmRl ZiBTSUdJTwotICBoYW5kbGVfYXN5bmNfaW5wdXQgKCk7Ci0jZW5kaWYKKyAgaWYgKFVTRV9T SUdJTykKKyAgICBoYW5kbGVfYXN5bmNfaW5wdXQgKCk7CiB9CiAKIApAQCAtNzM1NSwxMSAr NzM0OCw5IEBACiAgICAgICAgICAgfQogCiAJcC0+bnBlbmRpbmcrKzsKLSNpZmRlZiBTSUdJ TwotCWlmIChpbnRlcnJ1cHRfaW5wdXQpCisJaWYgKFVTRV9TSUdJTyAmJiBpbnRlcnJ1cHRf aW5wdXQpCiAJICBraWxsIChnZXRwaWQgKCksIFNJR0lPKTsKIAllbHNlCi0jZW5kaWYKIAkg IHsKIAkgICAgLyogVGVsbCB3YWl0X3JlYWRpbmdfcHJvY2Vzc19vdXRwdXQgdGhhdCBpdCBu ZWVkcyB0byB3YWtlCiAJICAgICAgIHVwIGFuZCBsb29rIGFyb3VuZC4gICovCkBAIC0xMDgy Myw3ICsxMDgxNCw3IEBACiAgICAgICAgICBmcm9tIHRoZSBjb250cm9sbGluZyB0dHkuICAq LwogICAgICAgaW50ZXJuYWxfbGFzdF9ldmVudF9mcmFtZSA9IHRlcm1pbmFsLT5kaXNwbGF5 X2luZm8udHR5LT50b3BfZnJhbWU7CiAKLSAgICAgIGhhbmRsZV9pbnRlcnJ1cHQgKCk7Cisg ICAgICBoYW5kbGVfaW50ZXJydXB0ICgxKTsKICAgICB9CiAKICAgZXJybm8gPSBvbGRfZXJy bm87CkBAIC0xMDg0Niw3ICsxMDgzNyw3IEBACiAgICBub24tbmlsLCBpdCBzdG9wcyB0aGUg am9iIHJpZ2h0IGF3YXkuICAqLwogCiBzdGF0aWMgdm9pZAotaGFuZGxlX2ludGVycnVwdCAo dm9pZCkKK2hhbmRsZV9pbnRlcnJ1cHQgKGJvb2wgaW5fc2lnbmFsX2hhbmRsZXIpCiB7CiAg IGNoYXIgYzsKIApAQCAtMTA4NTUsMTMgKzEwODQ2LDE2IEBACiAgIC8qIFhYWCBUaGlzIGNv ZGUgbmVlZHMgdG8gYmUgcmV2aXNlZCBmb3IgbXVsdGktdHR5IHN1cHBvcnQuICAqLwogICBp ZiAoIU5JTFAgKFZxdWl0X2ZsYWcpICYmIGdldF9uYW1lZF90dHkgKCIvZGV2L3R0eSIpKQog ICAgIHsKLSAgICAgIC8qIElmIFNJR0lOVCBpc24ndCBibG9ja2VkLCBkb24ndCBsZXQgdXMg YmUgaW50ZXJydXB0ZWQgYnkKLQkgYW5vdGhlciBTSUdJTlQsIGl0IG1pZ2h0IGJlIGhhcm1m dWwgZHVlIHRvIG5vbi1yZWVudHJhbmN5Ci0JIGluIEkvTyBmdW5jdGlvbnMuICAqLwotICAg ICAgc2lnc2V0X3QgYmxvY2tlZDsKLSAgICAgIHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7Ci0g ICAgICBzaWdhZGRzZXQgKCZibG9ja2VkLCBTSUdJTlQpOwotICAgICAgcHRocmVhZF9zaWdt YXNrIChTSUdfQkxPQ0ssICZibG9ja2VkLCAwKTsKKyAgICAgIGlmICghIGluX3NpZ25hbF9o YW5kbGVyKQorCXsKKwkgIC8qIElmIFNJR0lOVCBpc24ndCBibG9ja2VkLCBkb24ndCBsZXQg dXMgYmUgaW50ZXJydXB0ZWQgYnkKKwkgICAgIGEgU0lHSU5ULiAgSXQgbWlnaHQgYmUgaGFy bWZ1bCBkdWUgdG8gbm9uLXJlZW50cmFuY3kKKwkgICAgIGluIEkvTyBmdW5jdGlvbnMuICAq LworCSAgc2lnc2V0X3QgYmxvY2tlZDsKKwkgIHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7CisJ ICBzaWdhZGRzZXQgKCZibG9ja2VkLCBTSUdJTlQpOworCSAgcHRocmVhZF9zaWdtYXNrIChT SUdfQkxPQ0ssICZibG9ja2VkLCAwKTsKKwl9CiAKICAgICAgIGZmbHVzaCAoc3Rkb3V0KTsK ICAgICAgIHJlc2V0X2FsbF9zeXNfbW9kZXMgKCk7CkBAIC0xMTAyNSw4ICsxMTAxOSw3IEBA CiAgIChMaXNwX09iamVjdCBpbnRlcnJ1cHQpCiB7CiAgIGludCBuZXdfaW50ZXJydXB0X2lu cHV0OwotI2lmZGVmIFNJR0lPCi0vKiBOb3RlIFNJR0lPIGhhcyBiZWVuIHVuZGVmJ2QgaWYg RklPTlJFQUQgaXMgbWlzc2luZy4gICovCisjaWYgVVNFX1NJR0lPCiAjaWZkZWYgSEFWRV9Y X1dJTkRPV1MKICAgaWYgKHhfZGlzcGxheV9saXN0ICE9IE5VTEwpCiAgICAgewpAQCAtMTEw MzcsOSArMTEwMzAsOSBAQAogICBlbHNlCiAjZW5kaWYgLyogSEFWRV9YX1dJTkRPV1MgKi8K ICAgICBuZXdfaW50ZXJydXB0X2lucHV0ID0gIU5JTFAgKGludGVycnVwdCk7Ci0jZWxzZSAv KiBub3QgU0lHSU8gKi8KKyNlbHNlCiAgIG5ld19pbnRlcnJ1cHRfaW5wdXQgPSAwOwotI2Vu ZGlmIC8qIG5vdCBTSUdJTyAqLworI2VuZGlmCiAKICAgaWYgKG5ld19pbnRlcnJ1cHRfaW5w dXQgIT0gaW50ZXJydXB0X2lucHV0KQogICAgIHsKQEAgLTExNDM0LDE1ICsxMTQyNywxMiBA QAogICAgICAgc2lnYWN0aW9uIChTSUdRVUlULCAmYWN0aW9uLCAwKTsKICNlbmRpZiAvKiBu b3QgRE9TX05UICovCiAgICAgfQotLyogTm90ZSBTSUdJTyBoYXMgYmVlbiB1bmRlZidkIGlm IEZJT05SRUFEIGlzIG1pc3NpbmcuICAqLwotI2lmZGVmIFNJR0lPCi0gIGlmICghbm9uaW50 ZXJhY3RpdmUpCisgIGlmIChVU0VfU0lHSU8gJiYgIW5vbmludGVyYWN0aXZlKQogICAgIHsK ICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwogICAgICAgZW1hY3Nfc2lnYWN0aW9u X2luaXQgKCZhY3Rpb24sIGlucHV0X2F2YWlsYWJsZV9zaWduYWwpOwogICAgICAgc2lnYWN0 aW9uIChTSUdJTywgJmFjdGlvbiwgMCk7CiAgICAgfQotI2VuZGlmIC8qIFNJR0lPICovCiAK IC8qIFVzZSBpbnRlcnJ1cHQgaW5wdXQgYnkgZGVmYXVsdCwgaWYgaXQgd29ya3MgYW5kIG5v bmludGVycnVwdCBpbnB1dAogICAgaGFzIGRlZmljaWVuY2llcy4gICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2xpc3AuaCcKLS0tIHNyYy9saXNwLmgJMjAxMi0wOS0wMiAxNzoxMDoz NSArMDAwMAorKysgc3JjL2xpc3AuaAkyMDEyLTA5LTA0IDA3OjIwOjE2ICswMDAwCkBAIC0y Njk1LDcgKzI2OTUsNiBAQAogCiAvKiBEZWZpbmVkIGluIGZsb2F0Zm5zLmMgKi8KIGV4dGVy biBkb3VibGUgZXh0cmFjdF9mbG9hdCAoTGlzcF9PYmplY3QpOwotZXh0ZXJuIHZvaWQgaW5p dF9mbG9hdGZucyAodm9pZCk7CiBleHRlcm4gdm9pZCBzeW1zX29mX2Zsb2F0Zm5zICh2b2lk KTsKIGV4dGVybiBMaXNwX09iamVjdCBmbW9kX2Zsb2F0IChMaXNwX09iamVjdCB4LCBMaXNw X09iamVjdCB5KTsKIApAQCAtMzI2Myw5ICszMjYyLDYgQEAKIGV4dGVybiBMaXNwX09iamVj dCBkZWNvZGVfZW52X3BhdGggKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIGV4dGVy biBMaXNwX09iamVjdCBlbXB0eV91bmlieXRlX3N0cmluZywgZW1wdHlfbXVsdGlieXRlX3N0 cmluZzsKIGV4dGVybiBMaXNwX09iamVjdCBRZmlsZV9uYW1lX2hhbmRsZXJfYWxpc3Q7Ci0j aWZkZWYgRkxPQVRfQ0FUQ0hfU0lHSUxMCi1leHRlcm4gdm9pZCBmYXRhbF9lcnJvcl9zaWdu YWwgKGludCk7Ci0jZW5kaWYKIGV4dGVybiBMaXNwX09iamVjdCBRa2lsbF9lbWFjczsKICNp ZiBIQVZFX1NFVExPQ0FMRQogdm9pZCBmaXh1cF9sb2NhbGUgKHZvaWQpOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9wcm9jZXNzLmMnCi0tLSBzcmMvcHJvY2Vzcy5jCTIwMTItMDktMDQg MDY6NDU6NTQgKzAwMDAKKysrIHNyYy9wcm9jZXNzLmMJMjAxMi0wOS0wNCAwNjo1Mjo0NiAr MDAwMApAQCAtNTQxMiw2ICs1NDEyLDcgQEAKIC8qIFNlbmRpbmcgZGF0YSB0byBzdWJwcm9j ZXNzICovCiAKIHN0YXRpYyBqbXBfYnVmIHNlbmRfcHJvY2Vzc19mcmFtZTsKK3N0cnVjdCBz aWdhY3Rpb24gb2xkX3NpZ3BpcGVfYWN0aW9uOwogc3RhdGljIExpc3BfT2JqZWN0IHByb2Nl c3Nfc2VudF90bzsKIAogI2lmbmRlZiBGT1JXQVJEX1NJR05BTF9UT19NQUlOX1RIUkVBRApA QCAtNTQyMSwxMiArNTQyMiw4IEBACiBzdGF0aWMgdm9pZAogc2VuZF9wcm9jZXNzX3RyYXAg KGludCBpZ25vcmUpCiB7Ci0gIHNpZ3NldF90IHVuYmxvY2tlZDsKICAgaWYgKGZvcndhcmRl ZF9zaWduYWwgKFNJR1BJUEUpKQogICAgIHJldHVybjsKLSAgc2lnZW1wdHlzZXQgKCZ1bmJs b2NrZWQpOwotICBzaWdhZGRzZXQgKCZ1bmJsb2NrZWQsIFNJR1BJUEUpOwotICBwdGhyZWFk X3NpZ21hc2sgKFNJR19VTkJMT0NLLCAmdW5ibG9ja2VkLCAwKTsKICAgX2xvbmdqbXAgKHNl bmRfcHJvY2Vzc19mcmFtZSwgMSk7CiB9CiAKQEAgLTU1MjAsNyArNTUxNyw2IEBACiAgIHN0 cnVjdCBMaXNwX1Byb2Nlc3MgKnAgPSBYUFJPQ0VTUyAocHJvYyk7CiAgIHNzaXplX3QgcnY7 CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7Ci0gIHN0cnVjdCBzaWdhY3Rpb24g b2xkX3NpZ3BpcGVfYWN0aW9uOwogCiAgIGlmIChwLT5yYXdfc3RhdHVzX25ldykKICAgICB1 cGRhdGVfc3RhdHVzIChwKTsKQEAgLTU3NTcsNyArNTc1Myw3IEBACiAgICAgfQogICBlbHNl CiAgICAgewotICAgICAgc2lnYWN0aW9uIChTSUdQSVBFLCAmb2xkX3NpZ3BpcGVfYWN0aW9u LCAwKTsKKyAgICAgIHB0aHJlYWRfc2lnbWFzayAoU0lHX1NFVE1BU0ssICZlbXB0eV9tYXNr LCAwKTsKICAgICAgIHByb2MgPSBwcm9jZXNzX3NlbnRfdG87CiAgICAgICBwID0gWFBST0NF U1MgKHByb2MpOwogICAgICAgcC0+cmF3X3N0YXR1c19uZXcgPSAwOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNyYy9zeXNkZXAuYwkyMDEyLTA5LTAzIDA3OjM4 OjM4ICswMDAwCisrKyBzcmMvc3lzZGVwLmMJMjAxMi0wOS0wNCAwNzo1NTozMyArMDAwMApA QCAtMjgzLDEwICsyODMsNiBAQAogCiAMCiAKLS8qIFNldCBub256ZXJvIHRvIG1ha2UgZm9s bG93aW5nIGZ1bmN0aW9uIHdvcmsgdW5kZXIgZGJ4Ci0gICAoYXQgbGVhc3QgZm9yIGJzZCku ICAqLwotaW50IHdhaXRfZGVidWdnaW5nIEVYVEVSTkFMTFlfVklTSUJMRTsKLQogI2lmbmRl ZiBNU0RPUwogCiBzdGF0aWMgdm9pZApAQCAtMjk0LDMwICsyOTAsNiBAQAogewogICB3aGls ZSAoMSkKICAgICB7Ci0jaWYgKGRlZmluZWQgKEJTRF9TWVNURU0pIHx8IGRlZmluZWQgKEhQ VVgpKSAmJiAhZGVmaW5lZCAoX19HTlVfXykKLSAgICAgIC8qIE5vdGUgdGhhdCBraWxsIHJl dHVybnMgLTEgZXZlbiBpZiB0aGUgcHJvY2VzcyBpcyBqdXN0IGEgem9tYmllIG5vdy4KLQkg QnV0IGluZXZpdGFibHkgYSBTSUdDSExEIGludGVycnVwdCBzaG91bGQgYmUgZ2VuZXJhdGVk Ci0JIGFuZCBjaGlsZF9zaWcgd2lsbCBkbyB3YWl0cGlkIGFuZCBtYWtlIHRoZSBwcm9jZXNz IGdvIGF3YXkuICAqLwotICAgICAgLyogVGhlcmUgaXMgc29tZSBpbmRpY2F0aW9uIHRoYXQg dGhlcmUgaXMgYSBidWcgaW52b2x2ZWQgd2l0aAotCSB0ZXJtaW5hdGlvbiBvZiBzdWJwcm9j ZXNzZXMsIHBlcmhhcHMgaW52b2x2aW5nIGEga2VybmVsIGJ1ZyB0b28sCi0JIGJ1dCBubyBp ZGVhIHdoYXQgaXQgaXMuICBKdXN0IGFzIGEgaHVuY2ggd2Ugc2lnbmFsIFNJR0NITEQgdG8g c2VlCi0JIGlmIHRoYXQgY2F1c2VzIHRoZSBwcm9ibGVtIHRvIGdvIGF3YXkgb3IgZ2V0IHdv cnNlLiAgKi8KLSAgICAgIHNpZ3NldF90IHNpZ2NoaWxkX21hc2s7Ci0gICAgICBzaWdlbXB0 eXNldCAoJnNpZ2NoaWxkX21hc2spOwotICAgICAgc2lnYWRkc2V0ICgmc2lnY2hpbGRfbWFz aywgU0lHQ0hMRCk7Ci0gICAgICBwdGhyZWFkX3NpZ21hc2sgKFNJR19TRVRNQVNLLCAmc2ln Y2hpbGRfbWFzaywgMCk7Ci0KLSAgICAgIGlmICgwID4ga2lsbCAocGlkLCAwKSkKLQl7Ci0J ICBwdGhyZWFkX3NpZ21hc2sgKFNJR19TRVRNQVNLLCAmZW1wdHlfbWFzaywgMCk7Ci0JICBr aWxsIChnZXRwaWQgKCksIFNJR0NITEQpOwotCSAgYnJlYWs7Ci0JfQotICAgICAgaWYgKHdh aXRfZGVidWdnaW5nKQotCXNsZWVwICgxKTsKLSAgICAgIGVsc2UKLQlzaWdzdXNwZW5kICgm ZW1wdHlfbWFzayk7Ci0jZWxzZSAvKiBub3QgQlNEX1NZU1RFTSwgYW5kIG5vdCBIUFVYIHZl cnNpb24gPj0gNiAqLwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAgd2FpdCAoMCk7CiAgICAg ICBicmVhazsKQEAgLTMzNSw3ICszMDcsNiBAQAogCiAgICAgICBzaWdzdXNwZW5kICgmZW1w dHlfbWFzayk7CiAjZW5kaWYgLyogbm90IFdJTkRPV1NOVCAqLwotI2VuZGlmIC8qIG5vdCBC U0RfU1lTVEVNLCBhbmQgbm90IEhQVVggdmVyc2lvbiA+PSA2ICovCiAgICAgICBpZiAoaW50 ZXJydXB0aWJsZSkKIAlRVUlUOwogICAgIH0KQEAgLTE0OTQsMjYgKzE0NjUsMzIgQEAKIGVt YWNzX3NpZ2FjdGlvbl9pbml0IChzdHJ1Y3Qgc2lnYWN0aW9uICphY3Rpb24sIHNpZ25hbF9o YW5kbGVyX3QgaGFuZGxlcikKIHsKICAgc2lnZW1wdHlzZXQgKCZhY3Rpb24tPnNhX21hc2sp OworCisgIC8qIFdoZW4gaGFuZGxpbmcgYSBzaWduYWwsIGJsb2NrIG5vbmZhdGFsIHN5c3Rl bSBzaWduYWxzIHRoYXQgYXJlIGNhdWdodAorICAgICBieSBFbWFjcy4gIFRoaXMgbWFrZXMg cmFjZSBjb25kaXRpb25zIGxlc3MgbGlrZWx5LiAgKi8KKyAgc2lnYWRkc2V0ICgmYWN0aW9u LT5zYV9tYXNrLCBTSUdBTFJNKTsKKyNpZmRlZiBTSUdDSExECisgIHNpZ2FkZHNldCAoJmFj dGlvbi0+c2FfbWFzaywgU0lHQ0hMRCk7CisjZW5kaWYKKyNpZmRlZiBTSUdEQU5HRVIKKyAg c2lnYWRkc2V0ICgmYWN0aW9uLT5zYV9tYXNrLCBTSUdEQU5HRVIpOworI2VuZGlmCisgIHNp Z2FkZHNldCAoJmFjdGlvbi0+c2FfbWFzaywgU0lHRlBFKTsKKyAgc2lnYWRkc2V0ICgmYWN0 aW9uLT5zYV9tYXNrLCBTSUdQSVBFKTsKKyNpZmRlZiBTSUdXSU5DSAorICBzaWdhZGRzZXQg KCZhY3Rpb24tPnNhX21hc2ssIFNJR1dJTkNIKTsKKyNlbmRpZgorICBpZiAoISBub25pbnRl cmFjdGl2ZSkKKyAgICB7CisgICAgICBzaWdhZGRzZXQgKCZhY3Rpb24tPnNhX21hc2ssIFNJ R0lOVCk7CisgICAgICBzaWdhZGRzZXQgKCZhY3Rpb24tPnNhX21hc2ssIFNJR1FVSVQpOwor I2lmZGVmIFNJR0lPCisgICAgICBzaWdhZGRzZXQgKCZhY3Rpb24tPnNhX21hc2ssIFNJR0lP KTsKKyNlbmRpZgorICAgIH0KKwogICBhY3Rpb24tPnNhX2hhbmRsZXIgPSBoYW5kbGVyOwot ICBhY3Rpb24tPnNhX2ZsYWdzID0gMDsKLSNpZiBkZWZpbmVkIChTQV9SRVNUQVJUKQotICAv KiBFbWFjcyBtb3N0bHkgd29ya3MgYmV0dGVyIHdpdGggcmVzdGFydGFibGUgc3lzdGVtIHNl cnZpY2VzLiBJZiB0aGlzCi0gICAgIGZsYWcgZXhpc3RzLCB3ZSBwcm9iYWJseSB3YW50IHRv IHR1cm4gaXQgb24gaGVyZS4KLSAgICAgSG93ZXZlciwgb24gc29tZSBzeXN0ZW1zIChvbmx5 IGhwdXgxMSBhdCBwcmVzZW50KSB0aGlzIHJlc2V0cyB0aGUKLSAgICAgdGltZW91dCBvZiBg c2VsZWN0JyB3aGljaCBtZWFucyB0aGF0IGBzZWxlY3QnIG5ldmVyIGZpbmlzaGVzIGlmCi0g ICAgIGl0IGtlZXBzIGdldHRpbmcgc2lnbmFscy4KLSAgICAgV2UgZGVmaW5lIEJST0tFTl9T QV9SRVNUQVJUIG9uIHRob3NlIHN5c3RlbXMuICAqLwotICAvKiBJdCdzIG5vdCBjbGVhciB3 aHkgdGhlIGNvbW1lbnQgYWJvdmUgc2F5cyAibW9zdGx5IHdvcmtzIGJldHRlciIuICAtLVN0 ZWYKLSAgICAgV2hlbiBTWU5DX0lOUFVUIGlzIHNldCwgd2UgZG9uJ3Qgd2FudCBTQV9SRVNU QVJUIGJlY2F1c2Ugd2UgbmVlZCB0byBwb2xsCi0gICAgIGZvciBwZW5kaW5nIGlucHV0IHNv IHdlIG5lZWQgbG9uZy1ydW5uaW5nIHN5c2NhbGxzIHRvIGJlIGludGVycnVwdGVkCi0gICAg IGFmdGVyIGEgc2lnbmFsIHRoYXQgc2V0cyB0aGUgaW50ZXJydXB0X2lucHV0X3BlbmRpbmcg ZmxhZy4gICovCi0gIC8qIE5vbi1pbnRlcmFjdGl2ZSBrZXlib2FyZCBpbnB1dCBnb2VzIHRo cm91Z2ggc3RkaW8sIHdoZXJlIHdlIGFsd2F5cwotICAgICB3YW50IHJlc3RhcnRhYmxlIHN5 c3RlbSBjYWxscy4gICovCi0jIGlmIGRlZmluZWQgKEJST0tFTl9TQV9SRVNUQVJUKSB8fCBk ZWZpbmVkIChTWU5DX0lOUFVUKQotICBpZiAobm9uaW50ZXJhY3RpdmUpCi0jIGVuZGlmCi0g ICAgYWN0aW9uLT5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7Ci0jZW5kaWYKKyAgYWN0aW9uLT5z YV9mbGFncyA9IGVtYWNzX3NpZ2FjdGlvbl9mbGFncyAoKTsKIH0KIAogI2lmZGVmIEZPUldB UkRfU0lHTkFMX1RPX01BSU5fVEhSRUFECgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3N5c3Np Z25hbC5oJwotLS0gc3JjL3N5c3NpZ25hbC5oCTIwMTItMDktMDMgMDc6Mzg6MzggKzAwMDAK KysrIHNyYy9zeXNzaWduYWwuaAkyMDEyLTA5LTA0IDA2OjUyOjEyICswMDAwCkBAIC00MCw2 ICs0MCwzMyBAQAogCiBleHRlcm4gdm9pZCBlbWFjc19zaWdhY3Rpb25faW5pdCAoc3RydWN0 IHNpZ2FjdGlvbiAqLCBzaWduYWxfaGFuZGxlcl90KTsKIAorU1lTU0lHTkFMX0lOTElORSBp bnQKK2VtYWNzX3NpZ2FjdGlvbl9mbGFncyAodm9pZCkKK3sKKyNpZmRlZiBTQV9SRVNUQVJU CisgIC8qIEVtYWNzIG1vc3RseSB3b3JrcyBiZXR0ZXIgd2l0aCByZXN0YXJ0YWJsZSBzeXN0 ZW0gc2VydmljZXMuIElmIHRoaXMKKyAgICAgZmxhZyBleGlzdHMsIHdlIHByb2JhYmx5IHdh bnQgdG8gdHVybiBpdCBvbiBoZXJlLgorICAgICBIb3dldmVyLCBvbiBzb21lIHN5c3RlbXMg KG9ubHkgaHB1eDExIGF0IHByZXNlbnQpIHRoaXMgcmVzZXRzIHRoZQorICAgICB0aW1lb3V0 IG9mIGBzZWxlY3QnIHdoaWNoIG1lYW5zIHRoYXQgYHNlbGVjdCcgbmV2ZXIgZmluaXNoZXMg aWYKKyAgICAgaXQga2VlcHMgZ2V0dGluZyBzaWduYWxzLgorICAgICBXZSBkZWZpbmUgQlJP S0VOX1NBX1JFU1RBUlQgb24gdGhvc2Ugc3lzdGVtcy4gICovCisgIC8qIEl0J3Mgbm90IGNs ZWFyIHdoeSB0aGUgY29tbWVudCBhYm92ZSBzYXlzICJtb3N0bHkgd29ya3MgYmV0dGVyIi4g IC0tU3RlZgorICAgICBXaGVuIFNZTkNfSU5QVVQgaXMgc2V0LCB3ZSBkb24ndCB3YW50IFNB X1JFU1RBUlQgYmVjYXVzZSB3ZSBuZWVkIHRvIHBvbGwKKyAgICAgZm9yIHBlbmRpbmcgaW5w dXQgc28gd2UgbmVlZCBsb25nLXJ1bm5pbmcgc3lzY2FsbHMgdG8gYmUgaW50ZXJydXB0ZWQK KyAgICAgYWZ0ZXIgYSBzaWduYWwgdGhhdCBzZXRzIHRoZSBpbnRlcnJ1cHRfaW5wdXRfcGVu ZGluZyBmbGFnLiAgKi8KKyAgLyogTm9uLWludGVyYWN0aXZlIGtleWJvYXJkIGlucHV0IGdv ZXMgdGhyb3VnaCBzdGRpbywgd2hlcmUgd2UgYWx3YXlzCisgICAgIHdhbnQgcmVzdGFydGFi bGUgc3lzdGVtIGNhbGxzLiAgKi8KKyMgaWYgZGVmaW5lZCBCUk9LRU5fU0FfUkVTVEFSVCB8 fCBkZWZpbmVkIFNZTkNfSU5QVVQKKyAgYm9vbCB1c2VfU0FfUkVTVEFSVCA9IG5vbmludGVy YWN0aXZlOworI2Vsc2UKKyAgYm9vbCB1c2VfU0FfUkVTVEFSVCA9IDE7CisjIGVuZGlmCisg IGlmICh1c2VfU0FfUkVTVEFSVCkKKyAgICByZXR1cm4gU0FfUkVTVEFSVDsKKyNlbmRpZgor ICByZXR1cm4gMDsKK30KKwogI2lmICEgKGRlZmluZWQgVElPQ05PVFRZIHx8IGRlZmluZWQg VVNHNSB8fCBkZWZpbmVkIENZR1dJTikKIF9Ob3JldHVybiB2b2lkIGNyb2FrIChjaGFyICop OwogI2VuZGlmCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3h0ZXJtLmMnCi0tLSBzcmMveHRl cm0uYwkyMDEyLTA5LTAzIDA3OjI0OjAzICswMDAwCisrKyBzcmMveHRlcm0uYwkyMDEyLTA5 LTA0IDA3OjE3OjQ3ICswMDAwCkBAIC03NzQ5LDI2ICs3NzQ5LDYgQEAKICNlbmRpZiAvKiAh IDAgKi8KIAogDAotLyogSGFuZGxlIFNJR1BJUEUsIHdoaWNoIGNhbiBoYXBwZW4gd2hlbiB0 aGUgY29ubmVjdGlvbiB0byBhIHNlcnZlcgotICAgc2ltcGx5IGdvZXMgYXdheS4gIFNJR1BJ UEUgaXMgaGFuZGxlZCBieSB4X2Nvbm5lY3Rpb25fc2lnbmFsLgotICAgRG9uJ3QgbmVlZCB0 byBkbyBhbnl0aGluZywgYmVjYXVzZSB0aGUgd3JpdGUgd2hpY2ggY2F1c2VkIHRoZQotICAg U0lHUElQRSB3aWxsIGZhaWwsIGNhdXNpbmcgWGxpYiB0byBpbnZva2UgdGhlIFggSU8gZXJy b3IgaGFuZGxlciwKLSAgIHdoaWNoIHdpbGwgZG8gdGhlIGFwcHJvcHJpYXRlIGNsZWFudXAg Zm9yIHVzLiAgKi8KLQotc3RhdGljIHZvaWQKLXhfY29ubmVjdGlvbl9zaWduYWwgKGludCBz aWduYWxudW0pCS8qIElmIHdlIGRvbid0IGhhdmUgYW4gYXJndW1lbnQsICovCi0gICAgICAg ICAgICAgICAgICAgCQkvKiBzb21lIGNvbXBpbGVycyBjb21wbGFpbiBpbiBzaWduYWwgY2Fs bHMuICAqLwotewotI2lmZGVmIFVTRwotICAvKiBVU0cgc3lzdGVtcyBmb3JnZXQgaGFuZGxl cnMgd2hlbiB0aGV5IGFyZSB1c2VkOwotICAgICBtdXN0IHJlZXN0YWJsaXNoIGVhY2ggdGlt ZSAqLwotICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKLSAgZW1hY3Nfc2lnYWN0aW9uX2lu aXQgKCZhY3Rpb24sIHhfY29ubmVjdGlvbl9zaWduYWwpOwotICBzaWdhY3Rpb24gKHNpZ25h bG51bSwgJmFjdGlvbiwgMCk7Ci0jZW5kaWYgLyogVVNHICovCi19Ci0KLQwKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAkJCSAgSGFuZGxpbmcgWCBlcnJvcnMKICAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCkBAIC0xMDc2MCw4ICsxMDc0MCw2IEBACiB2b2lkCiB4X2luaXRpYWxpemUgKHZvaWQp CiB7Ci0gIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotCiAgIGJhdWRfcmF0ZSA9IDE5MjAw OwogCiAgIHhfbm9vcF9jb3VudCA9IDA7CkBAIC0xMDgwOCw4ICsxMDc4Niw3IEBACiAgIFhT ZXRFcnJvckhhbmRsZXIgKHhfZXJyb3JfaGFuZGxlcik7CiAgIFhTZXRJT0Vycm9ySGFuZGxl ciAoeF9pb19lcnJvcl9xdWl0dGVyKTsKIAotICBlbWFjc19zaWdhY3Rpb25faW5pdCAoJmFj dGlvbiwgeF9jb25uZWN0aW9uX3NpZ25hbCk7Ci0gIHNpZ2FjdGlvbiAoU0lHUElQRSwgJmFj dGlvbiwgMCk7CisgIHNpZ25hbCAoU0lHUElQRSwgU0lHX0lHTik7CiB9CiAKIAoK --------------010903030601080708020807-- From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 08:01:05 2012 Received: (at submit) by debbugs.gnu.org; 6 Sep 2012 12:01:05 +0000 Received: from localhost ([127.0.0.1]:42463 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9alc-0001bY-09 for submit@debbugs.gnu.org; Thu, 06 Sep 2012 08:01:05 -0400 Received: from eggs.gnu.org ([208.118.235.92]:38943) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9alX-0001b8-3G for submit@debbugs.gnu.org; Thu, 06 Sep 2012 08:01:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T9alE-00040g-IO for submit@debbugs.gnu.org; Thu, 06 Sep 2012 08:00:47 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:37080) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9alE-00040b-EE for submit@debbugs.gnu.org; Thu, 06 Sep 2012 08:00:40 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45309) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9al0-0001m3-6J for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 08:00:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T9akh-0003Z5-Nr for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 08:00:23 -0400 Received: from plane.gmane.org ([80.91.229.3]:44964) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9akh-0003Ln-9F for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 08:00:07 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1T9aka-0005CU-0u for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 14:00:00 +0200 Received: from uk.solarflare.com ([193.34.186.16]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 06 Sep 2012 14:00:00 +0200 Received: from andrewjmoreton by uk.solarflare.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 06 Sep 2012 14:00:00 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#12327: Signal-handler cleanup for Emacs Date: Thu, 06 Sep 2012 12:59:47 +0100 Lines: 368 Message-ID: References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> <5045B7E1.7080901@cs.ucla.edu> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: uk.solarflare.com User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (windows-nt) Cancel-Lock: sha1:FvfnwGFkqV0sD7RqOcqk/H4o6pE= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) On Tue 04 Sep 2012, Paul Eggert wrote: > On 09/03/2012 02:17 AM, Andreas Schwab wrote: >> But that's really part of the signal->sigaction move. > > OK, I looked into that, and several other places are also > affected by the move. Attached is a patch to fix the issue > that you found, and the other related issues that I saw. This > assumes the patch I already sent in . This patch set (or something similar) was committed in r109893, and causes a crash in the Windows build (r109892 is ok). Crash is in r109893 built on Windows XP using MingGW gcc 4.6.2. To reproduce it, run "M-x rgrep" using Cygwin grep. The grep output is all displayed in the *grep* buffer, and then emacs aborts. Attaching gdb gives the output below. (gdb) thread apply all bt full Thread 6 (Thread 2072.0x9fc): #0 0x7c90e514 in ntdll!LdrAccessResource () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #1 0x7c90d9da in ntdll!ZwReadFile () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #2 0x7c801879 in ReadFile () from C:\WINDOWS\system32\kernel32.dll No symbol table info available. #3 0x00000628 in ?? () No symbol table info available. #4 0x00000000 in ?? () No symbol table info available. Thread 5 (Thread 2072.0xdfc): #0 0x7c90e514 in ntdll!LdrAccessResource () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #1 0x7c90da4a in ntdll!ZwRemoveIoCompletion () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #2 0x7c80a7e6 in KERNEL32!GetQueuedCompletionStatus () from C:\WINDOWS\system32\kernel32.dll No symbol table info available. #3 0x77e7715c in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #4 0x77e772a0 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #5 0x77e77328 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #6 0x77e76ad1 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #7 0x77e76c97 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #8 0x7c80b729 in KERNEL32!GetModuleFileNameA () from C:\WINDOWS\system32\kernel32.dll No symbol table info available. #9 0x00000000 in ?? () No symbol table info available. Thread 4 (Thread 2072.0x358): #0 0x7c90e514 in ntdll!LdrAccessResource () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #1 0x7c90da4a in ntdll!ZwRemoveIoCompletion () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #2 0x7c80a7e6 in KERNEL32!GetQueuedCompletionStatus () from C:\WINDOWS\system32\kernel32.dll No symbol table info available. #3 0x77e7715c in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #4 0x77e772a0 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #5 0x77e77328 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #6 0x77e76ad1 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #7 0x77e76c97 in RPCRT4!I_RpcBindingCopy () from C:\WINDOWS\system32\rpcrt4.dll No symbol table info available. #8 0x7c80b729 in KERNEL32!GetModuleFileNameA () from C:\WINDOWS\system32\kernel32.dll No symbol table info available. #9 0x00000000 in ?? () No symbol table info available. Thread 3 (Thread 2072.0x1dc): #0 0x7c90e514 in ntdll!LdrAccessResource () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #1 0x7c90df5a in ntdll!ZwWaitForSingleObject () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #2 0x7c8025db in WaitForSingleObjectEx () from C:\WINDOWS\system32\kernel32.dll No symbol table info available. #3 0x00000620 in ?? () No symbol table info available. #4 0x00000000 in ?? () No symbol table info available. Thread 2 (Thread 2072.0x410): #0 0x7c90e514 in ntdll!LdrAccessResource () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #1 0x77f16bf2 in GdiDrawStream () from C:\WINDOWS\system32\gdi32.dll No symbol table info available. #2 0x00fa2b1b in ?? () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #3 0x00fa289b in ?? () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #4 0x00fa2753 in ?? () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #5 0x00fa2c9f in UxTheme!DrawThemeParentBackground () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #6 0x00fa5f42 in UxTheme!SetThemeAppProperties () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #7 0x00fa6485 in UxTheme!SetThemeAppProperties () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #8 0x00fbc4b9 in UxTheme!GetThemeTextMetrics () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #9 0x00fa1ac7 in ?? () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #10 0x00fa1b3d in ?? () from C:\WINDOWS\system32\uxtheme.dll No symbol table info available. #11 0x7e4294ed in USER32!GetPropW () from C:\WINDOWS\system32\user32.dll No symbol table info available. #12 0x0114b954 in w32_wnd_proc (hwnd=0xa036c, msg=0x85, wParam=0x870409db, lParam=0x0) at w32fns.c:3832 f = 0xa45740 dpyinfo = 0x16626c0 wmsg = { msg = { hwnd = 0x12, message = 0x7240f7c8, wParam = 0xfc505d, lParam = 0xfbe152, time = 0xfbe535, pt = { x = 0x7240f838, y = 0x6 } }, dwModifiers = 0x6, rect = { left = 0x11, top = 0x11, right = 0x7240f87c, bottom = 0x11 } } windows_translate = 0xfa39d6 key = 0xa45740 #13 0x7e418734 in USER32!GetDC () from C:\WINDOWS\system32\user32.dll No symbol table info available. #14 0x000a036c in ?? () No symbol table info available. #15 0x00000085 in ?? () No symbol table info available. #16 0x870409db in ?? () No symbol table info available. #17 0x00000000 in ?? () No symbol table info available. Thread 1 (Thread 2072.0x564): #0 0x7c90120f in ntdll!DbgUiConnectToDbg () from C:\WINDOWS\system32\ntdll.dll No symbol table info available. #1 0x0115317e in emacs_abort () at w32fns.c:7215 button = 0x6 #2 0x010539f2 in sys_wait (status=0x82f264) at w32proc.c:462 active = 0x0 retval = 0x0 nh = 0x0 pid = 0xc38 cp = 0x165f430 cps = {0x165f430, 0x82f1d8, 0x82f490, 0x82fcdc, 0x1, 0x8, 0x353c81a, 0x0, 0x82f23c, 0x132c256, 0x60, 0x0, 0x82f99c, 0x82f3e8, 0x10e02e4, 0x5, 0x7c90df4a, 0x7c809590, 0x7ffdf000, 0x82f280, 0x7c8095d2, 0x82f22c, 0x7c8095c0, 0x0, 0x8, 0x0, 0x714, 0x710, 0x68c, 0x644, 0x5fc, 0x600} wait_hnd = {0x0, 0x82f168, 0x1028d66, 0x3555ad2, 0x353c832, 0x82f1d8, 0x1036669, 0x13f203d, 0x3, 0x132c24e, 0x353c81a, 0x163a5e8, 0x82f15c, 0x82fcdc, 0x3555ad0, 0x353c81a, 0x82fcf0, 0x82f1d8, 0x10380e2, 0x3555ad2, 0x353c832, 0x0, 0x82f12c, 0x10320ff, 0x82ffe0, 0x0, 0x3555ad2, 0x353c832, 0x0, 0x0, 0x3, 0x35554aa} #3 0x010508a0 in record_child_status_change () at process.c:6422 proc = 0x534cee5 p = 0x534cee0 pid = 0xc38 w = 0x0 tail = 0x536717e #4 0x01050ee0 in handle_child_signal (sig=0x12) at process.c:6529 No locals. #5 0x01143cfe in handle_on_main_thread (sig=0x12, handler=0x1050ed1 ) at sysdep.c:1584 old_errno = 0x16 on_main_thread = 0x1 #6 0x01050eff in deliver_child_signal (sig=0x12) at process.c:6536 No locals. #7 0x01054d67 in sys_select (nfds=0xa, rfds=0x82f6e4, wfds=0x0, efds=0x0, timeout=0x82f6d4, ignored=0x0) at w32proc.c:1325 orfds = { bits = {0x309, 0x0} } timeout_ms = 0xfa start_time = 0x5e2323e i = 0xa nh = 0x5 nc = 0x2 nr = 0x1 active = 0x5 cp = 0x165f430 cps = {0x165f430, 0x165f3d8, 0x82f5bc, 0xee6b280, 0x0, 0xee6b280, 0x30, 0x0 , 0xa, 0x200, 0x82f628, 0x1014eea, 0x0, 0x0, 0x0, 0x353c81a} wait_hnd = {0x714, 0x710, 0x68c, 0x644, 0x5fc, 0x600, 0x624, 0x82f5bc, 0x1, 0x82f5e8, 0x82f598, 0x12c0b6b, 0x82f4e8, 0x0, 0x850000, 0x0, 0x1645970, 0x86a4d0, 0x850000, 0x1028d66, 0x15ad2, 0x8, 0x82f3d4, 0x850000, 0x82f4c8, 0xe11f, 0x82f4b8, 0x105917e, 0x50488ca1, 0x36d61600, 0x82f4d8, 0x1103595, 0x50488ca1, 0x36d61600, 0x29e, 0x1, 0x82f99c, 0x3c8c90c, 0x82f4e8, 0x5048, 0x0, 0xe09c0, 0x8ca1, 0x5048, 0x7c80a0e9, 0x0, 0x82f518, 0x100dd13, 0x0, 0xee6b280, 0xee6b280, 0xee6b280, 0x50488ca1, 0xe11f, 0x82f528, 0x105917e, 0x50488ca1, 0x36d61600, 0x82f548, 0x1103595, 0x50488ca1, 0x36d61600, 0x29e, 0xce70001, 0xfbe96c7a, 0x1cd8c24, 0x82f558, 0x5048, 0x0, 0xe09c0, 0x8ca1, 0x5048, 0x0, 0x0, 0x82f588, 0x100dd13, 0x0, 0xee6b280, 0xee6b280, 0x1662720, 0x16626c0, 0x0, 0x82f588, 0x1142a8d, 0x50488ca1, 0x36d61600, 0x0, 0x0, 0xa, 0x1, 0x0, 0x3811de0, 0x1, 0x82f5e8, 0x82f608, 0x10150ed} fdindex = {0xffffffff, 0x0, 0x3, 0x8, 0x9, 0x353c81a, 0x82f378, 0x1028c3b, 0x163a414, 0x353c81a, 0x0, 0x0, 0x163a414, 0x82f380, 0x82f378, 0x1028a1c, 0x3546de2, 0x457c7c0, 0x353c81a, 0x38e4226, 0x391e1ca, 0x0, 0x82f418, 0x10362be, 0x3546de2, 0x353c81a, 0x392284a, 0x39229ca, 0x4bbf405, 0x54184be, 0x82f438, 0x36f1e8a, 0x353c802, 0x82f4a4, 0x26aaec7a, 0x77c49210, 0x26aaec7a, 0x2fda46, 0x989680, 0x0, 0x200, 0x1, 0x77c4921d, 0xce7e2a0, 0xfbe96c7a, 0x1cd8c24, 0x86a508, 0x7c90cfea, 0x7c80a0e9, 0x710, 0x82f438, 0x7c90cfea, 0x7c80a0e9, 0x710, 0x82f448, 0x12e5c9c, 0x16627bc, 0x353c81a, 0x4405800, 0x353c81a, 0x36f1e8a, 0x82f514, 0x26aaec7a, 0x77c49210} #8 0x0104ca1f in wait_reading_process_output (time_limit=0x23, nsecs=0x0, read_kbd=0xffffffff, do_display=0x1, wait_for_cell=0x353c81a, wait_proc=0x0, just_wait_proc=0x0) at process.c:4682 timeout_reduced_for_timers = 0x1 channel = 0xa nfds = 0x1 Available = { bits = {0x200, 0x0} } Writeok = { bits = {0x0, 0x0} } check_write = 0x0 check_delay = 0x0 no_avail = 0x0 xerrno = 0x16 proc = 0x534cee5 timeout = { tv_sec = 0x0, tv_nsec = 0x0 } end_time = { tv_sec = 0x50488cc4, tv_nsec = 0x26fb3f80 } wait_channel = 0xffffffff got_some_input = 0x1 count = 0x2 #9 0x010faab4 in sit_for (timeout=0x8c, reading=0x1, do_display=0x1) at dispnew.c:5972 sec = 0x23 nsec = 0x0 #10 0x01009478 in read_char (commandflag=0x1, nmaps=0x5, maps=0x82f990, prev_event=0x353c81a, used_mouse_menu=0x82fa78, end_time=0x0) at keyboard.c:2742 tem0 = 0x82f938 timeout = 0x23 delay_level = 0x5 buffer_size = 0x3f c = 0x353c81a jmpcount = 0x2 local_getcjmp = {0x82f938, 0x3c8c900, 0x82f99c, 0x3c8c90c, 0x82f7bc, 0x1008d63, 0x82ffe0, 0x0, 0x82f8e8, 0x378e1ca, 0x3565f02, 0x3c8c900, 0x82f8c8, 0x1027b11, 0x379e540, 0x379e540} save_jump = {0x0 } key_already_recorded = 0x0 tem = 0x3cf79ee save = 0xdb15 previous_echo_area_message = 0x353c81a also_record = 0x353c81a reread = 0x0 gcpro1 = { next = 0x12e3542, var = 0x51e2276, nvars = 0x354377a } gcpro2 = { next = 0x82f830, var = 0x354377a, nvars = 0x82f828 } polling_stopped_here = 0x0 orig_kboard = 0x353f500 #11 0x0101c9ae in read_key_sequence (keybuf=0x82fc00, bufsize=0x1e, prompt=0x353c81a, dont_downcase_last=0x0, can_return_switch_frame=0x1, fix_current_buffer=0x1) at keyboard.c:9356 interrupted_kboard = 0x353f500 interrupted_frame = 0x3811de0 key = 0x4405805 used_mouse_menu = 0x0 echo_local_start = 0x0 last_real_key_start = 0x0 keys_local_start = 0x0 local_first_binding = 0x0 from_string = 0x353c81a count = 0x2 t = 0x0 echo_start = 0x0 keys_start = 0x0 nmaps = 0x5 nmaps_allocated = 0x5 defs = 0x82f960 submaps = 0x82f990 orig_local_map = 0x4247c76 orig_keymap = 0x353c81a localized_local_map = 0x0 first_binding = 0x0 first_unbound = 0x1f mock_input = 0x0 fkey = { parent = 0x38f7456, map = 0x38f7456, start = 0x0, end = 0x0 } keytran = { parent = 0x3539ec6, map = 0x3539ec6, start = 0x0, end = 0x0 } indec = { parent = 0x38f745e, map = 0x38f745e, start = 0x0, end = 0x0 } shift_translated = 0x0 delayed_switch_frame = 0x353c81a original_uppercase = 0x36c50 original_uppercase_position = 0xffffffff dummyflag = 0x0 starting_buffer = 0x4405800 fake_prefixed_keys = 0x353c81a gcpro1 = { next = 0x4405800, var = 0x44c0668, nvars = 0x82fac8 } #12 0x01005e1b in command_loop_1 () at keyboard.c:1499 cmd = 0x3565f02 keybuf = {0x200001e0, 0x353c81a, 0x82fb00, 0x0, 0x163a630, 0x353c81a, 0x3745dfa, 0x35554aa, 0x353c81a, 0x0, 0x0, 0x35554a8, 0x0, 0x0, 0x82fc68, 0x1037cfb, 0x35554aa, 0x353c81a, 0x44f6b7e, 0x353c81a, 0xc, 0x353c81a, 0x2, 0x7ffd6000, 0x0, 0x0, 0x82fc98, 0x1033c91, 0x2, 0x44f6b7e} i = 0x1 prev_modiff = 0x1dd prev_buffer = 0x4405800 already_adjusted = 0x0 #13 0x01032285 in internal_condition_case (bfun=0x1005929 , handlers=0x3548dca, hfun=0x10050fe ) at eval.c:1319 val = 0x44f6b7e c = { tag = 0x353c81a, val = 0x353c81a, next = 0x82fda4, gcpro = 0x0, jmp = {0x82fd68, 0x7ffd6000, 0x0, 0x0, 0x82fcbc, 0x1032232, 0x82ffe0, 0x0, 0x2, 0x0, 0x82fdd0, 0x2, 0x2, 0x0, 0x1, 0x1}, backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0x0, pdlcount = 0x2, poll_suppress_count = 0x0, interrupt_input_blocked = 0x0, byte_stack = 0x0 } h = { handler = 0x3548dca, var = 0x353c81a, chosen_clause = 0x2020e99, tag = 0x82fcf0, next = 0x0 } #14 0x01005556 in command_loop_2 (ignore=0x353c81a) at keyboard.c:1194 val = 0x7ffd6000 #15 0x01031c96 in internal_catch (tag=0x3546612, func=0x1005532 , arg=0x353c81a) at eval.c:1076 c = { tag = 0x3546612, val = 0x353c81a, next = 0x0, gcpro = 0x0, jmp = {0x82fe18, 0x7ffd6000, 0x0, 0x0, 0x82fd8c, 0x1031c87, 0x82ffe0, 0x0, 0x353c81a, 0x3542e00, 0x740053, 0x6e0061, 0x7ffd6000, 0x82fe18, 0x1027b01, 0x165c4fc}, backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0x0, pdlcount = 0x2, poll_suppress_count = 0x0, interrupt_input_blocked = 0x0, byte_stack = 0x0 } #16 0x01005512 in command_loop () at keyboard.c:1173 No locals. #17 0x01004abb in recursive_edit_1 () at keyboard.c:794 count = 0x1 val = 0x77c4a190 #18 0x01004de8 in Frecursive_edit () at keyboard.c:858 count = 0x0 buffer = 0x353c81a #19 0x01002abc in main (argc=0x2, argv=0xa425b0) at emacs.c:1643 dummy = 0x82ffe0 stack_bottom_variable = 0x0 do_initial_setlocale = 0x1 skip_args = 0x0 no_loadup = 0x0 junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 (gdb) quit From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 10:41:20 2012 Received: (at 12327) by debbugs.gnu.org; 6 Sep 2012 14:41:20 +0000 Received: from localhost ([127.0.0.1]:44256 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9dGi-0005hP-Go for submit@debbugs.gnu.org; Thu, 06 Sep 2012 10:41:20 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]:54451) by debbugs.gnu.org with smtp (Exim 4.72) (envelope-from ) id 1T9dGe-0005hG-0U for 12327@debbugs.gnu.org; Thu, 06 Sep 2012 10:41:17 -0400 Received: (qmail invoked by alias); 06 Sep 2012 14:41:02 -0000 Received: from 62-47-57-144.adsl.highway.telekom.at (EHLO [62.47.57.144]) [62.47.57.144] by mail.gmx.net (mp001) with SMTP; 06 Sep 2012 16:41:02 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX18ZlddtdVwZra0CKocx3M3sEF3WCSXx/2csTWkgbK ttqJwrW5dNuT6B Message-ID: <5048B617.70803@gmx.at> Date: Thu, 06 Sep 2012 16:41:27 +0200 From: martin rudalics MIME-Version: 1.0 To: Andy Moreton Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> <5045B7E1.7080901@cs.ucla.edu> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12327 Cc: 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Crash is in r109893 built on Windows XP using MingGW gcc 4.6.2. > > To reproduce it, run "M-x rgrep" using Cygwin grep. The grep > output is all displayed in the *grep* buffer, and then emacs aborts. With r109905 doing M-x shell and then exit gets me Breakpoint 1, emacs_abort () at w32fns.c:7201 7201 button = MessageBox (NULL, (gdb) bt #0 emacs_abort () at w32fns.c:7201 #1 0x010345e2 in sys_wait (status=0x82f284) at w32proc.c:462 #2 0x01031ff0 in record_child_status_change () at process.c:6422 #3 0x01032315 in handle_child_signal (sig=18) at process.c:6529 #4 0x010dd5fa in handle_on_main_thread (sig=18, handler=0x1032306 ) at sysdep.c:1584 #5 0x01032334 in deliver_child_signal (sig=18) at process.c:6536 #6 0x010358ec in sys_select (nfds=4, rfds=0x82f704, wfds=0x0, efds=0x0, timeout=0x82f6f4, ignored=0x0) at w32proc.c:1325 #7 0x0102f943 in wait_reading_process_output (time_limit=900, nsecs=0, read_kbd=-1, do_display=1, wait_for_cell=52672538, wait_proc=0x0, just_wait_proc=0) at process.c:4682 #8 0x010a4b7e in sit_for (timeout=3600, reading=true, do_display=1) at dispnew.c:5972 #9 0x010071dc in read_char (commandflag=1, nmaps=3, maps=0x82f9a0, prev_event=52672538, used_mouse_menu=0x82fa78, end_time=0x0) at keyboard.c:2742 #10 0x01011081 in read_key_sequence (keybuf=0x82fc00, bufsize=30, prompt=52672538, dont_downcase_last=0, can_return_switch_frame=1, fix_current_buffer=1) at keyboard.c:9356 #11 0x01004fad in command_loop_1 () at keyboard.c:1499 #12 0x0101e737 in internal_condition_case (bfun=0x1004c3e , handlers=52723146, hfun=0x10045e8 ) at eval.c:1319 #13 0x0100496f in command_loop_2 (ignore=52672538) at keyboard.c:1194 #14 0x0101e26b in internal_catch (tag=52712978, func=0x100494b , arg=52672538) at eval.c:1076 #15 0x0100492b in command_loop () at keyboard.c:1173 #16 0x01004225 in recursive_edit_1 () at keyboard.c:794 #17 0x01004374 in Frecursive_edit () at keyboard.c:858 #18 0x010028e6 in main (argc=1, argv=0xa32808) at emacs.c:1643 martin, on GNU Emacs 24.2.50.1 (i386-mingw-nt5.1.2600) of 2012-09-06 on MACHNO From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 12:46:47 2012 Received: (at 12327) by debbugs.gnu.org; 6 Sep 2012 16:46:47 +0000 Received: from localhost ([127.0.0.1]:44449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9fE7-000115-Dv for submit@debbugs.gnu.org; Thu, 06 Sep 2012 12:46:47 -0400 Received: from mtaout21.012.net.il ([80.179.55.169]:35543) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9fE3-00010u-Tb for 12327@debbugs.gnu.org; Thu, 06 Sep 2012 12:46:45 -0400 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0M9X00K00T1H3M00@a-mtaout21.012.net.il> for 12327@debbugs.gnu.org; Thu, 06 Sep 2012 19:46:29 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9X00JLST9GYJ50@a-mtaout21.012.net.il>; Thu, 06 Sep 2012 19:46:28 +0300 (IDT) Date: Thu, 06 Sep 2012 19:46:43 +0300 From: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs In-reply-to: <5048B617.70803@gmx.at> X-012-Sender: halo1@inter.net.il To: martin rudalics Message-id: <83bohjcd58.fsf@gnu.org> References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> <5045B7E1.7080901@cs.ucla.edu> <5048B617.70803@gmx.at> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: andrewjmoreton@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Thu, 06 Sep 2012 16:41:27 +0200 > From: martin rudalics > Cc: 12327@debbugs.gnu.org > > > Crash is in r109893 built on Windows XP using MingGW gcc 4.6.2. > > > > To reproduce it, run "M-x rgrep" using Cygwin grep. The grep > > output is all displayed in the *grep* buffer, and then emacs aborts. > > With r109905 doing M-x shell and then exit gets me > > Breakpoint 1, emacs_abort () at w32fns.c:7201 > 7201 button = MessageBox (NULL, > (gdb) bt > #0 emacs_abort () at w32fns.c:7201 > #1 0x010345e2 in sys_wait (status=0x82f284) at w32proc.c:462 > #2 0x01031ff0 in record_child_status_change () at process.c:6422 > #3 0x01032315 in handle_child_signal (sig=18) at process.c:6529 > #4 0x010dd5fa in handle_on_main_thread (sig=18, handler=0x1032306 ) at sysdep.c:1584 > #5 0x01032334 in deliver_child_signal (sig=18) at process.c:6536 > #6 0x010358ec in sys_select (nfds=4, rfds=0x82f704, wfds=0x0, efds=0x0, timeout=0x82f6f4, ignored=0x0) at w32proc.c:1325 I think I fixed this in revision 109907 on the trunk, please test. At least "M-x shell" followed by "exit RET" no longer winds up in emacs_abort for me. I cannot test Andrew's recipe, as I don't have Cygwin installed. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 12:55:05 2012 Received: (at submit) by debbugs.gnu.org; 6 Sep 2012 16:55:05 +0000 Received: from localhost ([127.0.0.1]:44473 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9fM6-0001D4-Oc for submit@debbugs.gnu.org; Thu, 06 Sep 2012 12:55:04 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45260) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9fM3-0001Cf-RV for submit@debbugs.gnu.org; Thu, 06 Sep 2012 12:55:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T9fLp-0003l1-V4 for submit@debbugs.gnu.org; Thu, 06 Sep 2012 12:54:46 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:60895) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9fLp-0003kw-SH for submit@debbugs.gnu.org; Thu, 06 Sep 2012 12:54:45 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60870) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9fLo-00082H-Tu for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 12:54:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T9fLn-0003kR-Th for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 12:54:44 -0400 Received: from plane.gmane.org ([80.91.229.3]:52289) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9fLn-0003kF-Mq for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 12:54:43 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1T9fLn-0002w2-HJ for bug-gnu-emacs@gnu.org; Thu, 06 Sep 2012 18:54:43 +0200 Received: from uk.solarflare.com ([193.34.186.16]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 06 Sep 2012 18:54:43 +0200 Received: from andrewjmoreton by uk.solarflare.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 06 Sep 2012 18:54:43 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#12327: Signal-handler cleanup for Emacs Date: Thu, 06 Sep 2012 17:54:29 +0100 Lines: 33 Message-ID: References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> <5045B7E1.7080901@cs.ucla.edu> <5048B617.70803@gmx.at> <83bohjcd58.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: uk.solarflare.com User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (windows-nt) Cancel-Lock: sha1:pnRz8tk0gLBi3C3p61BHImdr/CI= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) On Thu 06 Sep 2012, Eli Zaretskii wrote: >> Date: Thu, 06 Sep 2012 16:41:27 +0200 >> From: martin rudalics >> Cc: 12327@debbugs.gnu.org >> >> > Crash is in r109893 built on Windows XP using MingGW gcc 4.6.2. >> > >> > To reproduce it, run "M-x rgrep" using Cygwin grep. The grep >> > output is all displayed in the *grep* buffer, and then emacs aborts. >> >> With r109905 doing M-x shell and then exit gets me >> >> Breakpoint 1, emacs_abort () at w32fns.c:7201 >> 7201 button = MessageBox (NULL, >> (gdb) bt >> #0 emacs_abort () at w32fns.c:7201 >> #1 0x010345e2 in sys_wait (status=0x82f284) at w32proc.c:462 >> #2 0x01031ff0 in record_child_status_change () at process.c:6422 >> #3 0x01032315 in handle_child_signal (sig=18) at process.c:6529 >> #4 0x010dd5fa in handle_on_main_thread (sig=18, handler=0x1032306 ) at sysdep.c:1584 >> #5 0x01032334 in deliver_child_signal (sig=18) at process.c:6536 >> #6 0x010358ec in sys_select (nfds=4, rfds=0x82f704, wfds=0x0, efds=0x0, >> timeout=0x82f6f4, ignored=0x0) at w32proc.c:1325 > > I think I fixed this in revision 109907 on the trunk, please test. At > least "M-x shell" followed by "exit RET" no longer winds up in > emacs_abort for me. I cannot test Andrew's recipe, as I don't have > Cygwin installed. Thanks Eli, it all seems to happy again. AndyM From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 13:20:51 2012 Received: (at 12327-done) by debbugs.gnu.org; 6 Sep 2012 17:20:52 +0000 Received: from localhost ([127.0.0.1]:44558 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9fl4-0001tq-9Z for submit@debbugs.gnu.org; Thu, 06 Sep 2012 13:20:50 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:63866) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9fkw-0001tK-DQ for 12327-done@debbugs.gnu.org; Thu, 06 Sep 2012 13:20:44 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0M9X00500UJFS800@a-mtaout20.012.net.il> for 12327-done@debbugs.gnu.org; Thu, 06 Sep 2012 20:19:55 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9X005U1UT6AHC0@a-mtaout20.012.net.il>; Thu, 06 Sep 2012 20:19:55 +0300 (IDT) Date: Thu, 06 Sep 2012 20:20:09 +0300 From: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs In-reply-to: X-012-Sender: halo1@inter.net.il To: Andy Moreton Message-id: <83a9x3cbli.fsf@gnu.org> References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> <5045B7E1.7080901@cs.ucla.edu> <5048B617.70803@gmx.at> <83bohjcd58.fsf@gnu.org> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327-done Cc: 12327-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Andy Moreton > Date: Thu, 06 Sep 2012 17:54:29 +0100 > > > I think I fixed this in revision 109907 on the trunk, please test. At > > least "M-x shell" followed by "exit RET" no longer winds up in > > emacs_abort for me. I cannot test Andrew's recipe, as I don't have > > Cygwin installed. > > Thanks Eli, it all seems to happy again. Thanks for testing, I'm closing the bug. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 13:36:31 2012 Received: (at 12327) by debbugs.gnu.org; 6 Sep 2012 17:36:31 +0000 Received: from localhost ([127.0.0.1]:44593 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9g0E-0002YX-Gv for submit@debbugs.gnu.org; Thu, 06 Sep 2012 13:36:31 -0400 Received: from mailout-de.gmx.net ([213.165.64.22]:42491) by debbugs.gnu.org with smtp (Exim 4.72) (envelope-from ) id 1T9g0C-0002YN-7N for 12327@debbugs.gnu.org; Thu, 06 Sep 2012 13:36:29 -0400 Received: (qmail invoked by alias); 06 Sep 2012 17:36:13 -0000 Received: from 62-47-57-144.adsl.highway.telekom.at (EHLO [62.47.57.144]) [62.47.57.144] by mail.gmx.net (mp010) with SMTP; 06 Sep 2012 19:36:13 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX1+wn7BAEGiwVzvlanrpIHNPW/xCHSasjSKmqErdbC rnZPIJw5YUioBj Message-ID: <5048DF3D.9070102@gmx.at> Date: Thu, 06 Sep 2012 19:37:01 +0200 From: martin rudalics MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50428E57.8070708@cs.ucla.edu> <83d324fh3c.fsf@gnu.org> <5043ACF7.7080100@cs.ucla.edu> <838vcsf7f9.fsf@gnu.org> <50446748.3060406@cs.ucla.edu> <5044720B.2030304@cs.ucla.edu> <5045B7E1.7080901@cs.ucla.edu> <5048B617.70803@gmx.at> <83bohjcd58.fsf@gnu.org> In-Reply-To: <83bohjcd58.fsf@gnu.org> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12327 Cc: andrewjmoreton@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > I think I fixed this in revision 109907 on the trunk, please test. At > least "M-x shell" followed by "exit RET" no longer winds up in > emacs_abort for me. I cannot test Andrew's recipe, as I don't have > Cygwin installed. Works now. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 06 21:36:16 2012 Received: (at 12327) by debbugs.gnu.org; 7 Sep 2012 01:36:16 +0000 Received: from localhost ([127.0.0.1]:45061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9nUV-00054n-Qv for submit@debbugs.gnu.org; Thu, 06 Sep 2012 21:36:16 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47094) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9nUT-00054d-Ap for 12327@debbugs.gnu.org; Thu, 06 Sep 2012 21:36:14 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id B8125A60001; Thu, 6 Sep 2012 18:35:57 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1Wmo5ieYcI3p; Thu, 6 Sep 2012 18:35:57 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 07BAC39E8008; Thu, 6 Sep 2012 18:35:57 -0700 (PDT) Message-ID: <50494F7F.9080901@cs.ucla.edu> Date: Thu, 06 Sep 2012 18:35:59 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: 12327@debbugs.gnu.org Subject: Signal-handler cleanup for Emacs Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12327 Cc: Juanma Barranquero , Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) I installed the reworked patch into the trunk as bzr 109909. I also installed the first chunk of the later cleanup as trunk bzr 109893. This had a typo that prevented it working on Windows hosts -- sorry about that, and thanks to Andy and Martin for reporting it and Eli for fixing it. Other parts of the later cleanup still need installing, to fix the problem Andreas mentioned, plus some other race conditions I've found during analysis and testing on GNU/Linux. Since Bug#12327 is now marked as done and is getting a bit hard-to-follow anyway, I'll submit these separately, as a different bug#. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 07 02:02:55 2012 Received: (at 12327) by debbugs.gnu.org; 7 Sep 2012 06:02:55 +0000 Received: from localhost ([127.0.0.1]:45296 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9reY-0005I1-QO for submit@debbugs.gnu.org; Fri, 07 Sep 2012 02:02:55 -0400 Received: from mtaout22.012.net.il ([80.179.55.172]:52930) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9reW-0005Ht-F7 for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 02:02:53 -0400 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M9Y00I00TBZT100@a-mtaout22.012.net.il> for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 09:01:48 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Y00IICU30HTA0@a-mtaout22.012.net.il>; Fri, 07 Sep 2012 09:01:48 +0300 (IDT) Date: Fri, 07 Sep 2012 09:02:04 +0300 From: Eli Zaretskii Subject: Re: Signal-handler cleanup for Emacs In-reply-to: <50494F7F.9080901@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <834nnacqw3.fsf@gnu.org> References: <50494F7F.9080901@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Thu, 06 Sep 2012 18:35:59 -0700 > From: Paul Eggert > CC: Eli Zaretskii , Juanma Barranquero > > I installed the reworked patch > into the trunk as bzr 109909. This doesn't compile on Windows: gcc -I. -c -gdwarf-2 -g3 -DEMACSDEBUG -fno-crossjumping -Id:/usr/include/libxml2 -DGLYPH_DEBUG=1 -Demacs=1 -I../lib -I../nt/inc -DHAVE_NTGUI=1 -DUSE_CRT_DLL=1 -o oo/i386/editfns.o editfns.c alloc.c: In function `die': alloc.c:6716: error: `SIGABRT' undeclared (first use in this function) alloc.c:6716: error: (Each undeclared identifier is reported only once alloc.c:6716: error: for each function it appears in.) makefile:322: recipe for target `oo/i386/alloc.o' failed make[1]: *** [oo/i386/alloc.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory `D:/gnu/bzr/emacs/trunk/src' makefile:432: recipe for target `all-other-dirs-gmake' failed make: *** [all-other-dirs-gmake] Error 2 From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 07 03:26:26 2012 Received: (at 12327) by debbugs.gnu.org; 7 Sep 2012 07:26:26 +0000 Received: from localhost ([127.0.0.1]:45354 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9sxO-0007C2-CL for submit@debbugs.gnu.org; Fri, 07 Sep 2012 03:26:26 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:64153) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9sxM-0007Bu-2u for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 03:26:25 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0M9Y00D00XXSHB00@a-mtaout20.012.net.il> for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 10:26:03 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Y00DGXXZCGM10@a-mtaout20.012.net.il>; Fri, 07 Sep 2012 10:26:01 +0300 (IDT) Date: Fri, 07 Sep 2012 10:26:17 +0300 From: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs In-reply-to: <834nnacqw3.fsf@gnu.org> X-012-Sender: halo1@inter.net.il To: eggert@cs.ucla.edu Message-id: <83392ucmzq.fsf@gnu.org> References: <50494F7F.9080901@cs.ucla.edu> <834nnacqw3.fsf@gnu.org> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 07 Sep 2012 09:02:04 +0300 > From: Eli Zaretskii > Cc: lekktu@gmail.com, 12327@debbugs.gnu.org > > This doesn't compile on Windows: > > gcc -I. -c -gdwarf-2 -g3 -DEMACSDEBUG -fno-crossjumping -Id:/usr/include/libxml2 -DGLYPH_DEBUG=1 -Demacs=1 -I../lib -I../nt/inc -DHAVE_NTGUI=1 -DUSE_CRT_DLL=1 -o oo/i386/editfns.o editfns.c > alloc.c: In function `die': > alloc.c:6716: error: `SIGABRT' undeclared (first use in this function) > alloc.c:6716: error: (Each undeclared identifier is reported only once > alloc.c:6716: error: for each function it appears in.) > makefile:322: recipe for target `oo/i386/alloc.o' failed > make[1]: *** [oo/i386/alloc.o] Error 1 > make[1]: *** Waiting for unfinished jobs.... > make[1]: Leaving directory `D:/gnu/bzr/emacs/trunk/src' > makefile:432: recipe for target `all-other-dirs-gmake' failed > make: *** [all-other-dirs-gmake] Error 2 Actually, this isn't Windows-specific, it happens in any build that specifies --enable-checking. Fixed by revision 109918 on the trunk. The following link failure _is_ Windows-specific, stand by for a fix. gcc -o oo/i386/temacs.bin -gdwarf-2 -g3 -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-subsystem,console -Wl,-entry,__start -Wl,-Map,oo/i386/temacs.map oo/i386/firstfile.o oo/i386/emacs.res oo/i386/temacs0.a oo/i386/temacs1.a oo/i386/temacs2.a oo/i386/lastfile.a ../lib/oo/i386/libgnu.a -lwinmm -ladvapi32 -lgdi32 -lcomdlg32 -luser32 -lmpr -lshell32 -lwinspool -lole32 -lcomctl32 -lusp10 oo/i386/temacs0.a(emacs.o)(.text+0x1066): In function `main': D:\gnu\bzr\emacs\trunk\src/emacs.c:1129: undefined reference to `sigaction' oo/i386/temacs0.a(emacs.o)(.text+0x1091):D:\gnu\bzr\emacs\trunk\src/emacs.c:1133: undefined reference to `sigaction' oo/i386/temacs0.a(emacs.o)(.text+0x10ff):D:\gnu\bzr\emacs\trunk\src/emacs.c:1157: undefined reference to `sigaction' oo/i386/temacs0.a(emacs.o)(.text+0x111a):D:\gnu\bzr\emacs\trunk\src/emacs.c:1184: undefined reference to `sigaction' oo/i386/temacs0.a(emacs.o)(.text+0x1135):D:\gnu\bzr\emacs\trunk\src/emacs.c:1188: undefined reference to `sigaction' oo/i386/temacs0.a(emacs.o)(.text+0x1159):D:\gnu\bzr\emacs\trunk\src/emacs.c:1198: more undefined references to `sigaction' follow collect2: ld returned 1 exit status makefile:501: recipe for target `oo/i386/temacs.exe' failed make[1]: *** [oo/i386/temacs.exe] Error 1 make[1]: Leaving directory `D:/gnu/bzr/emacs/trunk/src' makefile:432: recipe for target `all-other-dirs-gmake' failed make: *** [all-other-dirs-gmake] Error 2 From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 07 04:27:13 2012 Received: (at 12327) by debbugs.gnu.org; 7 Sep 2012 08:27:13 +0000 Received: from localhost ([127.0.0.1]:45374 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9tuC-00006b-HX for submit@debbugs.gnu.org; Fri, 07 Sep 2012 04:27:12 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:48033) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9tu9-00006S-C6 for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 04:27:10 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0M9Z00E000PM1S00@a-mtaout20.012.net.il> for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 11:26:50 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Z00D8V0SQGMC0@a-mtaout20.012.net.il>; Fri, 07 Sep 2012 11:26:50 +0300 (IDT) Date: Fri, 07 Sep 2012 11:27:06 +0300 From: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs In-reply-to: <83392ucmzq.fsf@gnu.org> X-012-Sender: halo1@inter.net.il To: eggert@cs.ucla.edu Message-id: <83zk52b5lx.fsf@gnu.org> References: <50494F7F.9080901@cs.ucla.edu> <834nnacqw3.fsf@gnu.org> <83392ucmzq.fsf@gnu.org> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 07 Sep 2012 10:26:17 +0300 > From: Eli Zaretskii > Cc: lekktu@gmail.com, 12327@debbugs.gnu.org > > The following link failure _is_ Windows-specific, stand by for a fix. > > gcc -o oo/i386/temacs.bin -gdwarf-2 -g3 -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-subsystem,console -Wl,-entry,__start -Wl,-Map,oo/i386/temacs.map oo/i386/firstfile.o oo/i386/emacs.res oo/i386/temacs0.a oo/i386/temacs1.a oo/i386/temacs2.a oo/i386/lastfile.a ../lib/oo/i386/libgnu.a -lwinmm -ladvapi32 -lgdi32 -lcomdlg32 -luser32 -lmpr -lshell32 -lwinspool -lole32 -lcomctl32 -lusp10 > oo/i386/temacs0.a(emacs.o)(.text+0x1066): In function `main': > D:\gnu\bzr\emacs\trunk\src/emacs.c:1129: undefined reference to `sigaction' > oo/i386/temacs0.a(emacs.o)(.text+0x1091):D:\gnu\bzr\emacs\trunk\src/emacs.c:1133: undefined reference to `sigaction' > oo/i386/temacs0.a(emacs.o)(.text+0x10ff):D:\gnu\bzr\emacs\trunk\src/emacs.c:1157: undefined reference to `sigaction' > oo/i386/temacs0.a(emacs.o)(.text+0x111a):D:\gnu\bzr\emacs\trunk\src/emacs.c:1184: undefined reference to `sigaction' > oo/i386/temacs0.a(emacs.o)(.text+0x1135):D:\gnu\bzr\emacs\trunk\src/emacs.c:1188: undefined reference to `sigaction' > oo/i386/temacs0.a(emacs.o)(.text+0x1159):D:\gnu\bzr\emacs\trunk\src/emacs.c:1198: more undefined references to `sigaction' follow > collect2: ld returned 1 exit status > makefile:501: recipe for target `oo/i386/temacs.exe' failed > make[1]: *** [oo/i386/temacs.exe] Error 1 > make[1]: Leaving directory `D:/gnu/bzr/emacs/trunk/src' > makefile:432: recipe for target `all-other-dirs-gmake' failed > make: *** [all-other-dirs-gmake] Error 2 Should be fixed with trunk revision 109919. (Why are there still calls to 'signal', as opposed to 'sigaction', in some parts of Emacs?) From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 07 04:59:44 2012 Received: (at 12327) by debbugs.gnu.org; 7 Sep 2012 08:59:44 +0000 Received: from localhost ([127.0.0.1]:45410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9uPf-0000tO-DS for submit@debbugs.gnu.org; Fri, 07 Sep 2012 04:59:43 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:59089) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9uPb-0000tG-VB for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 04:59:41 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 9EE4F39E800E; Fri, 7 Sep 2012 01:59:22 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3HsguNsQrf6V; Fri, 7 Sep 2012 01:59:22 -0700 (PDT) Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 3901C39E800A; Fri, 7 Sep 2012 01:59:22 -0700 (PDT) Message-ID: <5049B768.4010001@cs.ucla.edu> Date: Fri, 07 Sep 2012 01:59:20 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs References: <50494F7F.9080901@cs.ucla.edu> <834nnacqw3.fsf@gnu.org> <83392ucmzq.fsf@gnu.org> <83zk52b5lx.fsf@gnu.org> In-Reply-To: <83zk52b5lx.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) On 09/07/2012 01:27 AM, Eli Zaretskii wrote: > Should be fixed with trunk revision 109919. Thanks, I looked for other problems of that ilk and fixed them in trunk bzr 109921. > (Why are there still calls to 'signal', as opposed to 'sigaction', in > some parts of Emacs?) Thanks for catching that. Three of them were wrong -- a glitch when merging patches. Fixed in trunk bzr 109922. The other calls are setting signal handlers to SIG_DFL or SIG_IGN. For these, signal and sigaction do the same thing, so I left the calls alone, to minimize changes. If it's better, for regularity purposes, to replace these 'signal' calls with 'sigaction' calls, that's an easy and simple change that I can do. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 07 06:21:58 2012 Received: (at 12327) by debbugs.gnu.org; 7 Sep 2012 10:21:58 +0000 Received: from localhost ([127.0.0.1]:45510 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9vhG-0004UZ-Br for submit@debbugs.gnu.org; Fri, 07 Sep 2012 06:21:58 -0400 Received: from mtaout22.012.net.il ([80.179.55.172]:54687) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T9vhD-0004UP-CD for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 06:21:56 -0400 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M9Z00L005XXDH00@a-mtaout22.012.net.il> for 12327@debbugs.gnu.org; Fri, 07 Sep 2012 13:21:37 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M9Z00LWI6407K50@a-mtaout22.012.net.il>; Fri, 07 Sep 2012 13:21:37 +0300 (IDT) Date: Fri, 07 Sep 2012 13:21:34 +0300 From: Eli Zaretskii Subject: Re: bug#12327: Signal-handler cleanup for Emacs In-reply-to: <5049B768.4010001@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83sjaub0b5.fsf@gnu.org> References: <50494F7F.9080901@cs.ucla.edu> <834nnacqw3.fsf@gnu.org> <83392ucmzq.fsf@gnu.org> <83zk52b5lx.fsf@gnu.org> <5049B768.4010001@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 12327 Cc: lekktu@gmail.com, 12327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Fri, 07 Sep 2012 01:59:20 -0700 > From: Paul Eggert > CC: lekktu@gmail.com, 12327@debbugs.gnu.org > > > (Why are there still calls to 'signal', as opposed to 'sigaction', in > > some parts of Emacs?) > > Thanks for catching that. Three of them were wrong -- a glitch when > merging patches. Fixed in trunk bzr 109922. > > The other calls are setting signal handlers to SIG_DFL or SIG_IGN. > For these, signal and sigaction do the same thing, so I left the > calls alone, to minimize changes. If it's better, for regularity > purposes, to replace these 'signal' calls with 'sigaction' calls, > that's an easy and simple change that I can do. I think it's better to use a single family of functions, it makes the code slightly easier to comprehend. But I'm okay with leaving those calls to 'signal', if no one else cares. It just means that 'sys_signal' in the Windows sources will have to be rewritten to call 'sigaction' internally (I left it alone in revision 109919 because I thought it was on its way out). From unknown Mon Jun 23 13:07:47 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 05 Oct 2012 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator