summarylogtreecommitdiffstats
path: root/0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch
diff options
context:
space:
mode:
authorTavian Barnes2019-07-04 14:49:16 -0400
committerTavian Barnes2019-07-04 16:39:23 -0400
commit307ce42251b293cfb66012af19ebce79cb566a26 (patch)
tree17e9590ddf0648c6fdb336b71bf6f19afb103070 /0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch
parent99cef4ba620f3a10cdfbd36920cf49ab5dc832ae (diff)
downloadaur-arm-linux-gnueabihf-binutils.tar.gz
Bump to 2.32-2
Diffstat (limited to '0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch')
-rw-r--r--0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch78
1 files changed, 0 insertions, 78 deletions
diff --git a/0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch b/0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch
deleted file mode 100644
index d56d8b7b6fd..00000000000
--- a/0004-PR23486-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED-x86_64.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 96027b49650718ebcd20d81bd8d0fbbd36a33558 Mon Sep 17 00:00:00 2001
-From: Cary Coutant <ccoutant@gmail.com>
-Date: Tue, 7 Aug 2018 21:35:12 -0700
-Subject: [PATCH] Properly merge GNU_PROPERTY_X86_ISA_1_USED (x86_64).
-
-gold/
- PR ld/23486
- * x86_64.cc (Target_x86_64::Target_x86_64): Initialize
- object_isa_1_used_.
- (Target_x86_64::object_isa_1_used_): New data member.
- (Target_x86_64::record_gnu_property): Save ISA_1_USED bits for object.
- (Target_x86_64::merge_gnu_properties): Merge ISA_1_USED bits.
----
- gold/x86_64.cc | 22 +++++++++++++++++++---
- 1 file changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/gold/x86_64.cc b/gold/x86_64.cc
-index 27f273d64b..ac958616c6 100644
---- a/gold/x86_64.cc
-+++ b/gold/x86_64.cc
-@@ -706,7 +706,8 @@ class Target_x86_64 : public Sized_target<size, false>
- rela_irelative_(NULL), copy_relocs_(elfcpp::R_X86_64_COPY),
- got_mod_index_offset_(-1U), tlsdesc_reloc_info_(),
- tls_base_symbol_defined_(false), isa_1_used_(0), isa_1_needed_(0),
-- feature_1_(0), object_feature_1_(0), seen_first_object_(false)
-+ feature_1_(0), object_isa_1_used_(0), object_feature_1_(0),
-+ seen_first_object_(false)
- { }
-
- // Hook for a new output section.
-@@ -1381,6 +1382,11 @@ class Target_x86_64 : public Sized_target<size, false>
- uint32_t isa_1_needed_;
- uint32_t feature_1_;
- // Target-specific properties from the current object.
-+ // These bits get ORed into ISA_1_USED_ after all properties for the object
-+ // have been processed. But if either is all zeroes (as when the property
-+ // is absent from an object), the result should be all zeroes.
-+ // (See PR ld/23486.)
-+ uint32_t object_isa_1_used_;
- // These bits get ANDed into FEATURE_1_ after all properties for the object
- // have been processed.
- uint32_t object_feature_1_;
-@@ -1609,7 +1615,7 @@ Target_x86_64<size>::record_gnu_property(
- switch (pr_type)
- {
- case elfcpp::GNU_PROPERTY_X86_ISA_1_USED:
-- this->isa_1_used_ |= val;
-+ this->object_isa_1_used_ |= val;
- break;
- case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED:
- this->isa_1_needed_ |= val;
-@@ -1627,12 +1633,22 @@ void
- Target_x86_64<size>::merge_gnu_properties(const Object*)
- {
- if (this->seen_first_object_)
-- this->feature_1_ &= this->object_feature_1_;
-+ {
-+ // If any object is missing the ISA_1_USED property, we must omit
-+ // it from the output file.
-+ if (this->object_isa_1_used_ == 0)
-+ this->isa_1_used_ = 0;
-+ else if (this->isa_1_used_ != 0)
-+ this->isa_1_used_ |= this->object_isa_1_used_;
-+ this->feature_1_ &= this->object_feature_1_;
-+ }
- else
- {
-+ this->isa_1_used_ = this->object_isa_1_used_;
- this->feature_1_ = this->object_feature_1_;
- this->seen_first_object_ = true;
- }
-+ this->object_isa_1_used_ = 0;
- this->object_feature_1_ = 0;
- }
-
---
-2.18.0
-