> On Apr 26, 2016, at 9:31 AM, Tristan Van Berkom > <tristan.vanber...@codethink.co.uk> wrote: > > On Mon, 2016-04-25 at 13:55 -0700, Khem Raj wrote: >>> On Apr 25, 2016, at 1:44 PM, Tristan Van Berkom <tristan.vanberkom@ >>> codethink.co.uk> wrote: >>> >>> We fail to build webkit on aarch64 due to this binutils bug: >>> >>> https://sourceware.org/bugzilla/show_bug.cgi?id=19353 >>> >>> Applying patch which fixes this, stripped out changelog entry >>> from patch to make it apply without error. >> >> >> which branch are you proposing this for? >> we use 2.26 on master > > We are using the jethro branch, sorry for leaving out that detail. >
OK, add [jethro] to patch subject line then, so it gets attention of release maintainers. > Cheers, > -Tristan > >> >>> --- >>> meta/recipes-devtools/binutils/binutils-2.25.1.inc | 1 + >>> ...plying-TLSDESC-relocs-without-TLS-segment.patch | 166 >>> +++++++++++++++++++++ >>> 2 files changed, 167 insertions(+) >>> create mode 100644 meta/recipes-devtools/binutils/binutils/fix- >>> internal-error-when-applying-TLSDESC-relocs-without-TLS- >>> segment.patch >>> >>> diff --git a/meta/recipes-devtools/binutils/binutils-2.25.1.inc >>> b/meta/recipes-devtools/binutils/binutils-2.25.1.inc >>> index f3817fa..c7db9e0 100644 >>> --- a/meta/recipes-devtools/binutils/binutils-2.25.1.inc >>> +++ b/meta/recipes-devtools/binutils/binutils-2.25.1.inc >>> @@ -35,6 +35,7 @@ SRC_URI = "\ >>> file://0015-Fix-dynamic-list-so-that-symbols-not-in-the-list- >>> are.patch \ >>> file://binutils-octeon3.patch \ >>> file://add-thunderx-support-for-gas.patch \ >>> + file://fix-internal-error-when-applying-TLSDESC-relocs- >>> without-TLS-segment.patch \ >>> " >>> S = "${WORKDIR}/git" >>> >>> diff --git a/meta/recipes-devtools/binutils/binutils/fix-internal- >>> error-when-applying-TLSDESC-relocs-without-TLS-segment.patch >>> b/meta/recipes-devtools/binutils/binutils/fix-internal-error-when- >>> applying-TLSDESC-relocs-without-TLS-segment.patch >>> new file mode 100644 >>> index 0000000..df9d54c >>> --- /dev/null >>> +++ b/meta/recipes-devtools/binutils/binutils/fix-internal-error- >>> when-applying-TLSDESC-relocs-without-TLS-segment.patch >>> @@ -0,0 +1,166 @@ >>> +From d21f123b0ead1806416cf0dafae12bec4cca8920 Mon Sep 17 00:00:00 >>> 2001 >>> +From: Cary Coutant <ccout...@gmail.com> >>> +Date: Mon, 11 Jan 2016 23:57:44 -0800 >>> +Subject: [PATCH] Fix internal error when applying TLSDESC >>> relocations with no TLS segment. >>> + >>> +gold/ >>> + PR gold/19353 >>> + * aarch64.cc (Target_aarch64::relocate_tls): Don't insist >>> that >>> + we have a TLS segment for GD-to-IE optimization. >>> + * i386.cc (Target_i386::tls_gd_to_ie): Remove tls_segment >>> parameter. >>> + Adjust all calls. >>> + (Target_i386::tls_desc_gd_to_ie): Likewise. >>> + (Target_i386::relocate_tls): Don't insist that we have a >>> TLS segment >>> + for TLSDESC GD-to-IE optimizations. >>> + * x86_64.cc (Target_x86_64::tls_gd_to_ie): Remove >>> tls_segment parameter. >>> + Adjust all calls. >>> + (Target_x86_64::tls_desc_gd_to_ie): Likewise. >>> + (Target_x86_64::relocate_tls): Don't insist that we have a >>> TLS segment >>> + for TLSDESC GD-to-IE optimizations. >>> +--- >>> + gold/aarch64.cc | 6 ------ >>> + gold/i386.cc | 14 ++------------ >>> + gold/x86_64.cc | 14 ++------------ >>> + 4 files changed, 20 insertions(+), 30 deletions(-) >>> + >>> +diff --git a/gold/aarch64.cc b/gold/aarch64.cc >>> +index 20f2f4f..5ad061b 100644 >>> +--- a/gold/aarch64.cc >>> ++++ b/gold/aarch64.cc >>> +@@ -7422,12 +7422,6 @@ Target_aarch64<size, >>> big_endian>::Relocate::relocate_tls( >>> + } >>> + if (tlsopt == tls::TLSOPT_TO_IE) >>> + { >>> +- if (tls_segment == NULL) >>> +- { >>> +- gold_assert(parameters->errors()- >>>> error_count() > 0 >>> +- || >>> issue_undefined_symbol_error(gsym)); >>> +- return aarch64_reloc_funcs::STATUS_BAD_RELOC; >>> +- } >>> + return tls_desc_gd_to_ie(relinfo, target, rela, >>> r_type, >>> + view, psymval, >>> got_entry_address, >>> + address); >>> +diff --git a/gold/i386.cc b/gold/i386.cc >>> +index 82886d4..a7168a8 100644 >>> +--- a/gold/i386.cc >>> ++++ b/gold/i386.cc >>> +@@ -668,7 +668,6 @@ class Target_i386 : public Sized_target<32, >>> false> >>> + // Do a TLS General-Dynamic to Initial-Exec transition. >>> + inline void >>> + tls_gd_to_ie(const Relocate_info<32, false>*, size_t relnum, >>> +- Output_segment* tls_segment, >>> + const elfcpp::Rel<32, false>&, unsigned int >>> r_type, >>> + elfcpp::Elf_types<32>::Elf_Addr value, >>> + unsigned char* view, >>> +@@ -687,7 +686,6 @@ class Target_i386 : public Sized_target<32, >>> false> >>> + // transition. >>> + inline void >>> + tls_desc_gd_to_ie(const Relocate_info<32, false>*, size_t >>> relnum, >>> +- Output_segment* tls_segment, >>> + const elfcpp::Rel<32, false>&, unsigned int >>> r_type, >>> + elfcpp::Elf_types<32>::Elf_Addr value, >>> + unsigned char* view, >>> +@@ -3054,7 +3052,7 @@ Target_i386::Relocate::relocate_tls(const >>> Relocate_info<32, false>* relinfo, >>> + } >>> + if (optimized_type == tls::TLSOPT_TO_IE) >>> + { >>> +- this->tls_gd_to_ie(relinfo, relnum, tls_segment, >>> rel, r_type, >>> ++ this->tls_gd_to_ie(relinfo, relnum, rel, r_type, >>> + got_offset, view, view_size); >>> + break; >>> + } >>> +@@ -3116,13 +3114,7 @@ Target_i386::Relocate::relocate_tls(const >>> Relocate_info<32, false>* relinfo, >>> + } >>> + if (optimized_type == tls::TLSOPT_TO_IE) >>> + { >>> +- if (tls_segment == NULL) >>> +- { >>> +- gold_assert(parameters->errors()->error_count() >>>> 0 >>> +- || >>> issue_undefined_symbol_error(gsym)); >>> +- return; >>> +- } >>> +- this->tls_desc_gd_to_ie(relinfo, relnum, >>> tls_segment, rel, r_type, >>> ++ this->tls_desc_gd_to_ie(relinfo, relnum, rel, >>> r_type, >>> + got_offset, view, >>> view_size); >>> + break; >>> + } >>> +@@ -3354,7 +3346,6 @@ Target_i386::Relocate::tls_gd_to_le(const >>> Relocate_info<32, false>* relinfo, >>> + inline void >>> + Target_i386::Relocate::tls_gd_to_ie(const Relocate_info<32, >>> false>* relinfo, >>> + size_t relnum, >>> +- Output_segment*, >>> + const elfcpp::Rel<32, false>& >>> rel, >>> + unsigned int, >>> + elfcpp::Elf_types<32>::Elf_Ad >>> dr value, >>> +@@ -3449,7 +3440,6 @@ inline void >>> + Target_i386::Relocate::tls_desc_gd_to_ie( >>> + const Relocate_info<32, false>* relinfo, >>> + size_t relnum, >>> +- Output_segment*, >>> + const elfcpp::Rel<32, false>& rel, >>> + unsigned int r_type, >>> + elfcpp::Elf_types<32>::Elf_Addr value, >>> +diff --git a/gold/x86_64.cc b/gold/x86_64.cc >>> +index 3cfc064..4ad5afc 100644 >>> +--- a/gold/x86_64.cc >>> ++++ b/gold/x86_64.cc >>> +@@ -816,7 +816,6 @@ class Target_x86_64 : public >>> Sized_target<size, false> >>> + // Do a TLS General-Dynamic to Initial-Exec transition. >>> + inline void >>> + tls_gd_to_ie(const Relocate_info<size, false>*, size_t >>> relnum, >>> +- Output_segment* tls_segment, >>> + const elfcpp::Rela<size, false>&, unsigned int >>> r_type, >>> + typename elfcpp::Elf_types<size>::Elf_Addr >>> value, >>> + unsigned char* view, >>> +@@ -835,7 +834,6 @@ class Target_x86_64 : public >>> Sized_target<size, false> >>> + // Do a TLSDESC-style General-Dynamic to Initial-Exec >>> transition. >>> + inline void >>> + tls_desc_gd_to_ie(const Relocate_info<size, false>*, size_t >>> relnum, >>> +- Output_segment* tls_segment, >>> + const elfcpp::Rela<size, false>&, unsigned >>> int r_type, >>> + typename elfcpp::Elf_types<size>::Elf_Addr >>> value, >>> + unsigned char* view, >>> +@@ -3733,7 +3731,7 @@ Target_x86_64<size>::Relocate::relocate_tls( >>> + if (optimized_type == tls::TLSOPT_TO_IE) >>> + { >>> + value = target->got_plt_section()->address() + >>> got_offset; >>> +- this->tls_gd_to_ie(relinfo, relnum, tls_segment, >>> rela, r_type, >>> ++ this->tls_gd_to_ie(relinfo, relnum, rela, r_type, >>> + value, view, address, >>> view_size); >>> + break; >>> + } >>> +@@ -3800,14 +3798,8 @@ >>> Target_x86_64<size>::Relocate::relocate_tls( >>> + } >>> + if (optimized_type == tls::TLSOPT_TO_IE) >>> + { >>> +- if (tls_segment == NULL) >>> +- { >>> +- gold_assert(parameters->errors()->error_count() >>>> 0 >>> +- || >>> issue_undefined_symbol_error(gsym)); >>> +- return; >>> +- } >>> + value = target->got_plt_section()->address() + >>> got_offset; >>> +- this->tls_desc_gd_to_ie(relinfo, relnum, >>> tls_segment, >>> ++ this->tls_desc_gd_to_ie(relinfo, relnum, >>> + rela, r_type, value, view, >>> address, >>> + view_size); >>> + break; >>> +@@ -3973,7 +3965,6 @@ inline void >>> + Target_x86_64<size>::Relocate::tls_gd_to_ie( >>> + const Relocate_info<size, false>* relinfo, >>> + size_t relnum, >>> +- Output_segment*, >>> + const elfcpp::Rela<size, false>& rela, >>> + unsigned int, >>> + typename elfcpp::Elf_types<size>::Elf_Addr value, >>> +@@ -4085,7 +4076,6 @@ inline void >>> + Target_x86_64<size>::Relocate::tls_desc_gd_to_ie( >>> + const Relocate_info<size, false>* relinfo, >>> + size_t relnum, >>> +- Output_segment*, >>> + const elfcpp::Rela<size, false>& rela, >>> + unsigned int r_type, >>> + typename elfcpp::Elf_types<size>::Elf_Addr value, >>> +-- >>> +1.7.1 >>> + >>> -- >>> 2.8.0.rc3 >>> >>> -- >>> _______________________________________________ >>> Openembedded-core mailing list >>> Openembedded-core@lists.openembedded.org >>> http://lists.openembedded.org/mailman/listinfo/openembedded-core >> >
signature.asc
Description: Message signed with OpenPGP using GPGMail
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core