From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 72383 invoked by alias); 4 May 2017 09:36:03 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 72263 invoked by uid 89); 4 May 2017 09:36:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.6 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,SPF_PASS autolearn=ham version=3.3.2 spammy= X-Spam-Status: No, score=-25.6 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,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Received: from mail-ve1eur01on0104.outbound.protection.outlook.com (HELO EUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.104) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 04 May 2017 09:35:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=5i5b27NpNcZJIa56kGxDL6O/ICZgn4yhBhv3KSI9Q7Q=; b=kW/ewm/9EpyO6KydsIoJt17SCHNnN6bsy2i9k9ZaCAAUwBNan6cNj6codaFMCI0j2hu/pjyO19YJyTSAoFO+EmCBI6EkO2p/+EmPyzm+0i2PhEdlWUMhPk3jlI1uCqq4Ap17rPyj6Ej6A5kdlPlCktdlUa5OL9fekFLfOM7qsHg= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=qt.io; Received: from [10.9.78.56] (62.220.2.194) by AMSPR02MB230.eurprd02.prod.outlook.com (2a01:111:e400:8022::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12; Thu, 4 May 2017 09:35:56 +0000 From: Ulf Hermann Subject: [PATCH] Add our own tdestroy if search.h exposes a node_t struct To: Message-ID: Date: Thu, 04 May 2017 09:53:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: HE1PR0401CA0075.eurprd04.prod.outlook.com (2603:10a6:3:19::43) To AMSPR02MB230.eurprd02.prod.outlook.com (2a01:111:e400:8022::17) X-MS-Office365-Filtering-Correlation-Id: 6612a552-f194-4675-ec1f-08d492d0f766 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:AMSPR02MB230; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;3:kYpW47Iajfb+L9giF1Do0cZNF/cB4KK7H39SMSdvBiI+0Owg2mhFtqkm2w98Bk49yip3xkpB3Ws1zmxVJexWpJlmugb3ycbv8JryGyEmjjLYd0eAFeZ2XXryjvOyYTWPe2gY6aU1OMF9dSwC9q8iAwwfwuAGtQBxN/u530A/9AqHTvh25mDh7ohdZxYBd/S9+69SWOCuGB5lUZM6OrjijXhACBGWd79l/Y/xlg7h9Xc3y+eRPRiKgNZLvAF+s5xEsbogEWN6g2sLEjuP+o+v3fI4Yye/yXTN2GVJbp+h5prgG5D+rnmVZthANoO0JPYPsa82LnUaI5ouV8CTBzzKIg==;25:nzlJHAlGCMP1W1GMVcPyMtjoQlUMwUllovN4im9WfazMsG1a8nF6Gkh17hZcrDH4mHaTcNbWsiqynpxDmoK892SS5gomPd2IRN9CIClptgGKaXVzWwEtOBxAb0rYHzUG5DOPIegEBHbKHkBuAEzW/8zb3crOofq1Nw+ETl52wgd0E1OMQDlvfygrfeIBbDo2uUrP34Q8Xy1135ED6Ty4hg1fG+Zn0aRVR9iHQxPmIO0pCe3wS/lxIu4qCKlv6evHLY2SwLAQo0q/6aRJKTW1OlGlvQZ/bwZzeQta139whLEpf1YQrxIeVXFIesaB6rLOFjs3tVUzvI13vivaS0RvM8voRrF4KAWETTDJRnLsFq5CEEkkiBoMsVxAggK/Rk1Y3LDcf9h5oi2nNpSFR0l3ycLENizVwtpltARYvPAo3iOeD/hvYe9qoDv22rFTOT0tSwjT+lGWqUVb2XuKDJJfsA== X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;31:rmhStdetr1uEjyZ/9wHv3vNZ8As/QcODSVIp+rR7w8G0DmF9XkfXat8PkWnEl9vb6CVvIszmdDx/rvJrXQp7Cu2+2hGdSJEMTRSJHQkgkkL+dvl85npRDRT80Jaj8nwiejOOIbt/pOCp2dezWzx6GqbTcnfIE4qremuBsHxAQ7CJssrms/ljZ2MeGS11aVts4N6RIbo1DFgvrdzT5jK5jb3Cgu3is3Zsb0oKOnQ+v0LIEEG0Tmi6XigfPm1g1OkV;20:0IutqDnR6TRMJarQUFuU5cAPvZgfpVWnn2okioqsPSjBEHvAWHEcRCQFxgl9V9kfU66BNuKMduYBq2kZokXaaH7jFFkwvAgwL3NjfSaO+avPjKRKLoWdcqocVe7MrgT6xzhQAqmu8JdlzUDuZ6BaX9Gfk8N6uAGC+XiOV7P3CXl4a76cXKHheSeEqfOU78qVOyZXfyLfE2o1PUz6J7ev/Cj4mZvTIRGnKbZdYiSjb1cZepcw5GxMhUGzPlXNVcNJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123558100)(20161123560025)(20161123555025)(6072148);SRVR:AMSPR02MB230;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB230; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;4:5YruQNYzvTYYpAp4H17jtz6nDRdATvmOOgskDNIohYNmUkoGtpGOk/D0CCNtEMS3eFAKrY35XJFGk3k95kLZ7jrp6FvfRcdz/WSRVCouGL5TsDBat4SMi09xSLEg7W1nz9q/BMW3+h3iEmtUZ5MQZp2CFcaXEyi2PYx9r/J1K/8tyqW0FLO7ahxR5X5tlI+vmACACz0DOD+rfsJmoPouO5iLKu06XhFjQbfkk4zTVkGj2QxKeB+nLuq5wKBWlVFHX9WlNAsK/pa6Z3cMSjlo+iT677coGSVQ4WjhfL4FPtrnXP4tWbUWEisk4mwn7Yi5c5K2s9pWlajNF0L2zNbC9yjmk+LS/whyrTpaQ92w/98+9CvYJM2bxlGfNKKa5/y+Rz//K7uTsb4wyAvTPeZWpmhfqoZBRBq/bPZ4vnh3BndRFJQk/cTGsLzNA16702nXTuDSdZdy01Al3zDi/GTFIKUHBJ7LRZtOIDTgWDVTEI5eJExnxL+fSu1a6OD/uiUwyOSwSWUWK4zULNJfpaCNJSgwdytnTuLryoVufdx0dAG7nJ5TpOFpWyJJFL9vm3+3dlqpYCpNgFx3CNxe8EqgmpN6E7G5Shq2/O+X7AQsvB1gDcgRnP2u+zPtapCg5BLZHeh3D3f8ItFoMjac/0rJteGcWQgTz6O5khP4V6R/8+7eM0e1HwkGZLQiCb7tShzyJv8DuV30liG7YIq9c9O3/BMJpOMtBE8G50c+oiZ3e18kUeeEo2JJupM6U53olxdMYIG+EYRdvOb+frr6hzqWNjwAcXeBHvYJOViR477ih+0RHjrGmuhDH/WAssbsdm5MCBdUUJa2pL/P/+fV3ANb3KhqItWlwgsgq1BOyoG8hvs= X-Forefront-PRVS: 02973C87BC X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39410400002)(39400400002)(39840400002)(39450400003)(377424004)(6486002)(77096006)(4001350100001)(38730400002)(8676002)(66066001)(6116002)(50986999)(54356999)(110136004)(3846002)(25786009)(81166006)(47776003)(478600001)(2906002)(230700001)(2351001)(189998001)(42186005)(31686004)(65826007)(5660300001)(50466002)(53936002)(23676002)(305945005)(7736002)(6916009)(6666003)(83506001)(64126003)(36756003)(31696002)(575784001)(86362001)(33646002)(74482002)(6306002);DIR:OUT;SFP:1102;SCL:1;SRVR:AMSPR02MB230;H:[10.9.78.56];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTVNQUjAyTUIyMzA7MjM6emZCVGsyZFNKN3dFR2pVMWNXL3RFMU0raVl0?= =?utf-8?B?RGxJZUh4aTlZem1EampoalBDM3pKUjNPODEzQUZ3ZUtJeGp5YkY2OVlyOUtw?= =?utf-8?B?bE55Sy9qQUpXeUxJVERtN21SNFA2SVNQN2dYVmpla3M2RGpxOGhGMzZGeWZM?= =?utf-8?B?ejl3emxNcktsVHBPQ3lPcU5XbGd4dTI5bno5aTVmcC9ETkZtSGVpOGZScC9z?= =?utf-8?B?QlpTa25VaWdKRWVZWDZIenhOZlVrNi8rYzBtNWJxSGVoL0dWMjRVcTBCbWVl?= =?utf-8?B?a3djUmJvSks4ZkcycEd5TW1RcEovczVQY0YvVUZCa0RlNlQrTzZZcmZubzhB?= =?utf-8?B?T1RsSldGK1pSUC9NM29QVjdHQy9GTXR1ME9sUmt5ZkFObmxIR05iV2pwWTN5?= =?utf-8?B?L29CQ2ZaYWg3dDFFcWdzUStqWXJlb2xkNlJ5Q0Y3L2lEMEh3VFo0MDNKMnNv?= =?utf-8?B?aHhEUmdKSlZpT3F5aTREbnprU2JIRzd6b0VTRVVsZktERzFOaXhOUm1NTkpu?= =?utf-8?B?WFgxMFhQbmozUHNZUGhjeWxqNVhNOUEyUUpDWVdDSEVTaWFHbE5GanNKdVpV?= =?utf-8?B?bTB3SU5tMUxqUkpvSXBUdFZ1MldYM1Y0ZVZocXJITHJyZXk5S3JCRDFaUjQ0?= =?utf-8?B?Ri9QYjRpVHlySlpRSTh4dW9qczVGWGw1Q1Uyc2YvREx5eGpTMERoTGxwaXI5?= =?utf-8?B?Z3NicHpRbVdVYmJ1a3ZTbG9IVUdkaEJScU0vWkNQZUYzWnNvTytJMDZjQWU1?= =?utf-8?B?bnlJTHUyYTZlK3dtTmw5MUZxaGdPSTVPZFFMbVZOa2dDc0lUdVRYSkV2ZHN5?= =?utf-8?B?UG4wSTRiWjJwQTBpL2NYUHJJeVIxdHFHUXA1T0lNMVNmeHkwcGtwNGJ5U2tZ?= =?utf-8?B?bWNwdjdBWFBLbDNSbWtJMUx5a3dqd1dzcDN3UVpzeENuWGpzcS83Y1NSWHpK?= =?utf-8?B?K2ljU2NWVm10TDM1TEt1TnYySk15Q2ZqclFqVmRoUUgwQ1kzTHN5aEhhNFBL?= =?utf-8?B?QXk4S0FZcno1WEdtdGlWb3pjVTFMei85MThQNUlXbzBwQ3B1UGNxNU1aamo4?= =?utf-8?B?bEIrUDdBUWN3SmlNMkFURkt2djVKWmR6TzA0eVlkRzVKSG9HZ2xxUTlkTXFw?= =?utf-8?B?VGZ2a0JnN2N5aG9kejRkNjdqcVdBM2loTCsrQ1FMdldSY3RBN1JrZlkxeUoz?= =?utf-8?B?anpmNVhqZVNldzJkckxpajJSNDJza2hDMHg4RVMzY044Mnp4SGE3RWs1a0dU?= =?utf-8?B?TlZlVmU1Tk5zTnJTL2djamQyaHVZb3daMUdYN2VsUGpmQWtMeEpnM01CZVcy?= =?utf-8?B?NVoxazNGSXNOanpZeThXK1F0MFpmcG5ObGMwcFBXd2dMWS9XR1VDRDBLajhY?= =?utf-8?B?VGZpZjR4VUtzR3h0Z2hyV3pQdWltNUs1aSszS3JCQlNTS1VKdWJPTzNkRlo3?= =?utf-8?B?c0VNdkRCdUp1TVFxR2VvT0YyaG9rWERISndxUk5iMkpXWW1GT1J6bU9XNFBJ?= =?utf-8?B?OGtQd1dkZzB3ZEs2cVVVdDIrVjNqamorRXM4cHFaUUNGUWVHK2NBMGhzcXYw?= =?utf-8?Q?l2UPWOwxLy4poX6Y354ndeZDJVPbEmgM/7onzA4n2cE=3D?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;6:V8FzosV7BHByrstbCf4sARuR2aP51uH1OmbR9CR5tohurH4njTsj6PFK9yFF290wy9V7xMOhmSCuPvbVDeEZbnehiIZ8RbZdPxCgYruqtHa+REcLzSxnvVcHBBGbg1MQhoXUQYM+fP3VNhw+9IQd35D8k0AIAaTXNiGBQqLWruZqo3bJQnRckm+N7ctM9beMaH0qxyEb42cF/YgVahIlNPPpDl65B4iWp2h8ed/DccGXx57g2U8Gv8oAn1bQiSLEJtLsY0dSYRu/QtkLC7mi4FnNXTlU8y8NzCzKjnaC6KT1t9vq2lZKYMcVJTXsVQkWmzZjPboNiH19bLFK294VWMrNYoHwmSM3F0bgH5eS0Yq6Ko6l9Hev9DEO/Jr4Lo6d4Q/c0WXYYLxteTw1lOTn6/nMp2VYmtJXRTKCK3wewGJsY718w9HBwxXL6n93j4KbvWxXYyUU6Ff0RmkYn5C9dYqk3+yG5n7qwcVEE7nQXczA+HAPA1vx1EJV2m9mOCVn3awYNyUlqCYdfv1ba+Y7Ew==;5:C6h3SRUscudIXwoZuUcNDagxn8JuZ6MkbMcT7CabZKQM5sfnKRsYTh2U9/esRbY7AmE3/sV75sS+VBcijDZGEEj7UIX6+vNG4ljor3xi8daop7jSL9MgfgnLCSjFK2V+2/u8uo3HRSdmw7Dhr10RHQ==;24:r7xchH2NmzHwt4rQ29mh3gcYk8dvMcUZkPeKxNnDvsEvyge79/HkCO/ng62cYkDFl47yf97lme7xQUXwZWHbvkqoGOuxcCAWF9blSusk9rk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;7:ukv6g1RM9L2C/SLAg0UdQJdupUsXB3LkTokkqvaXNSojJwhG5mYQOBqOlJxDen58DvHD+wb5QwG7JwzGA+e7g7MH19u1gqI7HZ2oVGXMu8qqgcYKoLNjT81nvHvYwbnv+ehEUIm4/cfs3MFnsmT/W94LRpGjO5fdpRuxOl8iwr/UUo1oupSQ4XjECls82tMCQ8WXJXlBGjrqBZaDOD7Ob/UFQcGL8vRk6SvH+oXKWb6akjr735xznkxIYMzSDkK5aNOsCFUqdfbDEIWOZdz0p+69CDpRGTT5Vmw3nlnYvRxiKp/Lqg9/80iOIzBbeRHN5FE6Zp4OS7cVIDlorpa10Q== X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 09:35:56.5291 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR02MB230 X-IsSubscribed: yes X-SW-Source: 2017-q2/txt/msg00163.txt.bz2 tdestroy is not necessarily available from search.h, but we need it. gnulib cannot help us here as it will detect search.h to be available and functional in that case. However, some search.h expose a node_t struct which can be used to implement tdestroy. If that is the case, add an implementation to libgnu.a. Signed-off-by: Ulf Hermann --- ChangeLog | 5 +++++ configure.ac | 21 +++++++++++++++++++++ libgnu/ChangeLog | 5 +++++ libgnu/Makefile.am | 6 +++++- libgnu/tdestroy.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 libgnu/tdestroy.c diff --git a/ChangeLog b/ChangeLog index aa0759c..5a86247 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2017-05-04 Ulf Hermann + * configure.ac: Check for tdestroy and node_t. Declare tdestroy in + config.h if tdestroy is not available from search.h, but node_t is. + +2017-05-04 Ulf Hermann + * configure.ac: Check for unlocked I/O functions. 2017-04-28 Ulf Hermann diff --git a/configure.ac b/configure.ac index bfdc53f..88b9d0a 100644 --- a/configure.ac +++ b/configure.ac @@ -610,6 +610,27 @@ AC_CHECK_DECLS([feof_unlocked, ferror_unlocked, fputc_unlocked, fputs_unlocked, fwrite_unlocked, putc_unlocked, putchar_unlocked], [], [], [[#include ]]) +AC_CHECK_DECLS([tdestroy], [], [], + [#include ]) +if test "x$ac_cv_have_decl_tdestroy" != "xyes"; then + AC_CHECK_MEMBERS([node_t.key, node_t.rlink, node_t.llink], + [have_node_t="yes"], [have_node_t="no"], + [#define _SEARCH_PRIVATE + #include ]) + if test "x$have_node_t" = "xyes"; then + AC_DEFINE([USE_PRIVATE_TDESTROY], [1], [Implement tdestroy using private node_t from search.h]) + fi +fi +AM_CONDITIONAL(USE_PRIVATE_TDESTROY, [test "x$have_node_t" = "xyes"]) + +AH_VERBATIM([USE_PRIVATE_TDESTROY], [ +/* Declare tdestroy here if it is not available from a system header. */ +#undef USE_PRIVATE_TDESTROY +#ifdef USE_PRIVATE_TDESTROY +void tdestroy(void *root, void (*free_node)(void *nodep)); +#endif +]) + dnl Check if we have for EM_BPF disassembly. AC_CHECK_HEADERS(linux/bpf.h) AM_CONDITIONAL(HAVE_LINUX_BPF_H, [test "x$ac_cv_header_linux_bpf_h" = "xyes"]) diff --git a/libgnu/ChangeLog b/libgnu/ChangeLog index 3394de6..7b146b6 100644 --- a/libgnu/ChangeLog +++ b/libgnu/ChangeLog @@ -1,5 +1,10 @@ 2017-05-04 Ulf Hermann + * Makefile.am: Use our own implementation of tdestroy if we have to. + * tdestroy.c: New file. + +2017-05-04 Ulf Hermann + * Makefile.am: If GNU basename is unavailable add our own implementation. * basename-gnu.c: New file. diff --git a/libgnu/Makefile.am b/libgnu/Makefile.am index 32c9aa7..99abab0 100644 --- a/libgnu/Makefile.am +++ b/libgnu/Makefile.am @@ -36,7 +36,7 @@ MOSTLYCLEANFILES = MOSTLYCLEANDIRS = BUILT_SOURCES = EXTRA_DIST = endian.in.h byteswap.in.h sys_mman.win32.h mman_win32.c sysconf_win32.c ar.in.h features.in.h \ - stdio_ext.in.h fts.in.h basename-gnu.c + stdio_ext.in.h fts.in.h basename-gnu.c tdestroy.c CLEANFILES = SUFFIXES = @@ -108,3 +108,7 @@ endif if !HAVE_BASENAME libgnu_a_SOURCES += basename-gnu.c endif + +if USE_PRIVATE_TDESTROY +libgnu_a_SOURCES += tdestroy.c +endif diff --git a/libgnu/tdestroy.c b/libgnu/tdestroy.c new file mode 100644 index 0000000..d14b875 --- /dev/null +++ b/libgnu/tdestroy.c @@ -0,0 +1,47 @@ +/* tdestroy, on systems where node is exposed from search.h + Copyright (C) 2017 The Qt Company Ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#include + +#include +#define _SEARCH_PRIVATE +#include + +void +tdestroy (void *vroot, void (*free_node)(void *nodep)) +{ + if (vroot == NULL) + return; + + node_t *root = (node_t *) vroot; + tdestroy (root->llink, free_node); + tdestroy (root->rlink, free_node); + free_node ((void *) root->key); + free (root); +} + -- 2.1.4