From patchwork Thu Oct 20 20:01:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Magnus Granberg X-Patchwork-Id: 16701 Received: (qmail 127170 invoked by alias); 20 Oct 2016 20:02:09 -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 127160 invoked by uid 89); 20 Oct 2016 20:02:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=denis, Denis, Hx-languages-length:1946, regenerated X-HELO: smtp.gentoo.org From: Magnus Granberg To: libc-alpha Subject: [PATCH] Bug 20662: checking whether x86_64-pc-linux-gnu-gcc implicitly enables -fstack-protector no (32bit gcc 6.2.0 pie and ssp enable) Date: Thu, 20 Oct 2016 22:01:39 +0200 Message-ID: <1784772.eOhSpX4WhJ@laptop1.gw.ume.nu> User-Agent: KMail/5.3.0 (Linux/4.6.4-gentoo; KDE/5.25.0; x86_64; ; ) MIME-Version: 1.0 When glibc get compile with gcc 6.2 that have been configured with --enable-default-pie and --enable-default-ssp. The check that check if the compiler use -fstack-protector as default fail on the 32bit part. checking for libgd... no checking for _FORTIFY_SOURCE predefine... yes checking whether x86_64-pc-linux-gnu-gcc -m32 -Wl,-O1 -Wl,--as-needed implicitly enables -fstack-protector... no checking whether the linker provides working __ehdr_start... yes This patch make so we look for __stack_chk_fail_local in the check. Tested on x86_64 multilib Gentoo Changelog: 2016-10-20 Magnus Granberg Denis Kaganovich * configure.ac: Add check for __stack_chk_fail_local in libc_cv_predef_stack_protector check. * configure: Regenerated. diff --git a/configure.ac b/configure.ac index a64aeb9..de42b6b 100644 --- a/configure.ac +++ b/configure.ac @@ -1667,12 +1668,14 @@ echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'" # symbols (resolved by the linker), so filter out unknown symbols. # This will fail to produce the correct result if the compiler # defaults to -fstack-protector but this produces an undefined symbol -# other than __stack_chk_fail. However, compilers like that have not -# been encountered in practice. -libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'` +# other than __stack_chk_fail or __stack_chk_fail_local. However, +# compilers like that have not been encountered in practice. +libc_undefs=`echo "$libc_undefs" | \ + egrep '^(foobar|__stack_chk_fail|__stack_chk_fail_local)$'` case "$libc_undefs" in foobar) libc_cv_predef_stack_protector=no ;; '__stack_chk_fail +foobar'|'__stack_chk_fail_local foobar') libc_cv_predef_stack_protector=yes ;; *) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;; esac],