Add support for .note.gnu.property sections.
authorCary Coutant <ccoutant@gmail.com>
Fri, 22 Jun 2018 16:27:39 +0000 (09:27 -0700)
committerCary Coutant <ccoutant@gmail.com>
Fri, 22 Jun 2018 16:52:00 +0000 (09:52 -0700)
commit6c04fd9b2fb4396c0189cb414ce598161ac8673e
tree8b3630b03edb8d663a592b472cae1292aad05e7c
parent8e7767e3f782c46451a548d708f5582669d7a6d7
Add support for .note.gnu.property sections.

elfcpp/
PR gold/22914
* elfcpp.h (NT_GNU_PROPERTY_TYPE_0): New note type.
(GNU_PROPERTY_*): New Gnu property types.
* x86_64.h (GNU_PROPERTY_X86_FEATURE_1_IBT)
(GNU_PROPERTY_X86_FEATURE_1_SHSTK): New x86 feature bits.

gold/
PR gold/22914
* layout.cc (Layout::Layout): Initialize gnu_properties_.
(read_sized_value, write_sized_value): New functions.
(Layout::layout_gnu_property): New method.
(Layout::create_notes): Call create_gnu_properties_note.
(Layout::create_gnu_properties_note): New method.
* layout.h (Layout::layout_gnu_property): New method.
(Layout::create_gnu_properties_note): New method.
(Layout::Gnu_property, Layout::Gnu_properties): New types.
(Layout::gnu_properties_): New data member.
* object.cc (Sized_relobj_file::layout_gnu_property_section): New
method.
(Sized_relobj_file::do_layout): Handle .note.gnu.property sections.
* object.h (Sized_relobj_file::layout_gnu_property_section): New
method.
* target.h (Target::merge_gnu_property): New method.
(Target::do_merge_gnu_property): New virtual method.
* x86_64.cc (Target_x86_64::do_merge_gnu_property): New method.
* testsuite/Makefile.am (gnu_property_test): New test case.
* testsuite/Makefile.in: Regenerate.
* testsuite/gnu_property_a.S: New source file.
* testsuite/gnu_property_b.S: New source file.
* testsuite/gnu_property_c.S: New source file.
* testsuite/gnu_property_main.c: New source file.
* testsuite/gnu_property_test.sh: New test script.
17 files changed:
elfcpp/ChangeLog
elfcpp/elfcpp.h
elfcpp/x86_64.h
gold/ChangeLog
gold/layout.cc
gold/layout.h
gold/object.cc
gold/object.h
gold/target.h
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/gnu_property_a.S [new file with mode: 0644]
gold/testsuite/gnu_property_b.S [new file with mode: 0644]
gold/testsuite/gnu_property_c.S [new file with mode: 0644]
gold/testsuite/gnu_property_main.c [new file with mode: 0644]
gold/testsuite/gnu_property_test.sh [new file with mode: 0755]
gold/x86_64.cc