From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14370 invoked by alias); 2 Jan 2017 13:33:21 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 14353 invoked by uid 89); 2 Jan 2017 13:33:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,UPPERCASE_50_75 autolearn=no version=3.3.2 spammy=0x10000, KEEP, 12021, MACHINE X-HELO: mail-pf0-f177.google.com Received: from mail-pf0-f177.google.com (HELO mail-pf0-f177.google.com) (209.85.192.177) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 02 Jan 2017 13:33:10 +0000 Received: by mail-pf0-f177.google.com with SMTP id d2so73273856pfd.0 for ; Mon, 02 Jan 2017 05:33:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=IJNQ9WdyQeeq7bxqy8J8IUNwLllqxd2oDcgENulhVGI=; b=NSUusxLHQZBx4HDvAboMXqXc8a1w/rQGSGIE81GvJ4sfgjEDoopuZ1eZ1YLBLdHeJi XuQ99KnOAbPxUipoxzGq7yW031E8V2Tgxu2lmsh8nHw5s6fAqUDb8wPHJDspRd+gYrGd aNGgj7qh43E7Hax8csXe8rWSYUHOr8IAmud4pPXaU8NJSP/mPjdgdoLMjE+C9YPwoiwd 0l7KVBjbuXVURrzDA27sjc4c/QgbJlQQshK5l22jULaLHAI2afs5V0uMRPsK6OGQbXt7 5rpKgzRN3ip4+eidEPR+lIACPs9ifIPeP9pfrVN3azoawy0SLgap30DsVOiRDLjJ7qtW BZlQ== X-Gm-Message-State: AIkVDXJ89NBBTnPk6J3j+/SW6qa8FjH49cXpao9yEqc8GE6kHMvkTTEeuH9JuJnyANyp1w== X-Received: by 10.84.208.227 with SMTP id c32mr125776097plj.144.1483363988443; Mon, 02 Jan 2017 05:33:08 -0800 (PST) Received: from bubble.grove.modra.org (CPE-58-160-71-80.tyqh2.lon.bigpond.net.au. [58.160.71.80]) by smtp.gmail.com with ESMTPSA id y29sm132573078pfd.63.2017.01.02.05.33.07 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Jan 2017 05:33:07 -0800 (PST) Received: by bubble.grove.modra.org (Postfix, from userid 1000) id 763EAC1A41; Tue, 3 Jan 2017 00:03:04 +1030 (ACDT) Date: Mon, 02 Jan 2017 13:33:00 -0000 From: Alan Modra To: binutils@sourceware.org Subject: Support -z relro on hppa Message-ID: <20170102133304.GN29355@bubble.grove.modra.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-IsSubscribed: yes X-SW-Source: 2017-01/txt/msg00016.txt.bz2 PR ld/21000 * emulparams/hppalinux.sh (DATA_ADDR, SHLIB_DATA_ADDR): Don't define. (DATA_SEGMENT_ALIGN, DATA_SEGMENT_END, DATA_SEGMENT_RELRO_END): Define. * scripttempl/elf.sc: Don't define the above if DATA_SEGMENT_ALIGN is already defined. diff --git a/ld/emulparams/hppalinux.sh b/ld/emulparams/hppalinux.sh index d7d87e2..deb07c2 100644 --- a/ld/emulparams/hppalinux.sh +++ b/ld/emulparams/hppalinux.sh @@ -8,8 +8,17 @@ NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000 TARGET_PAGE_SIZE=0x10000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" -DATA_ADDR="ALIGN(${MAXPAGESIZE})" -SHLIB_DATA_ADDR="ALIGN(${MAXPAGESIZE})" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" +if test "$LD_FLAG" = "N"; then + unset DATA_SEGMENT_ALIGN + unset DATA_SEGMENT_END + unset DATA_SEGMENT_RELRO_END +else + DATA_SEGMENT_ALIGN="ALIGN(${MAXPAGESIZE});\ + . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})" + DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);" + DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);" +fi ARCH=hppa MACHINE=hppa1.1 # We use 1.1 specific features. NOP=0x08000240 diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index aa46050..e65f9a3 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -120,21 +120,23 @@ test -z "${ELFSIZE}" && ELFSIZE=32 test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8" test "$LD_FLAG" = "N" && DATA_ADDR=. test -z "${ETEXT_NAME}" && ETEXT_NAME=${USER_LABEL_PREFIX}etext -test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE="" -test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE="" test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT test -z "$ATTRS_SECTIONS" && ATTRS_SECTIONS=".gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }" -DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))" -DATA_SEGMENT_RELRO_END="" -DATA_SEGMENT_END="" -if test -n "${COMMONPAGESIZE}"; then - if test "${SEGMENT_SIZE}" != "${MAXPAGESIZE}"; then - DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})" - else - DATA_SEGMENT_ALIGN="DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})" +if test -z "$DATA_SEGMENT_ALIGN"; then + test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE="" + test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE="" + DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))" + DATA_SEGMENT_RELRO_END="" + DATA_SEGMENT_END="" + if test -n "${COMMONPAGESIZE}"; then + if test "${SEGMENT_SIZE}" != "${MAXPAGESIZE}"; then + DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})" + else + DATA_SEGMENT_ALIGN="DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})" + fi + DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);" + DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);" fi - DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);" - DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);" fi if test -z "${INITIAL_READONLY_SECTIONS}${CREATE_SHLIB}"; then INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" -- Alan Modra Australia Development Lab, IBM