From patchwork Tue Jan 26 12:51:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mickael Guene X-Patchwork-Id: 573236 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 834B5140B94 for ; Tue, 26 Jan 2016 23:52:18 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=jAp9scGY; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; q=dns; s=default; b=XLpBsazKMQrxDVYk WBXVYOphCVXgsRL99cZH+Xb5eoTA6zEwilsamlzybI31oih2gmD20QruHTMUtba8 arlL7gUMRY4Zs3eR5gOD/WB13ZOO1baSSdgh3irCtMCww1JKNBT6y6yqe7i3+RJq YBI8J42qBlAjnOzh5AVBviq5FhU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=default; bh=tXyCDbRUHzolVbmTKV78iF AbXDo=; b=jAp9scGYFMMkv0tkgQSoVw8lcOK1t3seDXojQf9yIF8xjBai1xwpIw PgZ1jhY5yCQX357EMCGw+J7/RU9FJ/ciI+3zlsZ4LBSui9W8k+ZlIxlOZeQtl5iU U2WUbAqnPrCNrWMgp/Wn6wRzT6hLKZNcxR1E1Y0wUKashCmfl3Vdc= Received: (qmail 4674 invoked by alias); 26 Jan 2016 12:51:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 4626 invoked by uid 89); 26 Jan 2016 12:51:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, KHOP_DYNAMIC, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=UD:section, 12666, reserved, letter X-HELO: mx07-00178001.pphosted.com Received: from mx07-00178001.pphosted.com (HELO mx07-00178001.pphosted.com) (62.209.51.94) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 26 Jan 2016 12:51:56 +0000 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.15.0.59/8.15.0.59) with SMTP id u0QCoR8I007029 for ; Tue, 26 Jan 2016 13:51:52 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 20p6s1rrgf-1 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Tue, 26 Jan 2016 13:51:52 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id AAB7534 for ; Tue, 26 Jan 2016 12:51:00 +0000 (GMT) Received: from Webmail-eu.st.com (safex1hubcas6.st.com [10.75.90.73]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id CCD5F16B6 for ; Tue, 26 Jan 2016 12:51:49 +0000 (GMT) Received: from gnx2611.cec-lab.gnb.st.com (164.129.122.161) by webmail-eu.st.com (10.75.90.13) with Microsoft SMTP Server (TLS) id 8.3.406.0; Tue, 26 Jan 2016 13:51:49 +0100 From: Mickael Guene To: CC: Mickael Guene Subject: [PATCH ARM 1/2] Add support for section attribute letter 'y' when available Date: Tue, 26 Jan 2016 13:51:34 +0100 Message-ID: <1453812695-1098-2-git-send-email-mickael.guene@st.com> In-Reply-To: <1453812695-1098-1-git-send-email-mickael.guene@st.com> References: <1453812695-1098-1-git-send-email-mickael.guene@st.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-01-26_05:, , signatures=0 X-IsSubscribed: yes gcc/ChangeLog: * configure.ac: Add detection of letter y support in assembler. * config.in: Regenerate. * configure: Regenerate. * output.h (SECTION_NOREAD): Add new bit flag. * varasm.c (default_elf_asm_named_section): Set y letter when we detect SECTION_NOREAD. --- gcc/config.in | 6 ++++++ gcc/configure | 34 +++++++++++++++++++++++++++++++++- gcc/configure.ac | 6 ++++++ gcc/output.h | 3 ++- gcc/varasm.c | 6 +++++- 5 files changed, 52 insertions(+), 3 deletions(-) diff --git a/gcc/config.in b/gcc/config.in index 1796e1d..2aa2d1a 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -1266,6 +1266,12 @@ #endif +/* Define if your assembler supports specifying the section flag y. */ +#ifndef USED_FOR_TARGET +#undef HAVE_GAS_SECTION_NOREAD +#endif + + /* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag. */ #ifndef USED_FOR_TARGET diff --git a/gcc/configure b/gcc/configure index ff646e8..e543732 100755 --- a/gcc/configure +++ b/gcc/configure @@ -22365,7 +22365,6 @@ else $as_echo "$gcc_cv_readelf" >&6; } fi -# Figure out what assembler alignment features are present. { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler flags" >&5 $as_echo_n "checking assembler flags... " >&6; } if test "${gcc_cv_as_flags+set}" = set; then : @@ -22392,6 +22391,39 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_flags" >&5 $as_echo "$gcc_cv_as_flags" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .section with y" >&5 +$as_echo_n "checking assembler for .section with y... " >&6; } +if test "${gcc_cv_as_section_has_y+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gcc_cv_as_section_has_y=no + if test x$gcc_cv_as != x; then + $as_echo '.section foo1,"y" +.byte 0,0,0,0' > conftest.s + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + gcc_cv_as_section_has_y=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_section_has_y" >&5 +$as_echo "$gcc_cv_as_section_has_y" >&6; } +if test $gcc_cv_as_section_has_y = yes; then + +$as_echo "#define HAVE_GAS_SECTION_NOREAD 1" >>confdefs.h + +fi + +# Figure out what assembler alignment features are present. { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .balign and .p2align" >&5 $as_echo_n "checking assembler for .balign and .p2align... " >&6; } if test "${gcc_cv_as_balign_and_p2align+set}" = set; then : diff --git a/gcc/configure.ac b/gcc/configure.ac index 4dc7c10..d1717bf 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2446,6 +2446,12 @@ else AC_MSG_RESULT($gcc_cv_readelf) fi +gcc_GAS_CHECK_FEATURE([.section with y], gcc_cv_as_section_has_y,,, +[.section foo1,"y" +.byte 0,0,0,0],, +[AC_DEFINE(HAVE_GAS_SECTION_NOREAD, 1, + [Define if your assembler supports specifying the section flag y.])]) + # Figure out what assembler alignment features are present. gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align, [2,6,0],, diff --git a/gcc/output.h b/gcc/output.h index 0924499..1df3088 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -381,7 +381,8 @@ extern void no_asm_to_stream (FILE *); #define SECTION_COMMON 0x800000 /* contains common data */ #define SECTION_RELRO 0x1000000 /* data is readonly after relocation processing */ #define SECTION_EXCLUDE 0x2000000 /* discarded by the linker */ -#define SECTION_MACH_DEP 0x4000000 /* subsequent bits reserved for target */ +#define SECTION_NOREAD 0x4000000 /* section cannot be read but can be executed */ +#define SECTION_MACH_DEP 0x8000000 /* subsequent bits reserved for target */ /* This SECTION_STYLE is used for unnamed sections that we can switch to using a special assembler directive. */ diff --git a/gcc/varasm.c b/gcc/varasm.c index 3a3573e..c0499b1 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -6233,7 +6233,7 @@ void default_elf_asm_named_section (const char *name, unsigned int flags, tree decl) { - char flagchars[10], *f = flagchars; + char flagchars[11], *f = flagchars; /* If we have already declared this section, we can use an abbreviated form to switch back to it -- unless this section is @@ -6266,6 +6266,10 @@ default_elf_asm_named_section (const char *name, unsigned int flags, *f++ = TLS_SECTION_ASM_FLAG; if (HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE)) *f++ = 'G'; +#if defined (HAVE_GAS_SECTION_NOREAD) && HAVE_GAS_SECTION_NOREAD == 1 + if (flags & SECTION_NOREAD) + *f++ = 'y'; +#endif *f = '\0'; fprintf (asm_out_file, "\t.section\t%s,\"%s\"", name, flagchars);