This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
gdb and binutils branch master updated. b80eed39e2e813c37cffcb873dc4fdd03381383c
- From: amodra at sourceware dot org
- To: binutils-cvs at sourceware dot org
- Date: 8 Mar 2014 02:32:29 -0000
- Subject: gdb and binutils branch master updated. b80eed39e2e813c37cffcb873dc4fdd03381383c
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".
The branch, master has been updated
via b80eed39e2e813c37cffcb873dc4fdd03381383c (commit)
from c5164cbc322e77c331fee199cc0359269e952b5d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b80eed39e2e813c37cffcb873dc4fdd03381383c
commit b80eed39e2e813c37cffcb873dc4fdd03381383c
Author: Alan Modra <amodra@gmail.com>
Date: Fri Mar 7 10:14:30 2014 +1030
Better overflow checking for powerpc64 relocations
R_PPC64_ADDR16 is used in three contexts:
- .short data relocation
- 16-bit signed insn fields, eg. addi
- 16-bit unsigned insn fields, eg. ori
In the first case we want to allow both signed and unsigned 16-bit
values, the latter two ought to error if the field exceeds the range
of values allowed for 16-bit signed and unsigned integers
respectively. These conflicting requirements meant that ld had to
choose the least restrictive overflow checks, and thus it is possible
to construct testcases where an addi field overflows but is not
reported by ld. Many relocations dealing with 16-bit insn fields have
this problem. What's more, some relocations that are only ever used
for signed fields of instructions woodenly copied the lax overflow
checking of R_PPC64_ADDR16.
bfd/
* elf64-ppc.c (ppc64_elf_howto_raw): Use complain_overflow_signed
for R_PPC64_ADDR14, R_PPC64_ADDR14_BRTAKEN, R_PPC64_ADDR14_BRNTAKEN,
R_PPC64_SECTOFF, R_PPC64_ADDR16_DS, R_PPC64_SECTOFF_DS,
R_PPC64_REL16 entries. Use complain_overflow_dont for R_PPC64_TOC.
(ppc64_elf_relocate_section): Modify overflow test for 16-bit
fields in instructions to signed/unsigned according to whether
the field takes a signed or unsigned value.
gold/
* powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
(Powerpc_relocate_functions::has_overflow_unsigned): New function.
(Powerpc_relocate_functions::has_overflow_bitfield,
overflowed): Use the above.
(Target_powerpc::Relocate::relocate): Correct overflow checking
for a number of relocations. Modify overflow test for 16-bit
fields in instructions to signed/unsigned according to whether
the field takes a signed or unsigned value.
-----------------------------------------------------------------------
Summary of changes:
bfd/ChangeLog | 10 ++++++
bfd/elf64-ppc.c | 64 ++++++++++++++++++++++++++++-------------
gold/ChangeLog | 12 ++++++++
gold/powerpc.cc | 84 +++++++++++++++++++++++++++++++++++++++++++------------
4 files changed, 132 insertions(+), 38 deletions(-)
hooks/post-receive
--
gdb and binutils