6c04fd9b2f
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.
45 lines
1.2 KiB
ArmAsm
45 lines
1.2 KiB
ArmAsm
#define NT_GNU_PROPERTY_TYPE_0 5
|
|
|
|
#define GNU_PROPERTY_STACK_SIZE 1
|
|
#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
|
|
#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
|
|
#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001
|
|
#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002
|
|
|
|
#if __SIZEOF_PTRDIFF_T__ == 8
|
|
# define ALIGN 3
|
|
#elif __SIZEOF_PTRDIFF_T__ == 4
|
|
# define ALIGN 2
|
|
#endif
|
|
|
|
.section ".note.gnu.property", "a"
|
|
.p2align ALIGN
|
|
.long 1f - 0f /* name length */
|
|
.long 5f - 2f /* data length */
|
|
.long NT_GNU_PROPERTY_TYPE_0 /* note type */
|
|
0: .asciz "GNU" /* vendor name */
|
|
1:
|
|
.p2align ALIGN
|
|
2: .long GNU_PROPERTY_STACK_SIZE /* pr_type. */
|
|
.long 4f - 3f /* pr_datasz. */
|
|
3:
|
|
.dc.a 0x111100 /* Stack size. */
|
|
4:
|
|
.p2align ALIGN
|
|
.long GNU_PROPERTY_NO_COPY_ON_PROTECTED /* pr_type. */
|
|
.long 0 /* pr_datasz. */
|
|
.p2align ALIGN
|
|
.long GNU_PROPERTY_X86_ISA_1_USED
|
|
.long 4
|
|
.byte 0x11,0x10,0x00,0x00
|
|
.p2align ALIGN
|
|
.long GNU_PROPERTY_X86_ISA_1_NEEDED
|
|
.long 4
|
|
.byte 0x11,0x10,0x00,0x00
|
|
.p2align ALIGN
|
|
.long GNU_PROPERTY_X86_FEATURE_1_AND
|
|
.long 4
|
|
.byte 0x01,0x00,0x00,0x00
|
|
.p2align ALIGN
|
|
5:
|