summaryrefslogtreecommitdiffstats
path: root/gnu
diff options
context:
space:
mode:
authorjhibbits <jhibbits@FreeBSD.org>2014-12-12 03:58:51 +0000
committerjhibbits <jhibbits@FreeBSD.org>2014-12-12 03:58:51 +0000
commit96e9baf74138c0931c7a3523ca4c423a568724e6 (patch)
tree7974b85fa79f8607cb83c584324cbc0511a069b3 /gnu
parent7c61e1dea87e44cb9d50f142c1c9288eb4cf7e2c (diff)
downloadFreeBSD-src-96e9baf74138c0931c7a3523ca4c423a568724e6.zip
FreeBSD-src-96e9baf74138c0931c7a3523ca4c423a568724e6.tar.gz
Add new PowerPC relocations to binutils
Summary: LLVM/Clang generates relocations that our binutils doesn't understand, but newer binutils does. I got permission from the author of a series of patches to relicense them as GPLv2 for use in FreeBSD. The upstream git hashes are: ac2df442ac7901f00af15b272fc48b594b433713 2b95367962dc14f69d3c338c4d54195266e2e169 102890f04c44b64cf5cef4588267dd9f24086ac7 b7fcf6f6bb53b5027e111107f5416769cb9a5798 1d483afedd5a628dc84fb58d1d570f79fdfbfa7b 90aecf7a80c1cefeb45fc10a6cd02c8338e34b4c 3a71aa26df2a372a58e9c11ef9ba51fd0e83320a 727fc41e077139570ea8b8ddfd6c546b2a55627c With the import of clang 3.5, and a few backported patches, we should be able to move powerpc and powerpc64 to clang-as-cc soon. Test Plan: Passes make tinderbox, so no regressions. Binaries built with clang run on powerpc64. Reviewers: #committers, dim Reviewed By: dim Differential Revision: https://reviews.freebsd.org/D1297 Obtained from: Alan Modra, upstream binutils-gdb git MFC after: 3 weeks Relnotes: yes
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/binutils/libbfd/bfd.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/gnu/usr.bin/binutils/libbfd/bfd.h b/gnu/usr.bin/binutils/libbfd/bfd.h
index f651233..fee147c 100644
--- a/gnu/usr.bin/binutils/libbfd/bfd.h
+++ b/gnu/usr.bin/binutils/libbfd/bfd.h
@@ -1386,6 +1386,9 @@ typedef struct bfd_section
/* Nonzero if this section has TLS related relocations. */
unsigned int has_tls_reloc:1;
+ /* Nonzero if this section has a call to __tls_get_addr. */
+ unsigned int has_tls_get_addr_call:1;
+
/* Nonzero if this section has a gp reloc. */
unsigned int has_gp_reloc:1;
@@ -1646,11 +1649,11 @@ extern asection bfd_ind_section;
/* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
0, 0, 0, 0, \
\
- /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
- 0, 0, 0, \
+ /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ \
+ 0, 0, 0, \
\
- /* vma, lma, size, rawsize */ \
- 0, 0, 0, 0, \
+ /* reloc_done, vma, lma, size, rawsize */ \
+ 0, 0, 0, 0, 0, \
\
/* output_offset, output_section, alignment_power, */ \
0, (struct bfd_section *) &SEC, 0, \
@@ -2903,6 +2906,8 @@ in the instruction. */
/* PowerPC and PowerPC64 thread-local storage relocations. */
BFD_RELOC_PPC_TLS,
+ BFD_RELOC_PPC_TLSGD,
+ BFD_RELOC_PPC_TLSLD,
BFD_RELOC_PPC_DTPMOD,
BFD_RELOC_PPC_TPREL16,
BFD_RELOC_PPC_TPREL16_LO,
OpenPOWER on IntegriCloud