From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 130700 invoked by alias); 18 Aug 2017 10:48:59 -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 31368 invoked by uid 89); 18 Aug 2017 10:41:26 -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.8 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=rm, 12713, reposting X-Spam-Status: No, score=-25.8 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-ve1eur01on0095.outbound.protection.outlook.com (HELO EUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.95) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 18 Aug 2017 10:41:23 +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=3YPh05KH6fngGl4s1zr5YCpYrbCTiE85ddf5Z9DEIDo=; b=dtNeZPvc+2IwN5ZWvuPfjcSQv4+0KsRmJA/i9Ebw9X+ZE0kx25RnDdIAwjxKaqk7hye7UESLLHdrP2ucaozNQJZufTB7fINhR3ABq7ucobgL+vNJb5Hv1T8IsAUzLfB+meQbmK+/H+mYj2841fac1vUjxVgGsNInIXYKQJslXJo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ulf.hermann@qt.io; Received: from [10.9.78.66] (62.220.2.194) by DB5PR0201MB1831.eurprd02.prod.outlook.com (2603:10a6:0:32::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18; Fri, 18 Aug 2017 10:41:19 +0000 From: Ulf Hermann Subject: [PATCH v3] Check for -z,defs, -z,relro, -fPIC, -fPIE before using them To: elfutils-devel@sourceware.org Message-ID: Date: Fri, 18 Aug 2017 10:48:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: VI1P189CA0003.EURP189.PROD.OUTLOOK.COM (2603:10a6:802:2a::16) To DB5PR0201MB1831.eurprd02.prod.outlook.com (2603:10a6:0:32::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2198aca-baf2-44d2-d701-08d4e625a92d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:DB5PR0201MB1831; X-Microsoft-Exchange-Diagnostics: 1;DB5PR0201MB1831;3:CaCyNFvxsbWbdX+7uDoZO7yXhD6/hPHQzA1ORpH9phn5Zcp2sGPY0f7Fs5Q3zmMV2QSrLnTqDY9VH6kM70YWwoNRh7ZJAdpdgWJ+2+5HHfYyd5+PnTX57TzofJ3oUeBgWmUeih4CegPVmxmAsb+5/kIg50yYvEUap3ooq2g+4xrmvp4HrRHcKS4lNj9/379+z3XBOs3rL16ZRGPwT1HgJ3hdgrFudPSNyx4Txepoe3ZgXXG4FP5HpL19FZXYwlbg;25:IXrN2Co+8sgAR5NJqlETxGaK++z0/VYT3HvV1WJcN39G6IT6ttynAq9qtDW5d41IvqyipuYCqAEVB4HFFZNzFmuDoQmDstOOippy9Q5K1g0zaRTalJXEeTSvKL/GBqLDJu3BAWc3WDcjPZyIxYMpLYuVBgUn/GXNILwPFRREN21OGoDpTPoX6g7kYLSwhXEmkTmh2iEOp3VBJ76UtuVtpLJX7/8mvTQavVSqjiEHV8+X4mrjoake3GHAN/np6JM+KNCkXcSqwn9SgfPjQTOvX1vrN1T0s+FiRaaOLZiZq/qs6A9UbPIptF9EQYVlN+FPGs5IqZ5h6p62TQZNFPDGWQ==;31:Kf+xPSCj2q9RTldV1It/LG4CPPXkqvrAJCaMTVjbJmJrsSvRQiviG2t6p6SBfTuKg2SUHmojEdD0KOp3Uxwc8aq0UklqE7VgpbIK1Qb5qNDRzylOGgJhOsOetQKyDujy1ivzcO/iV7j7VkXyFNOjEKlTN5sEmV1UE6p8rCb6lWvwAFDrrX6TbgKUWN9CQPIAX9K4iPrCe8ur9oKp4VJj9vhNcD7kK/jAk0tMTwBbJm8= X-MS-TrafficTypeDiagnostic: DB5PR0201MB1831: X-Microsoft-Exchange-Diagnostics: 1;DB5PR0201MB1831;20:NF3pPfmt3fak7TYPOOdTCi7OyQqjMlzN7SjVAGNOqC1GaumIFZioTdO5nOgKkxiwCpp2SCvYj30UkWLCNEdtrLJdZZfRYQvgP2lx0d2qFSFMV2jgFSP9Gl5+xlOxECKSQNeD1/OnQnyOafvelJ5JKush+AkWDKybW6NbXJUWkpR4enTtQufFuhZsEEDcm8jj8En+qkYCcZJ2H2uZ9ZDMVQ2TyQU97W1btHvoPQ8+h0nuwpWh7o8chwWiyeTBrBYHiFJSW9RIXPLq8Qi1Tv5572WUhx9r/LMlh/gmEHlBCDt04JKogY5SsxSr3Vb0TEKyoxjnAq8r1mffGys774BiNcGtlTSK5gQ+DaCk4nqjCSsvkuhEgE3IIxTW8RL9Mt38w3biaIlxBC6pCE/bhwa3v+wjuxTxRaOf9J1SvKNtmPopJvolbGyq6YP0uIeF+H3wsQ8kEEji2vqzDBuaRLHpLm5s4hWSZa0VjfVRAHLJqbakBTuqCI9zCCyhOw5D3YGT;4:kgpAp7xlO8upK6TbpNaxQlzwo9G7ZEZcC5bgOuuRAoNR3USpl56DFtNxW/HIfBlo5Z53/9qwTHuSkQDiDFixi9V+8C04eOYB/CQTq5isIQ/6T8Ye0zoLB7/L1q59ki+nVCUxVZlD8HzrlAfQyTxlvyq5o6EddVdPwlbjtM+5Gmb5OHH/WQVh+RPZg30xOX3Ade6NBKFwNAO3W5LXXFMkGfWwaRRU4yo/vZwxvoNWL9jwGcZOZoqamCuBty8BOUvbIXP3kAN6Qm4PigaJhdvb1/qrj8Dc0/U3ma3r7fPE7rBQSVJrsgf+CeGJ5A50RhyIoQ90vDPxqBmzGXLoUjsN1Ui+Ojlsv80EZlQ4mBQlfED8Va03r9/QxFwryv/88hAC X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030)(104084551191319); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(6041248)(20161123564025)(20161123562025)(20161123558100)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB5PR0201MB1831;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB5PR0201MB1831; X-Forefront-PRVS: 040359335D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(6009001)(6049001)(377424004)(189002)(54534003)(199003)(3846002)(83506001)(50466002)(77096006)(6486002)(106356001)(2351001)(5660300001)(105586002)(478600001)(65826007)(7736002)(230700001)(2361001)(31696002)(305945005)(4001350100001)(6666003)(97736004)(33646002)(2906002)(6116002)(8676002)(6916009)(42186005)(81166006)(81156014)(64126003)(74482002)(66066001)(7350300001)(189998001)(36756003)(65956001)(65806001)(68736007)(54356999)(50986999)(25786009)(110136004)(23676002)(86362001)(575784001)(47776003)(6306002)(53936002)(31686004)(101416001)(142933001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB5PR0201MB1831;H:[10.9.78.66];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: qt.io does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjVQUjAyMDFNQjE4MzE7MjM6Q1hwR0hrSWk3UUJBSlI0eis0alE0NzRP?= =?utf-8?B?OUJpbEFEeGJaWFVlUkh4MldJQllOTHptYWNRQ3B6bmJlL0NzQUsxVHBkTU9a?= =?utf-8?B?RjN5aEpTNGJ3eUkyVG0vWkEzcTVhV0ppZUJhM1dCYnV6SzhYQmNyQ3VUTmVJ?= =?utf-8?B?ekVMbG1qTjNtQ0w5RnpjMXhoMko3c01ncnJvbHhLYjFsblZJTW1yQjNKaHRh?= =?utf-8?B?SUhDVERubzV0YjFlTmZOQW1mVjU2K2h1SGQ5UmJNY1hNT25LZU1uUHJWVFZQ?= =?utf-8?B?bXU2ZDkvb3N4dFlqT0Z0RlBPSjZVRXpsa1B4MXMvdmY0UWYwOVZtd3c1Ykpq?= =?utf-8?B?WXhNSHo2QlpZcWxlR0VPWi9vUGRwVExwR3BjWFNDb0svOCtrdGFrYlRoRm1y?= =?utf-8?B?VmNlSVQxeXY2TmplbnRiNnVWdWxtaThWbDFSS29wbzNNcUhGVEJRNFRDUXY0?= =?utf-8?B?dVhDVzEvMmdrQ0lIUEhyVE5VanhXYzVERWRXNlpYMHZxdzlHdldOYmJRbWpU?= =?utf-8?B?bSs3L296aHQ5OHZTY29QaW15bWlQVGYremIvTmdJZVd3VUNoT05NeDJqUHpr?= =?utf-8?B?VVlwOXVDeURVWFhVSVFBdXl1aUFnMk03eW0ySHBZbDIrL1hGbW1mYUswUlE1?= =?utf-8?B?MERjSUJCei9rUnlIaVJrbDRBcHNPTElUTjNSMFRoTVF4aHRmbDJva0lTcWc4?= =?utf-8?B?ME9TSmU2R3cxMGRTL00wQVdyVUdlYUpTakZZaFFzVXZ0REo3aTlKblpzQmRz?= =?utf-8?B?R1JmQlNiYytHUFV3WjF2NkxzWStmaWxZSnVoSzI0TkZzZXo3eDd1R1NxNEta?= =?utf-8?B?NG5SVGJUc05KSG03TmZxd1QzNVhhS1E0OXhKYnNQSGhaQUNRMHdIOVdJcXU3?= =?utf-8?B?SklVNm1uY3JBbEVzc1VMUnc3cFE2WE0rdTRtY0FpeE9rcnp2Q01PVGxIMFZV?= =?utf-8?B?QkhkOWJVSHpuZTVFR0doenhIZEdxQjdGTU9tNXFWenpNdWI4cXhPYVlYM09M?= =?utf-8?B?Z05RQW9UdjIvVGlwNjhhUHlRclRMTWlSeng4aG5YdlZZaDhWM0VYTnBWTnRL?= =?utf-8?B?YUNKbzZuaVRSNXh0a2g3Z1hoQXlvMTc4ZHpDSWVVdnRaZkdhemRFMmVJOFBT?= =?utf-8?B?dm91ZjRMQm4yM1I2dXlJUXNiK1RGcU9HdjJ3SDR1TlR1bzcrSU44Ty9hbW1t?= =?utf-8?B?L0dxb3NFS0F0bjhaY3lPcGN4cWpDR3QrOWhrNzhLWlhVN0tSQ3R4SHYvUTBm?= =?utf-8?B?ZmVmQlY4T1ZaOTVURTJvSkpkck8yN1JSUjkraW0yMEtYS3dRMzFndlYreHB6?= =?utf-8?B?YVRFSFg5NC9nU0xSRCt1S1pFV2k1UEl0NTlFeEpSQU9lNHBSTmIyMTEraWJv?= =?utf-8?B?aVRZRmtCL1Yyb3hDN3NCempGK0p3N0dWbkJYVWVOUTJCSGFtTHJIZlR4dm92?= =?utf-8?B?SHNwRmtid1hzQzZpR3RqcTRPNElMREJUSWVCblAvTS9ld2kxZEtyd1FsV3Ay?= =?utf-8?B?cElVay85N0JZM05paHpuY1V1WEVQTmY0Y0xFb2YyejN1V2ZIMitFUncxVVEv?= =?utf-8?B?SjAralVXejN1dTdLSnpwQlp3aDZ6cTdNQk9ock04cXJ5TlVvSURXNjdLY2Zz?= =?utf-8?B?V3VVamRCc0F4RlJHc3J5Nko5Y252WTR0WUlIY1kyTmhhVU5GNWNkbVRpODlI?= =?utf-8?B?WENremtSZFVKQ1dxZWROUmF0M0VsakYxYzNlUjcyd0oyWkJWWTVUWGpZQTJr?= =?utf-8?B?K09Mc2pWTEY1bjJBWG1DMFh1b1pZaWFOUHBsZ0c4NGFaSk1vREdSakxuNlpO?= =?utf-8?B?SzVUcHNXVlBjUnhucGtYYzlsK1NhVk14ZjBlVk5GTWxwVEVBQT09?= X-Microsoft-Exchange-Diagnostics: 1;DB5PR0201MB1831;6:KTmE54Fv2XURKOsa21PbZ6739Gzo27mXlwaGMAoISkcvC8UpOvEKy/X30Xm+/r4ZRTAcz2DsbzJ7zy9YnhIcgQdizjey+aYbPV+lGTheKNVYM3kMB/+FaRpQQ7otYfHL8HS+j6TjI1o9RI7+XoDwXsksRcWrQy7XwTY0FR7rw8ZNgRSjtBgPILid2p+JLsWPTmEKI1DJHCBIwpilzjvjfz52QBdbFbw453Nch1Nm/mwpQ8/Wc8jTKZ34CZSrFHwjZlyJ8AGszXnO4s5S5Y82InP3lIdy5uGREG54ucw5l5qHCao65cRHWzIzmrm4ZmhjNzx2UyzR6a7MCEBOxnZwaw==;5:GkZ+Ja7ksK9gZezOT5CX8Z0QesbvxuDwtVp36VO1FvPkWD2M+0PSBYyl6VHKDho0IEGp12BplMtrCtQOE3V41d//+KlFyQqbsrO+3MKtUcF9UfghIxqJ1uNXuXUhegfNwwvq+XKKAdOQzESzyODYEg==;24:N3Ro4X9LCAviec4wgk+030dbBOw7vQOeNMEz//dLioj5BNTrGZlVnR/M3FmzqHaHnIaYUz0VbKdYDdxFBIgaMiDn4WEJlLgc3lCextDXE2g=;7:1lpS5mVz1fQZJjpB8DJYJ5Lfo97QWYnw+D/bIaNlevQyyXdDwdwJqeGLJeZbq371uOHk7AZrUOphLCsDTcsrUgIemf0R/a8vRvBfF3Usp6AMbq5Tqec9HJ+cvMfJDNeb7se0t3d0Hbrlzxl2zy/HHdN2tq9bavb7CvN5YGXeyKy4T9o0IZxfRKYnt6Dy8pE2MlBI3sKe0oo7aouYT52krUnHKBDefajVCL4vnnHmd9M= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2017 10:41:19.0773 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0201MB1831 X-IsSubscribed: yes X-SW-Source: 2017-q3/txt/msg00077.txt.bz2 Those flags are not available on all platforms, and omitting them when not available will not cause any harm. In particular: -z,defs disallows undefined symbols in object files. This option is unsupported if the target binary format enforces the same condition already. Furthermore it is only a compile time sanity check. When it is omitted, the same binary is produced. -z,relro instructs the loader to mark sections read-only after loading the library, where possible. This is a hardening mechanism. If it is unavailable, the functionality of the code is not affected in any way. -fPIC instructs the compiler to produce position independent code. While this is preferable to relocatable code, relocatable code also works and may even be faster. Relocatable code might just be loaded into memory multiple times for different processes. -fPIE is the same thing as -fPIC for executables rather than shared libraries. (I'm reposting this patch, rebased to not depend on any others, with extended commit message. v2 was apparently not accepted because the patch's implications were misunderstood.) Signed-off-by: Ulf Hermann --- ChangeLog | 5 +++++ backends/ChangeLog | 4 ++++ backends/Makefile.am | 4 ++-- config/ChangeLog | 4 ++++ config/eu.am | 4 ++-- configure.ac | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++-- lib/ChangeLog | 4 ++++ lib/Makefile.am | 2 +- libasm/ChangeLog | 4 ++++ libasm/Makefile.am | 4 ++-- libcpu/ChangeLog | 4 ++++ libcpu/Makefile.am | 2 +- libdw/ChangeLog | 4 ++++ libdw/Makefile.am | 6 +++--- libebl/ChangeLog | 4 ++++ libebl/Makefile.am | 2 +- libelf/ChangeLog | 4 ++++ libelf/Makefile.am | 6 +++--- tests/ChangeLog | 4 ++++ tests/Makefile.am | 4 ++-- 20 files changed, 112 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9253c0a3..62146227 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-04-27 Ulf Hermann + + * configure.ac: Check if -fPIC, -fPIE, -Wl,-z,defs, + and -Wl,-z,relro are supported by the compiler. + 2017-08-02 Mark Wielaard * configure.ac: Set version to 0.170. diff --git a/backends/ChangeLog b/backends/ChangeLog index a66e923e..79b50ebf 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Ulf Hermann + + * Makefile.am: Use dso_LDFLAGS. + 2017-07-27 Mark Wielaard * sparc_reloc.def: GOTDATA_OP_HIX22, GOTDATA_OP_LOX10 and diff --git a/backends/Makefile.am b/backends/Makefile.am index 37dc2d20..0fde0cb0 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -129,10 +129,10 @@ libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu) @rm -f $(@:.so=.map) $(AM_V_at)echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \ > $(@:.so=.map) - $(AM_V_CCLD)$(LINK) -shared -o $(@:.map=.so) \ + $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $(@:.map=.so) \ -Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \ -Wl,--version-script,$(@:.so=.map),--no-undefined \ - -Wl,-z,defs,-z,relro -Wl,--as-needed $(libelf) $(libdw) $(libeu) + -Wl,--as-needed $(libelf) $(libdw) $(libeu) @$(textrel_check) libebl_i386.so: $(cpu_i386) diff --git a/config/ChangeLog b/config/ChangeLog index 02cf76f9..1ed3c4af 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Ulf Hermann + + * eu.am: Use fpic_CFLAGS. + 2016-08-02 Mark Wielaard * elfutils.spec.in: Update for 0.170. diff --git a/config/eu.am b/config/eu.am index 8fe1e259..796f3883 100644 --- a/config/eu.am +++ b/config/eu.am @@ -86,14 +86,14 @@ endif %.os: %.c %.o if AMDEP - $(AM_V_CC)if $(COMPILE.os) -c -o $@ -fPIC $(DEFS.os) -MT $@ -MD -MP \ + $(AM_V_CC)if $(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) -MT $@ -MD -MP \ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ rm -f "$(DEPDIR)/$*.Tpo"; \ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ fi else - $(AM_V_CC)$(COMPILE.os) -c -o $@ -fPIC $(DEFS.os) $< + $(AM_V_CC)$(COMPILE.os) -c -o $@ $(fpic_CFLAGS) $(DEFS.os) $< endif CLEANFILES = *.gcno *.gcda diff --git a/configure.ac b/configure.ac index 1f1856df..e6e3b675 100644 --- a/configure.ac +++ b/configure.ac @@ -127,13 +127,65 @@ 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 -fPIC], ac_cv_fpic, [dnl +save_CFLAGS="$CFLAGS" +CFLAGS="$save_CFLAGS -fPIC -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE()], ac_cv_fpic=yes, ac_cv_fpic=no) +CFLAGS="$save_CFLAGS" +]) +if test "$ac_cv_fpic" = "yes"; then + fpic_CFLAGS="-fPIC" +else + fpic_CFLAGS="" +fi +AC_SUBST([fpic_CFLAGS]) + +AC_CACHE_CHECK([whether gcc supports -fPIE], ac_cv_fpie, [dnl +save_CFLAGS="$CFLAGS" +CFLAGS="$save_CFLAGS -fPIE -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE()], ac_cv_fpie=yes, ac_cv_fpie=no) +CFLAGS="$save_CFLAGS" +]) +if test "$ac_cv_fpie" = "yes"; then + fpie_CFLAGS="-fPIE" +else + fpie_CFLAGS="" +fi +AC_SUBST([fpie_CFLAGS]) + +dso_LDFLAGS="-shared" + +ZDEFS_LDFLAGS="-Wl,-z,defs" +AC_CACHE_CHECK([whether gcc supports $ZDEFS_LDFLAGS], ac_cv_zdefs, [dnl +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$ZDEFS_LDFLAGS $save_LDFLAGS" +AC_LINK_IFELSE([AC_LANG_PROGRAM()], ac_cv_zdefs=yes, ac_cv_zdefs=no) +LDFLAGS="$save_LDFLAGS" +]) +if test "$ac_cv_zdefs" = "yes"; then + dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS" +fi + +ZRELRO_LDFLAGS="-Wl,-z,relro" +AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$ZRELRO_LDFLAGS $save_LDFLAGS" +AC_LINK_IFELSE([AC_LANG_PROGRAM()], ac_cv_zrelro=yes, ac_cv_zrelro=no) +LDFLAGS="$save_LDFLAGS" +]) +if test "$ac_cv_zrelro" = "yes"; then + dso_LDFLAGS="$dso_LDFLAGS $ZRELRO_LDFLAGS" +fi + +AC_SUBST([dso_LDFLAGS]) + AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl # Use the same flags that we use for our DSOs, so the test is representative. # Some old compiler/linker/libc combinations fail some ways and not others. save_CFLAGS="$CFLAGS" save_LDFLAGS="$LDFLAGS" -CFLAGS="-fPIC $CFLAGS" -LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS" +CFLAGS="$fpic_CFLAGS $CFLAGS" +LDFLAGS="$dso_LDFLAGS $LDFLAGS" AC_LINK_IFELSE([dnl AC_LANG_PROGRAM([[#include #undef __thread diff --git a/lib/ChangeLog b/lib/ChangeLog index 1f162286..67ef2792 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Ulf Hermann + + * Makefile.am: Use fpic_CFLAGS. + 2017-07-18 Mark Wielaard * bpf.h: New file. diff --git a/lib/Makefile.am b/lib/Makefile.am index ada2030d..c30d38bf 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -28,7 +28,7 @@ ## not, see . ## include $(top_srcdir)/config/eu.am -AM_CFLAGS += -fPIC +AM_CFLAGS += $(fpic_CFLAGS) AM_CPPFLAGS += -I$(srcdir)/../libelf noinst_LIBRARIES = libeu.a diff --git a/libasm/ChangeLog b/libasm/ChangeLog index 262d2a92..fffcced0 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,3 +1,7 @@ +2017-02-27 Ulf Hermann + + * Makefile.am: Use dso_LDFLAGS. + 2017-02-17 Ulf Hermann * Makefile.am: Add libasm_so_DEPS to specify external libraries diff --git a/libasm/Makefile.am b/libasm/Makefile.am index 9effa6c5..19fef508 100644 --- a/libasm/Makefile.am +++ b/libasm/Makefile.am @@ -64,8 +64,8 @@ endif libasm_so_LIBS = libasm_pic.a libasm_so_SOURCES = libasm.so$(EXEEXT): $(srcdir)/libasm.map $(libasm_so_LIBS) $(libasm_so_DEPS) - $(AM_V_CCLD)$(LINK) -shared -o $@ \ - -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \ + $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \ + -Wl,--soname,$@.$(VERSION) \ -Wl,--version-script,$<,--no-undefined \ -Wl,--whole-archive $(libasm_so_LIBS) -Wl,--no-whole-archive \ $(libasm_so_LDLIBS) diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 28b220fc..173defe6 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,7 @@ +2017-02-27 Ulf Hermann + + * Makefile.am: Use fpic_CFLAGS. + 2017-07-18 Mark Wielaard * Makefile.am: Don't check HAVE_LINUX_BPF_H, just define libcpu_bpf. diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am index 94de56ef..4c8778d1 100644 --- a/libcpu/Makefile.am +++ b/libcpu/Makefile.am @@ -30,7 +30,7 @@ include $(top_srcdir)/config/eu.am AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ -I$(srcdir)/../libdw -I$(srcdir)/../libasm -AM_CFLAGS += -fPIC -fdollars-in-identifiers +AM_CFLAGS += $(fpic_CFLAGS) -fdollars-in-identifiers LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -P$( + + * Makefile.am: Use fpic_CFLAGS and dso_LDFLAGS. + 2017-07-26 Mark Wielaard * dwarf.h: Add DW_MACRO_* and compat defines for DW_MACRO_GNU_*. diff --git a/libdw/Makefile.am b/libdw/Makefile.am index ff8c291e..8ee46802 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -29,7 +29,7 @@ ## include $(top_srcdir)/config/eu.am if BUILD_STATIC -AM_CFLAGS += -fPIC +AM_CFLAGS += $(fpic_CFLAGS) endif AM_CPPFLAGS += -I$(srcdir)/../libelf VERSION = 1 @@ -110,8 +110,8 @@ libdw_so_SOURCES = libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS) # The rpath is necessary for libebl because its $ORIGIN use will # not fly in a setuid executable that links in libdw. - $(AM_V_CCLD)$(LINK) -shared -o $@ \ - -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \ + $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \ + -Wl,--soname,$@.$(VERSION) \ -Wl,--enable-new-dtags,-rpath,$(pkglibdir) \ -Wl,--version-script,$<,--no-undefined \ -Wl,--whole-archive $(libdw_so_LIBS) -Wl,--no-whole-archive \ diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 334bf224..3b076332 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Ulf Hermann + + * Makefile.am: Use fpic_CFLAGS. + 2017-07-19 Gustavo Romero * eblcorenotetypename.c: Add ppc64 HTM SPRs note as known type. diff --git a/libebl/Makefile.am b/libebl/Makefile.am index 2491df80..737de6b0 100644 --- a/libebl/Makefile.am +++ b/libebl/Makefile.am @@ -28,7 +28,7 @@ ## not, see . ## include $(top_srcdir)/config/eu.am -AM_CFLAGS += -fPIC +AM_CFLAGS += $(fpic_CFLAGS) AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libdw -I$(srcdir)/../libasm VERSION = 1 LIBEBL_SUBDIR = @LIBEBL_SUBDIR@ diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 436b8880..a0736467 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Ulf Hermann + + * Makefile.am: Use fpic_CFLAGS and dso_LDFLAGS. + 2017-08-15 Mark Wielaard * elf.h: Update from glibc. Add new powerpc note descriptors. diff --git a/libelf/Makefile.am b/libelf/Makefile.am index 88c1edd7..ddaeaa2b 100644 --- a/libelf/Makefile.am +++ b/libelf/Makefile.am @@ -29,7 +29,7 @@ ## include $(top_srcdir)/config/eu.am if BUILD_STATIC -AM_CFLAGS += -fPIC +AM_CFLAGS += $(fpic_CFLAGS) endif GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) VERSION = 1 @@ -104,8 +104,8 @@ endif libelf_so_LIBS = libelf_pic.a libelf_so_SOURCES = libelf.so$(EXEEXT): $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS) - $(AM_V_CCLD)$(LINK) -shared -o $@ \ - -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro \ + $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \ + -Wl,--soname,$@.$(VERSION) \ -Wl,--version-script,$<,--no-undefined \ -Wl,--whole-archive $(libelf_so_LIBS) -Wl,--no-whole-archive \ $(libelf_so_LDLIBS) diff --git a/tests/ChangeLog b/tests/ChangeLog index 94f4cf23..19a4c88d 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Ulf Hermann + + * Makefile.am: Use fpie_CFLAGS and fpic_CFLAGS. + 2017-08-08 Dmitry V. Levin * run-strip-nothing.sh: Add -s. diff --git a/tests/Makefile.am b/tests/Makefile.am index 3735084f..6332a7c1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -474,7 +474,7 @@ dwfl_report_elf_align_LDADD = $(libdw) varlocs_LDADD = $(libdw) $(libelf) $(argp_LDADD) backtrace_LDADD = $(libdw) $(libelf) $(argp_LDADD) # backtrace-child-biarch also uses those *_CFLAGS and *_LDLAGS variables: -backtrace_child_CFLAGS = -fPIE +backtrace_child_CFLAGS = $(fpie_CFLAGS) backtrace_child_LDFLAGS = -pie -pthread backtrace_child_biarch_SOURCES = backtrace-child.c backtrace_data_LDADD = $(libdw) $(libelf) @@ -485,7 +485,7 @@ debugaltlink_LDADD = $(libdw) $(libelf) buildid_LDADD = $(libdw) $(libelf) deleted_LDADD = ./deleted-lib.so deleted_lib_so_LDFLAGS = -shared -rdynamic -deleted_lib_so_CFLAGS = -fPIC -fasynchronous-unwind-tables +deleted_lib_so_CFLAGS = $(fpic_CFLAGS) -fasynchronous-unwind-tables aggregate_size_LDADD = $(libdw) $(libelf) $(argp_LDADD) peel_type_LDADD = $(libdw) $(libelf) $(argp_LDADD) vdsosyms_LDADD = $(libdw) $(libelf) -- 2.11.0