aboutsummaryrefslogtreecommitdiff
path: root/gold/ChangeLog
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2018-06-22 23:36:50 -0700
committerCary Coutant <ccoutant@gmail.com>2018-06-22 23:36:50 -0700
commita2575bec2413d361c6ecfc4aecb2a31c86123f95 (patch)
tree100be502c00550c9c70593d47c36625b3c4f8e4f /gold/ChangeLog
parenta1893a821c4a2e953d13b97360b85650f2127134 (diff)
downloadgdb-a2575bec2413d361c6ecfc4aecb2a31c86123f95.zip
gdb-a2575bec2413d361c6ecfc4aecb2a31c86123f95.tar.gz
gdb-a2575bec2413d361c6ecfc4aecb2a31c86123f95.tar.bz2
Update support for .note.gnu.property sections.
The original patch did not give the target enough hooks to discover that an input object file does not have a particular property. For the GNU_PROPERTY_X86_FEATURE_1_AND property, for example, where a missing property should be assumed to be all zeroes, and ANDed with other object modules, this is essential. We now store the target-specific properties locally in the Target structure as native uint32_t fields, then AND the per-object feature bits with the program's feature bits when we're finished processing each input object file. The target-specific properties are then added back to the output note section during finalization. gold/ PR gold/22914 * layout.cc (read_sized_value): Fix spelling of section name. (Layout::layout_gnu_property): Call Sized_target::record_gnu_property for target-specific properties; don't store them with target-independent properties yet. (Layout::merge_gnu_properties): New method. (Layout::add_gnu_property): New method. (Layout::create_gnu_properties_note): Call target to finalize target-specific properties. Fix spelling of output section name. * layout.h (Layout::merge_gnu_properties): New method. (Layout::add_gnu_property): New method. * object.cc (Sized_relobj_file::do_layout): Call Layout::merge_gnu_properties. * target.h (Target::merge_gnu_property): Remove. (Target::finalize_gnu_properties): New method. (Target::do_merge_gnu_property): Move to Sized_target and rename. (Target::do_finalize_gnu_properties): New virtual method. (Sized_target::record_gnu_property): Moved and renamed from Target::do_merge_gnu_property. (Sized_target::merge_gnu_properties): New virtual method. * x86_64.cc (Target_x86_64::isa_1_used_, isa_1_needed_) (feature_1_, object_feature_1_, seen_first_object_): New data members. (Target_x86_64::do_merge_gnu_property): Rename to ... (Target_x86_64::record_gnu_property): ... this. Save target-specific properties in Target class object. (Target_x86_64::merge_gnu_properties): New method. (add_property): New static inline function. (Target_x86_64::do_finalize_gnu_properties): New method. * testsuite/Makefile.am (gnu_property_test): Remove C source file; link directly without compiler driver. * testsuite/Makefile.in: Regenerate. * testsuite/gnu_property_a.S: Add _start.
Diffstat (limited to 'gold/ChangeLog')
-rw-r--r--gold/ChangeLog35
1 files changed, 35 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 1010513..f4c6f0a 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,40 @@
2018-06-22 Cary Coutant <ccoutant@gmail.com>
+ PR gold/22914
+ * layout.cc (read_sized_value): Fix spelling of section name.
+ (Layout::layout_gnu_property): Call Sized_target::record_gnu_property
+ for target-specific properties;
+ don't store them with target-independent properties yet.
+ (Layout::merge_gnu_properties): New method.
+ (Layout::add_gnu_property): New method.
+ (Layout::create_gnu_properties_note): Call target to finalize
+ target-specific properties. Fix spelling of output section name.
+ * layout.h (Layout::merge_gnu_properties): New method.
+ (Layout::add_gnu_property): New method.
+ * object.cc (Sized_relobj_file::do_layout): Call
+ Layout::merge_gnu_properties.
+ * target.h (Target::merge_gnu_property): Remove.
+ (Target::finalize_gnu_properties): New method.
+ (Target::do_merge_gnu_property): Move to Sized_target and rename.
+ (Target::do_finalize_gnu_properties): New virtual method.
+ (Sized_target::record_gnu_property): Moved and renamed from
+ Target::do_merge_gnu_property.
+ (Sized_target::merge_gnu_properties): New virtual method.
+ * x86_64.cc (Target_x86_64::isa_1_used_, isa_1_needed_)
+ (feature_1_, object_feature_1_, seen_first_object_): New data members.
+ (Target_x86_64::do_merge_gnu_property): Rename to ...
+ (Target_x86_64::record_gnu_property): ... this. Save target-specific
+ properties in Target class object.
+ (Target_x86_64::merge_gnu_properties): New method.
+ (add_property): New static inline function.
+ (Target_x86_64::do_finalize_gnu_properties): New method.
+ * testsuite/Makefile.am (gnu_property_test): Remove C source file;
+ link directly without compiler driver.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/gnu_property_a.S: Add _start.
+
+2018-06-22 Cary Coutant <ccoutant@gmail.com>
+
* incremental.cc (Sized_incremental_binary::setup_readers): Use
emplace_back for GCC 5 and later.
* incremental.h (Incremental_binary::Input_reader): Provide copy