From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 50349 invoked by alias); 28 Feb 2017 14:09:27 -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 49464 invoked by uid 89); 28 Feb 2017 14:09:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:2845 X-HELO: mail-pg0-f68.google.com Received: from mail-pg0-f68.google.com (HELO mail-pg0-f68.google.com) (74.125.83.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 28 Feb 2017 14:09:25 +0000 Received: by mail-pg0-f68.google.com with SMTP id s67so1681403pgb.1 for ; Tue, 28 Feb 2017 06:09:25 -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:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Vd9Oa6WSSUsYN6PKtGh6J4Q2YRn/d0aGhDKym39UDcc=; b=gF2rMPiQaGbFjvM6H7snIQmkfundRb2EiwiywKhL35wt7w5Qgzf7VQNdsOq0l1JHT0 I3J6YtodSI9Gce+POdw+e9jF/qc1MlF2/vcwWZcDb7hFSc1Qvrsc8f9n9yD/N3I9dOso Pe6sxmPqfb7D3tU16Nh5LXTHz8xqbU+yuxbkACwk6ycLodpTq/Z3HQ7Iw0Rrs6rFT1UV NBXfRB0LtXgacjKSFTjG9AG+7V7IqcTTVgvDNkM7h9M6045SwZSzgoMk6GlT0dwJ8/fT JJbenmJvl0nkGF/ePyDRMlNTikU7sFFfMX3gYcyU+UPfVPIt1K/j8YZhAtCdBiFnVieq 9ckw== X-Gm-Message-State: AMke39l29uRwLhU93aKz7ZFzsn8DJsH3RysGWQI/XLXkVieSGfjEBz2S21Numdi6A3uUTw== X-Received: by 10.98.218.76 with SMTP id w12mr2734313pfl.162.1488290963690; Tue, 28 Feb 2017 06:09:23 -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 b8sm4702836pgn.6.2017.02.28.06.09.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Feb 2017 06:09:23 -0800 (PST) Received: by bubble.grove.modra.org (Postfix, from userid 1000) id 6B9D7C12A5; Wed, 1 Mar 2017 00:39:19 +1030 (ACDT) Date: Tue, 28 Feb 2017 14:09:00 -0000 From: Alan Modra To: binutils@sourceware.org Subject: Re: PowerPC addpcis fix Message-ID: <20170228140919.GB29416@bubble.grove.modra.org> References: <20170228021518.GF12547@bubble.grove.modra.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170228021518.GF12547@bubble.grove.modra.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-IsSubscribed: yes X-SW-Source: 2017-02/txt/msg00391.txt.bz2 On Tue, Feb 28, 2017 at 12:45:18PM +1030, Alan Modra wrote: > The patch also fixes overflow checking, which must test whether the > addi will overflow too since @l relocs don't have any overflow check. In fact, there wasn't anything wrong with the previous code. So, revert that change. The new checks are OK too, so this is just a tidy. No need for a change on the branch. * elf64-ppc.c (ppc64_elf_ha_reloc): Revert last change. (ppc64_elf_relocate_section): Likewise. diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 68fb27e..86a19a3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,10 @@ 2017-02-28 Alan Modra + * elf64-ppc.c (ppc64_elf_ha_reloc): Revert last change. + (ppc64_elf_relocate_section): Likewise. + +2017-02-28 Alan Modra + PR 20995 * elf32-nios2.c (nios2_elf32_relocate_section): Use htab rather than elf32_nios2_hash_table or elf_hash_table. diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 661ef26..5ecd1a3 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -2529,7 +2529,7 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, enum elf_ppc64_reloc_type r_type; long insn; bfd_size_type octets; - bfd_vma value, field; + bfd_vma value; /* If this is a relocatable link (output_bfd test tells us), just call the generic function. Any adjustment will be done at final @@ -2555,14 +2555,14 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, value -= (reloc_entry->address + input_section->output_offset + input_section->output_section->vma); - field = (bfd_signed_vma) value >> 16; + value = (bfd_signed_vma) value >> 16; octets = reloc_entry->address * bfd_octets_per_byte (abfd); insn = bfd_get_32 (abfd, (bfd_byte *) data + octets); insn &= ~0x1fffc1; - insn |= (field & 0xffc1) | ((field & 0x3e) << 15); + insn |= (value & 0xffc1) | ((value & 0x3e) << 15); bfd_put_32 (abfd, insn, (bfd_byte *) data + octets); - if (value + 0x80000000 > 0xffffffff) + if (value + 0x8000 > 0xffff) return bfd_reloc_overflow; return bfd_reloc_ok; } @@ -15255,19 +15255,17 @@ ppc64_elf_relocate_section (bfd *output_bfd, r = bfd_reloc_outofrange; else { - bfd_signed_vma field; - relocation += addend; relocation -= (rel->r_offset + input_section->output_offset + input_section->output_section->vma); - field = (bfd_signed_vma) relocation >> 16; + relocation = (bfd_signed_vma) relocation >> 16; insn = bfd_get_32 (input_bfd, contents + rel->r_offset); insn &= ~0x1fffc1; - insn |= (field & 0xffc1) | ((field & 0x3e) << 15); + insn |= (relocation & 0xffc1) | ((relocation & 0x3e) << 15); bfd_put_32 (input_bfd, insn, contents + rel->r_offset); r = bfd_reloc_ok; - if (relocation + 0x80000000 > 0xffffffff) + if (relocation + 0x8000 > 0xffff) r = bfd_reloc_overflow; } } -- Alan Modra Australia Development Lab, IBM