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.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2018-06-22 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
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.
|
||||
|
||||
2018-04-09 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* powerpc.h (R_POWERPC_PLTSEQ, R_POWERPC_PLTCALL): Define.
|
||||
|
||||
+18
-1
@@ -984,7 +984,9 @@ enum
|
||||
NT_GNU_BUILD_ID = 3,
|
||||
// The version of gold used to link. Th descriptor is just a
|
||||
// string.
|
||||
NT_GNU_GOLD_VERSION = 4
|
||||
NT_GNU_GOLD_VERSION = 4,
|
||||
// Program property note, as described in "Linux Extensions to the gABI".
|
||||
NT_GNU_PROPERTY_TYPE_0 = 5
|
||||
};
|
||||
|
||||
// The OS values which may appear in word 0 of a NT_GNU_ABI_TAG note.
|
||||
@@ -999,6 +1001,21 @@ enum
|
||||
ELF_NOTE_OS_SYLLABLE = 5
|
||||
};
|
||||
|
||||
// Program property types for NT_GNU_PROPERTY_TYPE_0.
|
||||
|
||||
enum
|
||||
{
|
||||
GNU_PROPERTY_STACK_SIZE = 1,
|
||||
GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2,
|
||||
GNU_PROPERTY_LOPROC = 0xc0000000,
|
||||
GNU_PROPERTY_X86_ISA_1_USED = 0xc0000000,
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED = 0xc0000001,
|
||||
GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002,
|
||||
GNU_PROPERTY_HIPROC = 0xdfffffff,
|
||||
GNU_PROPERTY_LOUSER = 0xe0000000,
|
||||
GNU_PROPERTY_HIUSER = 0xffffffff
|
||||
};
|
||||
|
||||
} // End namespace elfcpp.
|
||||
|
||||
// Include internal details after defining the types.
|
||||
|
||||
@@ -103,6 +103,12 @@ enum
|
||||
R_X86_64_GNU_VTENTRY = 251
|
||||
};
|
||||
|
||||
// The bit values that can appear in the GNU_PROPERTY_X86_FEATURE_1_AND
|
||||
// program property.
|
||||
|
||||
const uint64_t GNU_PROPERTY_X86_FEATURE_1_IBT = 1ULL << 0;
|
||||
const uint64_t GNU_PROPERTY_X86_FEATURE_1_SHSTK = 1ULL << 1;
|
||||
|
||||
} // End namespace elfcpp.
|
||||
|
||||
#endif // !defined(ELFCPP_X86_64_H)
|
||||
|
||||
Reference in New Issue
Block a user