gdb and binutils branch binutils-2_24-branch updated. f47b0fc7eea01174073535c9ff0d1a79f045f93a
amodra@sourceware.org
amodra@sourceware.org
Thu Jun 12 15:31:00 GMT 2014
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, binutils-2_24-branch has been updated
via f47b0fc7eea01174073535c9ff0d1a79f045f93a (commit)
from ce678f3d432ae01b7d89907b825877bd43b90f27 (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=f47b0fc7eea01174073535c9ff0d1a79f045f93a
commit f47b0fc7eea01174073535c9ff0d1a79f045f93a
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 | 9 ++++++
bfd/elf64-ppc.c | 64 ++++++++++++++++++++++++++++-------------
gold/ChangeLog | 14 +++++++++
gold/powerpc.cc | 84 +++++++++++++++++++++++++++++++++++++++++++------------
4 files changed, 133 insertions(+), 38 deletions(-)
hooks/post-receive
--
gdb and binutils
More information about the Binutils-cvs
mailing list