From: Yousong Zhou Date: Fri, 24 Mar 2017 02:37:08 +0000 (+0800) Subject: gdb: fix invalid sigprocmask call X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=46e390322a58bdc632ee43fdf9d14115dac26e7a;p=openwrt%2Fstaging%2Fflorian.git gdb: fix invalid sigprocmask call Fixes FS#637 Signed-off-by: Yousong Zhou --- diff --git a/package/devel/gdb/Makefile b/package/devel/gdb/Makefile index 159a635774..84e7926bf8 100644 --- a/package/devel/gdb/Makefile +++ b/package/devel/gdb/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gdb PKG_VERSION:=7.12.1 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNU/gdb diff --git a/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch b/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch new file mode 100644 index 0000000000..7090db170a --- /dev/null +++ b/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch @@ -0,0 +1,43 @@ +From 56893a61aa4f0270fa8d1197b9848247f90fce0d Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Fri, 24 Mar 2017 10:36:03 +0800 +Subject: [PATCH] Fix invalid sigprocmask call + +The POSIX document says + + The pthread_sigmask() and sigprocmask() functions shall fail if: + + [EINVAL] + The value of the how argument is not equal to one of the defined values. + +and this is how musl-libc is currently doing. Fix the call to be safe +and correct + + [1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html + +gdb/ChangeLog: +2017-03-24 Yousong Zhou + + * common/signals-state-save-restore.c (save_original_signals_state): + Fix invalid sigprocmask call. +--- + gdb/ChangeLog | 5 +++++ + gdb/common/signals-state-save-restore.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/gdb/common/signals-state-save-restore.c b/gdb/common/signals-state-save-restore.c +index d11a9ae..734335c 100644 +--- a/gdb/common/signals-state-save-restore.c ++++ b/gdb/common/signals-state-save-restore.c +@@ -41,7 +41,7 @@ save_original_signals_state (void) + int i; + int res; + +- res = sigprocmask (0, NULL, &original_signal_mask); ++ res = sigprocmask (SIG_BLOCK, NULL, &original_signal_mask); + if (res == -1) + perror_with_name (("sigprocmask")); + +-- +2.6.4 +