From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 82751 invoked by alias); 27 Apr 2017 16:04:46 -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 82720 invoked by uid 89); 27 Apr 2017 16:04:44 -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.4 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.4 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-DB5-obe.outbound.protection.outlook.com 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=SLkgl0fACJk2GY0+W7Psza4UeCboZMTw3xVBFzVhQvA=; b=nOjN8tJldWxLq1wyPsLjCeXLpiOjWx68kdP1BbSCvsoxOkAXT70BRa9vLAiPrlk6ycVboqzYuccq9mmttXVD6mxMhPTeBTqmV9pV7GHqHGQiF03vxKNk57I8GPF9Xn40+nsNOFI2OlrNucvX+pi+e1+O+OR16UGoCJ36wC0nMp0= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=qt.io; From: Ulf Hermann Subject: [PATCH] Check if gcc complains about __attribute__ (visibility(..)) To: Message-ID: <67ef1c3e-2e0d-4a81-f91e-7c611142e711@qt.io> Date: Thu, 27 Apr 2017 18:13: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: DB6PR1001CA0013.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::23) To AMSPR02MB230.eurprd02.prod.outlook.com (2a01:111:e400:8022::17) X-MS-Office365-Filtering-Correlation-Id: 2c2b675d-d668-4eb9-a6ce-08d48d871cb1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:AMSPR02MB230; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;3:9m38jRmkAbCvUjYd8y84bhmOig6yLzNqjhhUEIR7t/O7m6A9DwsM5RiS40l+yLSbI6tvzpWj1ulzfA7ZufsGH9PdbUgioERQ1VSG4lde+lAkBo89jctyJh3z/eoMIuMbwSW+fB/zIlc/ZNVkXWzBZfbmjCihErUBuEb+96+dnLEc1goQqGAorI9mLtMvb7d5eaID/rprMPEPr3m/0pqvhVC5ShmJL7dSCwM43vWFGK7FaU6Z3kbxzIVYdwSumlnDGPG/Y7XpjH9l2r8zvUOuqDrjocJWvnfUgYSvSh+AUoBHUcFrTPabwP1GqQYR+raXdDak79p8+WstVjDb6WTFGA==;25:EgVWPYpqVBHifrQruxbcbQUDuqv47cBLLKrj6Rz/XHEDvLeUupiIAx/ZoaKEOgTD+TypIxhrvtV4E0mblHvvp6emRiP7511BskuEVytGoBp+8Vc/6STJ9xZSlwlgLe2lt7dgMoQ06l2J2ZpPcMMK04XTFJBso/xr2cz+9Uo53lLYO88U9+QbxT7TlJvcACVp1U56hpNSfBVvXSnNnB62e1OKv9+M/8VulpiFd9grdKShvQNf98WPQ1M8hpgaDdfswYqSEtwkchaZUiEr9AzsrHZupB8Lv5vlMPau/1TH9ckPFA7J3Viz1N7/qc20Ku8KKun00VLZfiVwifO9uqh0lI9YAI9cfYreB87Bs7pmoD4MhxxNd1BGJhVIVLtE9NhR8pkflsMICJ2I+GereapzjpK2lGG+dqgU3yYGMDWPhF2kdPajn8JgTvsLmIjEIiYG1T1AyHTlrK9tSiira7nA8w== X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;31:4QwvJbAtzddWMFNm0IhaGHhIEAUHMAPTxMBUkrUw/VyrAGO0S7QmwXxPLqBBVa3VhMUtEdv+GFEXn0xsbrJpzDuS3qvI5l7um0pJJdIWqyCVnYVkzz601e+19gMHYAv2HWZFwgQM6tmUc4VubEhTsAsqKRHZEyY9YXrRQFb5nyydOnbkaIbF+ArsZhXoPC5zjKQvj1PvKvQZ0fE1enlAmsCWGF2IZLhqQT/plwyG16UYUD31yC4BLMH/y1Xe1Tn5oM8T0XIMLg9E4Dtuix1pLw==;20:pbLMyizug+Uvgrr7o8Le95UUpSHlDPIWkQVMCQopCKLr/SoGFvnF69geXDLxownU+VjINq2f95B+USMwKK0ucVssrReuTw5A1YJ2k4iUl7IhoW+QJVmPcEoZRgE7+Ox8TPzVfn0jBXTtHqbLMtUI+uh/PB4k1JvtC2HepZgYBP4bLUR4Yjuq6I6+b4g6rzPlNuBu5Ai51EV2JW2+nY1ArH2ooA1115rpznOTvcGJzN+5KgpBCOxk98myF33q+8ty X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123562025)(20161123555025)(6072148);SRVR:AMSPR02MB230;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB230; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;4:HJnSdI8ojvqgd62zzYzg9O0S+PoZAlWA8Ktje74PO7OSGIt4GWzjj/94iCnhOUH1934Aac7HQ2sz6rIMTJ6xz7hqGnu/6YRPsW2VoFQCxczK9HW1NEsWk/h+GtC7UcUryllMffd/LUaUesNRGhss0XuFE7n2pDBEHdRt6w4q4B2kX/Q4oZ1liYt/FaWmCpeO4XMpu1zro7W7VBVw/sarB0twXBxhc761TCzVW+/IgpZGTjvUAjALqdnwqCd4hNz9NnkSdXXh09KhaX9iLKI9FvbTFEfLQ+4PCOAVCjSqARqXBLUxnI93tkrYPnqajbyD0jgGWtPuBA6bZ+40n0TAuvWCPghOC7ekBYb8bE6DAMZTvNk5VzpG+mTxsU0YNWAQkkmODdOpAWpM0H6QLAPvCKkvXNqdSM4GSfZGjgK5kew1p6cviYTbdRieGnxtKroUa35JslnntHNfyCREOrtuDK4M1NIARxAw9oHL6AIuSREYiZ6hdiI8zTFMCJc0bFXtmMp9edBuJTRuE60cvBSCLxy+9s3BOSPO2sITbDLUYN3RkvYg2k3njYMZkFTJlhQ0yXqJ38qZINQc2NW+6jjXDC5bvaFSsxTTY3r50MBmUcrnh3Y3SWj8T7ZTkXMaI3HEzpfVVuRJoW+KYrVWlYreKOijrOu8vYIV9NT8ku748EGlZibb+HMI6aPvYg15odmp3H7YlnFNMuuQrqWuW7n7NWdVFTfRbloVLXh0HGipdrLGiUehLMnQkQRWtXvX8Sq7+eYYIKFfSSwtVJOScjc+54WyjRUDggh0SdK3N2r/C/k= X-Forefront-PRVS: 029097202E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(39450400003)(39400400002)(39410400002)(39830400002)(377424004)(47776003)(4001350100001)(8676002)(6116002)(81166006)(50986999)(6916009)(54356999)(189998001)(64126003)(3846002)(2906002)(23676002)(42186005)(230700001)(50466002)(33646002)(53936002)(36756003)(2351001)(74482002)(77096006)(5660300001)(110136004)(66066001)(38730400002)(83506001)(7736002)(25786009)(6486002)(65826007)(305945005)(86362001)(575784001)(31696002);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?MTtBTVNQUjAyTUIyMzA7MjM6dVJLMFVaTU5TNkJWUlRNMStsMXRuNWFnKzls?= =?utf-8?B?ZEJLMExXMmRQT2RaTmM2SHdxUlNIY3VOV0V5T0c5enRsc2ZqOGtNbmoybWRB?= =?utf-8?B?aUtXNkNibzN5VWlsUkIrQ2lEQWNHSHR3RjhkbUNsU3N3TlBKSlhvcVNqTmdX?= =?utf-8?B?T1gwRlpjSWVpVzNIQjAyS2VEY1FwOXcrQzJwcWQrMEtaSUVGODNRZUt1bTNm?= =?utf-8?B?OUhYVUdsdWE0ODNEdm9FMDlDV3hNWHRBYk8vZ2RFL3hrdm9oUmM1WG1QLzlU?= =?utf-8?B?RStyVEpwQ0pRa0VhdnBJTTNNRUhEVHFTSnhRa01Tcnh6U2lyOE5nVUhCMU1u?= =?utf-8?B?MHMwbm8wMC9lRXFWRTNXeEJ5MVcrM2NqWUZsbFdIdXlyUUZyeENjZHJNZzFQ?= =?utf-8?B?a1FiWEJBMXQ2SDNNU3Ircnc5L2lHcG50OUpzRzUwUnNVR0JOOC9RQU52MWxE?= =?utf-8?B?dFErL1VpLzZXR3M5anQzMklWd1lwZEJMZnZoQmxEVEtsQjEvWWE5VUlDWEJy?= =?utf-8?B?QkFYdjBRcmJqY2ZiN09yNUxmbk11R3k3YlFvLzNmYmVwTVpGRXZOTUJYcWdy?= =?utf-8?B?NlpqS2hHbTRhTUJHYy90SS9yNEVydkNpQVZTbmU3b3d2R21hNEZZanBHVVUz?= =?utf-8?B?Zmk1ZmREZWZLVkoraHh0VlpPbzFnaWlUNGNKUUp5Zjl5Qkh0eTZzalRlSWJI?= =?utf-8?B?WFRnKzdIVzk5cW45ZGhTaHJNeXY2VEtwNXZTWUszZkNSUVc0eERhbEdJTmpk?= =?utf-8?B?c1R4WCtwUEJNY1RtR0wrWGNnNUV5NjJieElWYmdjdmYycFRTTzUzZko5TWpX?= =?utf-8?B?dzVCUVJNeEdmTDM5b1JDRGxpTmRwVUZyWmZMaDNzK05QRjVhc0s4Ym1WV3E4?= =?utf-8?B?OFBPc0tscVNpdUZUdmNHRjlqUldhbFdJb1dsZzdkV2t2WTZSSENoR3JhaHVh?= =?utf-8?B?aDMzNkN5SThIUGhDVnRjZVRTcGRPeElGZW1rVWwyb3NWZ2JNcTBvTE4xbmEz?= =?utf-8?B?ekUyVndoUFBTY2lhMVU0RUlIYzhtMVlmY2RCNGlPUEJWREhjQk1KY1c2MHFF?= =?utf-8?B?K0pDYmtPQVorR3NJb2lRVEVzdWNTWGhFRllZN1pOQStUSStqL1dwY2RoeUZl?= =?utf-8?B?NFlINlMwU0wzeGladythSTM0UzFIQW5lcEVPckxoTHZBbHhUYTJ3VDBBRWFX?= =?utf-8?B?ZzBxRDVONmNkTEFHYW1VQ2hwakhsTW1nb0x5eW1KMUFtaHZ3RURUc0NzVzMz?= =?utf-8?B?dTRnQXB1VWpjUmUzSmRjOThRRUNRaC9nVTdhLzNYWVcwTDJJVVJQNDIyeGg2?= =?utf-8?B?blFlU2p2b1lmaVdYaDRqNTRuTEo3NWZTcSs0OXl4YTZmQnZpODhueHpkN0Jl?= =?utf-8?B?OElVYjhhMXVDeTV0MkU1WUpOdVBwelB2MVgrdldsYUxzUFZHNzByWm9NaURO?= =?utf-8?B?dG1zSkZFN1UvNll0VFpCbUlFY2lsRnJRYzQxbXMyanEvWGpueEZSdEliUGJz?= =?utf-8?B?OWlRPT0=?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;6:p65pIIF6EKFVBD7RMM2FRVpGPmX07QCt0fo0SijL2VD1BfDtX8PNUDR3tnBv3IuGQOd+7nHgX/MZrcYym5yPRTivmc5OXuNvik4cFUcFVs4GAKkd5lYiiV2eB1zuaQoM0NA2esa3vJBK4qBtFCXfSezw2IdKDTLFFiW8AxRsP12bNzVxOP8SdahiR6BiV6BgO9ozx2Ci+xzaSIkCiyHTRhiIvkesyJi6RL+VXmfjwKXjqGRWVn8fwZ1IYKPajAQJAaD8hqiGFs8O5xNpeHc68hDFooK+tePrNh0lHwpKz27ndekMUHH5OeHnroGD/9B6gr+wGSn6J0ymziL21lEDuTa/fd83coUukay5tHBv+xtxuuOPBkoj4hYIKzV7ulj3v/z/AH9O/sZloHeDugXiPUEXxVrOMgRxi0QGgP3vp0g9zBp9WQdOUkLHShZbD21eu4cNUoj4hr9DvYVID6jkGlglYrU1G+NWOduScXh2Wk1V6OjZNXQ39Q8WIbmq2hi2UKUUtpLv+06NKK97EhIWVQ==;5:SEdQffXEmnMichS7hIL3cX/9bJXHa8AzCU4d4JNfCQqiDtNCKuw/U4pCqX6wxot90I9564VamFOEu1kqdbcvtw5rBsFOMh3b4iZCeFjwq7vi6lV773eL2nBUklQ6VEY61l7xibkHR58SI+knzyoPpQ==;24:PQgPSwQorLMzUFl3N5KpEOvl7QRdvx+455lsfWpSASD8qVsNjADDAEpSJr9xvGb8vup4p+jJ7lMUbtApyCSuK1b2tlTz6rfoz82BTbwh5yA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;7:UyIlACPbBpgbDI71wlNVKqQn9evg64jrlGdp5oPl/FzC7EqqTu9f6EYWPZjP0p4E4wf5Xzc4xZw6CzKc0iJ8j69/jssmMha3uuuuwh98XiCq57PhX0reCS5kPekmMCNNzucDbe0COofBqo+BVxeCysdcXsOCQmTjwJ+As9CLvpoacM4TPHGNYXPPgLfj9vhVE8knTy9dfLoAFOhRjMU68/SHr7K+0WUHrVK84csOl3OPDNm1aTCKdo5h5LLbI+Uv8LrmZMaSTGScCA+wexs5n54pxFHXnGyRxxSvecNG855bEQ515t8bocWsBTpIMBElgapaeIkydv5Xtp0NaCvEUg== X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2017 16:04:40.5869 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR02MB230 X-SW-Source: 2017-q2/txt/msg00111.txt.bz2 If so, define attribute_hidden to be empty. Also, use attribute_hidden in all places where we hide symbols. Change-Id: I37353459710dbbd1c6c6c46110514fc18515c814 Signed-off-by: Ulf Hermann --- ChangeLog | 5 +++++ configure.ac | 16 ++++++++++++++++ lib/ChangeLog | 5 +++++ lib/eu-config.h | 4 ++++ libdw/ChangeLog | 5 +++++ libdw/libdwP.h | 2 +- libdw/libdw_alloc.c | 2 +- libelf/ChangeLog | 4 ++++ libelf/libelfP.h | 2 +- 9 files changed, 42 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 36c3cc7..01f88f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2017-04-27 Ulf Hermann + * configure.ac: Check if the compiler supports + __attribute__((visibility(...))). + +2017-04-27 Ulf Hermann + * configure.ac: Check if -fPIC, -fPIE, -Wl,-z,defs, and -Wl,-z,relro are supported by the compiler. diff --git a/configure.ac b/configure.ac index 107762f..165149d 100644 --- a/configure.ac +++ b/configure.ac @@ -136,6 +136,22 @@ CFLAGS="$old_CFLAGS"]) AS_IF([test "x$ac_cv_c99" != xyes], AC_MSG_ERROR([gcc with GNU99 support required])) +AC_CACHE_CHECK([whether gcc supports __attribute__((visibility()))], + ac_cv_visibility, [dnl +save_CFLAGS="$CFLAGS" +CFLAGS="$save_CFLAGS -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl +int __attribute__((visibility("hidden"))) +foo (int a) +{ + return a; +}])], ac_cv_visibility=yes, ac_cv_visibility=no) +CFLAGS="$save_CFLAGS"]) +if test "$ac_cv_visibility" = "yes"; then + AC_DEFINE([HAVE_VISIBILITY], [1], + [Defined if __attribute__((visibility())) is supported]) +fi + AC_CACHE_CHECK([whether gcc supports -fPIC], ac_cv_fpic, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$save_CFLAGS -fPIC -Werror" diff --git a/lib/ChangeLog b/lib/ChangeLog index 605b9b9..ecc6179 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,5 +1,10 @@ 2017-04-27 Ulf Hermann + * eu-config.h: Define attribute_hidden to be empty if the compiler + doesn't support it. + +2017-04-27 Ulf Hermann + * Makefile.am: Use fpic_CFLAGS. 2017-04-27 Ulf Hermann diff --git a/lib/eu-config.h b/lib/eu-config.h index 400cdc6..0709828 100644 --- a/lib/eu-config.h +++ b/lib/eu-config.h @@ -68,8 +68,12 @@ #define internal_strong_alias(name, aliasname) \ extern __typeof (name) aliasname __attribute__ ((alias (#name))) internal_function; +#ifdef HAVE_VISIBILITY #define attribute_hidden \ __attribute__ ((visibility ("hidden"))) +#else +#define attribute_hidden /* empty */ +#endif /* Define ALLOW_UNALIGNED if the architecture allows operations on unaligned memory locations. */ diff --git a/libdw/ChangeLog b/libdw/ChangeLog index d15c861..79c3898 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,5 +1,10 @@ 2017-02-27 Ulf Hermann + * libdwP.h: Use attribute_hidden. + * libdw_alloc.c: Likewise. + +2017-02-27 Ulf Hermann + * Makefile.am: Use fpic_CFLAGS and dso_LDFLAGS. 2017-02-27 Ulf Hermann diff --git a/libdw/libdwP.h b/libdw/libdwP.h index 5d095a7..cefcafd 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -433,7 +433,7 @@ extern void *__libdw_allocate (Dwarf *dbg, size_t minsize, size_t align) __attribute__ ((__malloc__)) __nonnull_attribute__ (1); /* Default OOM handler. */ -extern void __libdw_oom (void) __attribute ((noreturn, visibility ("hidden"))); +extern void __libdw_oom (void) __attribute ((noreturn)) attribute_hidden; /* Allocate the internal data for a unit not seen before. */ extern struct Dwarf_CU *__libdw_intern_next_unit (Dwarf *dbg, bool debug_types) diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c index 28a8cf6..d6af23a 100644 --- a/libdw/libdw_alloc.c +++ b/libdw/libdw_alloc.c @@ -70,7 +70,7 @@ dwarf_new_oom_handler (Dwarf *dbg, Dwarf_OOM handler) void -__attribute ((noreturn, visibility ("hidden"))) +__attribute ((noreturn)) attribute_hidden __libdw_oom (void) { while (1) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 1c6cce2..fd58ed3 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,5 +1,9 @@ 2017-04-27 Ulf Hermann + * libelfP.h: Use attribute_hidden. + +2017-04-27 Ulf Hermann + * Makefile.am: Use fpic_CFLAGS and dso_LDFLAGS. 2017-04-27 Ulf Hermann diff --git a/libelf/libelfP.h b/libelf/libelfP.h index 7ee6625..a4a0a3a 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -578,7 +578,7 @@ extern Elf_Data *__elf64_xlatetof_internal (Elf_Data *__dest, extern unsigned int __elf_version_internal (unsigned int __version) attribute_hidden; extern unsigned long int __elf_hash_internal (const char *__string) - __attribute__ ((__pure__, visibility ("hidden"))); + __attribute__ ((__pure__)) attribute_hidden; extern long int __elf32_checksum_internal (Elf *__elf) attribute_hidden; extern long int __elf64_checksum_internal (Elf *__elf) attribute_hidden; -- 2.1.4