From patchwork Mon Oct 16 04:34:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 23597 Received: (qmail 73535 invoked by alias); 16 Oct 2017 04:35:00 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 73502 invoked by uid 89); 16 Oct 2017 04:34:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: NAM01-BN3-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@cavium.com; From: Yury Norov To: libc-alpha@sourceware.org Cc: Yury Norov Subject: [PATCH 2/3] Consolidate Linux sigprocmask() implementation Date: Mon, 16 Oct 2017 07:34:06 +0300 Message-Id: <20171016043407.1142-3-ynorov@caviumnetworks.com> In-Reply-To: <20171016043407.1142-1-ynorov@caviumnetworks.com> References: <20171016043407.1142-1-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: DB6PR07CA0197.eurprd07.prod.outlook.com (2603:10a6:6:42::27) To CY4PR0701MB3827.namprd07.prod.outlook.com (2603:10b6:910:94::33) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 66ca08f1-c8b5-46d0-f1e3-08d5144f3f81 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:CY4PR0701MB3827; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3827; 3:WbVzLMWfHw71wxPFfKOVPwEx9Zr9DAe1tYHCAng96YB5ZP+FIb3odMYx3vzRqe6MDhjmEEInNzjKZgcvoNJeIPoqQVBqLBBQ/qGyXlAFtYTnjkBkaIfmO52FcTAvorobgIZ0pfr6lYdF83tQ7eohz//vkW1zrr8zRYzsV3LFjdmSOU1a/kE651pNJszWBKz+W2KY6HKB4xZckzEBI9gNOJf8Wck/wcrBKB6PTqahotvlS2ZDrzkBRzvGFlOLHfgk; 25:w1iFZPkqlBpNGFuQ0Sg3KC9cwlTSdmI3Vj7pArtW1jOmnjRabt4t1tY5GOPhPQIiBdATXHehi8N91iefVSEO2PtEoK+eG2bHWFx9Fs4hThStAqfP834BWTYhRJSgiYXkG8VdxE9oiYvhN0TZ+TKio37go8pQgs4iUS3tYweUofE+I25yP+XLlhFGZ+FoePlTaPjom0Eu8CothcG7Esb+fuZ6Oqm4sVwbtUvPyXn4zIQoL0jcuBEOA79d/VcH4jEzIW+nDKua0sU9JxvKhPIj3L6C5k9n9YFFysBJCgALUPqD93/iTIs5XCMGopAoJPU53E+HZ8O0qgHXA/0LSKky4w==; 31:KWknVDXyn/6HYYCUQAC/MyVK/e9cotg+TvgTehYZHP7bE1X2riRKsdG9TRR8JBmkRugqsCZUl6OXNqub07V36CFW5D845IkX6S26kY3yrIT/L6xTt8klXkwYvT+YummnubLPnPukVP9X4+qNB9MENvZPW8rO5eCcfdkpuiR/R5HaU9g63rqC9DM3tOkkas+9SQ010lnCYgwMjXvm9XZq6/gyls3m9gkiJA7Rrn1iiZQ= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3827: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3827; 20:euW9fHoC9yKdsnH83oG0K/gjd1ATExwLIcgGEdhqkfmUJTUl3R3+vZkrGuTpp8HXgfzGgmf2uTLFT9RToS1qcWWBsH1qMuX3p+x1rHh/9d9EJudjKr9CfqMyMeFqLxoxYB6WXMZNGaTX2t2jbBs7kYqeduHnRcs2YNXMalOcWDua/Zyh54Qco4TOoWAYvRBg8b0ruJFkjkBFgyimVkpugRFc+uwTAwevAPyGV5nz0xnICaD9rmg27APepsfakTFrOHYfJnrE1/7RnCXCoE7slv8nLvSWDlACDU5Jhy/GUGUCvmoMlajwvyT0GSzqjrKhSvpqxJ5FR+RkfoXyV/I2CXq5RnGD9rRsxkV7Tt75a8ySH0xrcIhMxpHPbwVhm0NHz/EgIrMXJppY7mgipCf9VNZwuzVN52fF14ZuiitknktLFKKoz3TO3F379TgMhO2j6cq1s+YnQDr2U1ITeFLba26B4kQD+JmVIlN/D/akGIy6+M58PzRbFxkKw3baIvmlkpimKJdNmDJ6Z5/SI+h/LayI7f9FHBC8L9hD6YGc9wflzGjh27oU0TV+SE2yg1q58ynyD83ntXYOTjj4vMQkFJlRtJkboGKRrSJE3qWqkCg= X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123555025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR0701MB3827; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR0701MB3827; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3827; 4:UMUdbk1Tjl1L4CZ3BllbbW0nCuA/LjstPM0Qeqr1M1ymlfgxfIj5wMGI+cbEXLzS6LUDpHcNfuDIb78XWsX7iZOZZyhdnDSTTn0Oq9nOBtzjC134+6kjCQv1AD1jyjZOpboIiTucZyBxdHhtL8yv4qe7CE6wkDLoV+Dvj9LmP7NnVTDTULhkpa2toSZ9WatT8B5cy5lk9I70HPn9IDC/SxbAjgLkwWhro/hCZvKxAj2U7t3TePfgs+UuwxRhxhBHYKZg6mtU9xQqYfhGqnu/+TZv3k1MMUo1ViRwFdN2FTUNHY9iN4G4T3mBzad4LiQGonqedKfLVPN3J844znYaNA== X-Forefront-PRVS: 0462918D61 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(376002)(346002)(189002)(199003)(6306002)(2361001)(81156014)(81166006)(8676002)(97736004)(101416001)(2950100002)(42882006)(33646002)(6496005)(6666003)(6916009)(76176999)(50986999)(53936002)(68736007)(16526018)(105586002)(2351001)(50466002)(2906002)(3846002)(6116002)(76506005)(478600001)(8936002)(1076002)(72206003)(106356001)(36756003)(6486002)(7736002)(189998001)(5660300001)(48376002)(5003940100001)(66066001)(50226002)(16586007)(4326008)(316002)(25786009)(305945005)(107886003)(47776003)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3827; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3827; 23:CF176k9jnybxJY2ppt+91CCjB1CvxMjTdjCfdfd?= =?us-ascii?Q?8xFclJJ8vDIV3QMg+MIF4FsLbfXTifiXR9JZSuQNXsTk2V2Xf+uXWQ9Ab2uY?= =?us-ascii?Q?6+aojS26kjdqR9mO/1H5LwBeX7CHPtJZltsQmmJjRyPS2qbzJX26jmJkhkWp?= =?us-ascii?Q?rav2X896u6XseuIKimqxfwHW1EfWkml8rnMF3l7msIHs0NUxqWlEf4Ax4+Ea?= =?us-ascii?Q?mM8/A4c0QNNUsTT9G4gxWNVIxKPaoYfoSe5JgjMqbOrwN2Nb6t77e87q84Fg?= =?us-ascii?Q?VPZD5lDk/R8jV9sUmKxcjW4kY6amYHDQMCi27wivRX0xOI7Q2pHHIwVLfXd+?= =?us-ascii?Q?x8OEpjyHa2a+yjywmfvvrZLaNjDlo0PV0mn8rJIRSwtv/t1bMY12aSwLja0q?= =?us-ascii?Q?+h4S36yAqpql3Sxl80T+3vN85W/XepS7A9eqHd9QpIsmKeeh0/a3zZNE9EZ0?= =?us-ascii?Q?r+uATfvQ0dVnEmSlnPxpS7mf4s+32kd+ay3xne73pISRSuvNzLp0COxZlvLI?= =?us-ascii?Q?NEC3AWsBWRhSEfJ+0+nZcGPMA0fBj88fe9h4cG8Hgzn37Vt58s5qYhGCazSS?= =?us-ascii?Q?tQyAMcjqu/JTcOXvhvZXLIC1osqj1ATjBIzO2wuk6j+6avF8gFqC/2K0eylL?= =?us-ascii?Q?cKCJIASW+9Cg2xRAir2GU3jGvmHA7rVVhONmJYT+rB2GRWLqI2bdiNisoQUq?= =?us-ascii?Q?0gKDRqMnFpKeIhp5ZUt6Z6hZzZVGoTgo+RQYzXQiZ9OTFlt/VgoTa+Aqmcs3?= =?us-ascii?Q?Q5hjPTZePDpoGMeHeIsbZwaRaXVCGgREKr7v0wTDgRyW8p+yr5QD5fXCJNpd?= =?us-ascii?Q?5VaOo+OAx+5JltSby+E5MHeZ80l/UNn1U3NYkFuhd+QdiBKRsIchZ7PpZ5Rc?= =?us-ascii?Q?I+2CV8A3XtNHDGauOEA4On4kiRLdLYe9L6ub061oeMfVjcAl8aTQrr1biRBP?= =?us-ascii?Q?tt/NzwFKlHfHwlGn7ONfIS7LEenK3dAso0omr+BFgepM4VjyLt+mgfVNNRGx?= =?us-ascii?Q?JYEY6xmiOSfFl7o76kJwq4RjAal8QkZI7XgMSunPrMSF4aVTrzkNo083lbWb?= =?us-ascii?Q?dEloKtqWdwkUIYVIvoecsSX8X5W5eFzdxOwN/9NDMrrOmfd57uAcKCzaTFJM?= =?us-ascii?Q?PhUpG9RnDDGWVb2gFTLFdw/UpiRT/lPgEsUNy05BNZwJDMK0pbmft+7Gzu9m?= =?us-ascii?Q?lf8XagBlPpxLvqZJ6Bjt6lHS4Dg2zNzSeOZZOp/VUnaKXHjvhcKg2HIG3YA?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3827; 6:69WqrEeSFHdbklsobAcW0qtNlhz5/V2fsvYJzh04w4tkTfKpWYyFn6jPo8dWJGf2gnNbqW9byZsOD07shXUrnz/gl7S9e1H9syh9GzFWh1DmhN3As49WUm3eDyRBRJf9V/qmun8YSSxeECVT8Me7qos6yP7XdCIWeKcTljz7u4e7N4jkJsnfwFGRJ9e8AFqiEUxKGCuUhbuApZuSF2syFQh95gicbHZncTpXDWmJXUnwbxtuxRJf3N0lV3xJZJRX9GSPULE0KzV1tL2twL5Fe0810zU0Dsedtg5ZaXHpNtn9D+Pod11HE+WWU80f+SZNOQk/bwHUxWMc0Wrf+tYnng==; 5:VZBTXeTWAc8G9Tq+psR/kYg24LReQTmAaRuvFPz/g7009dFQYDV4oHCs/QSv9EEOuXlQXPPLEBWAPwhtMjs+X/mFDsYy3NPmNUbNoM2RsRr1wU8dhA5EaG2SCpfMb9NAWDXmqXx/Gv/10tNd4rajhMg06p3VeRJZrxFzVqFc5Y0=; 24:YX0wfrwUmXEc3wFsHnvSQzfFXuuskiYgl3RBn7ujir/0K1dk2k3NqkZceCQ5/cXue56r1yW3pJph0+fZW4RNFnA/COM1w6qgGQ3o8r7cq9s=; 7:wXrzuwzOv/0IR9l4DsicI9BiZLKIXNceU85S3x8Reg9sntHrE8x5bDlVQ1vXoD90TLKMghCH6uDY1DM/6TJKi3UhmfJ0gPjvxCKDTHaGoLfdsNUINGD50bwXyN/GLS96cldrfQUbb07LCzK+KHyUnShIu7HmXKhPW7j2Rh8YJy1/qZ+FBiioVKmNoMC4LpAE7SQMelt21KkxWdpXJ9ovx4+9CyjI0suVdWvq/irp05s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 04:34:53.8089 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3827 ia64, s390-64, sparc64, x86_64 and alpha ports has their own implementations of sigprocmask(). They all but alpha do exactly what generic sigprocmask() except the check and clear SIGCANCEL and SIGSETXID flags. In this patch, the NEED_CLEAR_SIGCANCEL_SIGSETXID option is introduced and disabled for that ports which allows to swith them to generic implementation. * sysdeps/unix/sysv/linux/sigprocmask.c: Introduce NEED_CLEAR_SIGCANCEL_SIGSETXID option for consolidation of Linux sigprocmask() implementation; * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Consolidate sigprocmask() implementation; * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: Likewise; * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise; * sysdeps/unix/sysv/linux/x86_64/sigprocmask.c: Likewise. --- sysdeps/unix/sysv/linux/ia64/sigprocmask.c | 22 ++-------------------- sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c | 22 ++-------------------- sysdeps/unix/sysv/linux/sigprocmask.c | 11 +++++++++-- .../unix/sysv/linux/sparc/sparc64/sigprocmask.c | 18 ++---------------- sysdeps/unix/sysv/linux/x86_64/sigprocmask.c | 22 ++-------------------- 5 files changed, 17 insertions(+), 78 deletions(-) diff --git a/sysdeps/unix/sysv/linux/ia64/sigprocmask.c b/sysdeps/unix/sysv/linux/ia64/sigprocmask.c index 920c5fd052..9e95e52d58 100644 --- a/sysdeps/unix/sysv/linux/ia64/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/ia64/sigprocmask.c @@ -17,24 +17,6 @@ License along with the GNU C Library; if not, see . */ -/* Linux/ia64 only has rt signals, thus we do not even want to try falling - back to the old style signals as the default Linux handler does. */ +#define NEED_CLEAR_SIGCANCEL_SIGSETXID 0 -#include -#include -#include - -#include -#include - -/* Get and/or change the set of blocked signals. */ -int -__sigprocmask (int how, const sigset_t *set, sigset_t *oset) -{ - - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); -} -libc_hidden_def (__sigprocmask) -weak_alias (__sigprocmask, sigprocmask) +#include diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c index a8010e7f14..227b512910 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c @@ -15,24 +15,6 @@ License along with the GNU C Library; if not, see . */ -/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try - falling back to the old style signals as the default Linux handler does. */ +#define NEED_CLEAR_SIGCANCEL_SIGSETXID 0 -#include -#include -#include - -#include -#include - -/* Get and/or change the set of blocked signals. */ -int -__sigprocmask (int how, const sigset_t *set, sigset_t *oset) -{ - - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); -} -libc_hidden_def (__sigprocmask) -weak_alias (__sigprocmask, sigprocmask) +#include diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c index e776563336..94d4d0945f 100644 --- a/sysdeps/unix/sysv/linux/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/sigprocmask.c @@ -17,19 +17,25 @@ #include #include -#include /* Needed for string function builtin redirection. */ #include #include #include -#include /* SIGCANCEL, SIGSETXID */ +#ifndef NEED_CLEAR_SIGCANCEL_SIGSETXID +#define NEED_CLEAR_SIGCANCEL_SIGSETXID 1 +#endif +#if NEED_CLEAR_SIGCANCEL_SIGSETXID +#include +#include +#endif /* Get and/or change the set of blocked signals. */ int __sigprocmask (int how, const sigset_t *set, sigset_t *oset) { +#if NEED_CLEAR_SIGCANCEL_SIGSETXID sigset_t local_newmask; /* The only thing we have to make sure here is that SIGCANCEL and @@ -43,6 +49,7 @@ __sigprocmask (int how, const sigset_t *set, sigset_t *oset) __sigdelset (&local_newmask, SIGSETXID); set = &local_newmask; } +#endif return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); } diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c index ef7d7feb49..0db24d6fce 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c @@ -15,20 +15,6 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include +#define NEED_CLEAR_SIGCANCEL_SIGSETXID 0 -#include -#include - -/* Get and/or change the set of blocked signals. */ -int -__sigprocmask (int how, const sigset_t *set, sigset_t *oset) -{ - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); -} -libc_hidden_def (__sigprocmask) -weak_alias (__sigprocmask, sigprocmask) +#include diff --git a/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c b/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c index 1610ddf47f..d3179ebea5 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c @@ -16,24 +16,6 @@ License along with the GNU C Library; if not, see . */ -/* Linux/x86_64 only has rt signals, thus we do not even want to try falling - back to the old style signals as the default Linux handler does. */ +#define NEED_CLEAR_SIGCANCEL_SIGSETXID 0 -#include -#include -#include - -#include -#include - -/* Get and/or change the set of blocked signals. */ -int -__sigprocmask (int how, const sigset_t *set, sigset_t *oset) -{ - - /* XXX The size argument hopefully will have to be changed to the - real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); -} -libc_hidden_def (__sigprocmask) -weak_alias (__sigprocmask, sigprocmask) +#include