From 6c04fd9b2fb4396c0189cb414ce598161ac8673e Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Fri, 22 Jun 2018 09:27:39 -0700 Subject: 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. --- gold/testsuite/Makefile.am | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'gold/testsuite/Makefile.am') diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am index ab3b258..f439011 100644 --- a/gold/testsuite/Makefile.am +++ b/gold/testsuite/Makefile.am @@ -3255,6 +3255,23 @@ exception_x86_64_bnd_2.o: exception_test_2.cc gcctestdir/as $(CXXCOMPILE) -c -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $< endif DEFAULT_TARGET_X86_64 +if DEFAULT_TARGET_X86_64 +check_SCRIPTS += gnu_property_test.sh +check_DATA += gnu_property_test.stdout +gnu_property_test.stdout: gnu_property_test + $(TEST_READELF) -n $< >$@ +gnu_property_test: gcctestdir/ld gnu_property_main.o gnu_property_a.o gnu_property_b.o gnu_property_c.o + $(LINK) -Bgcctestdir/ -o $@ gnu_property_main.o gnu_property_a.o gnu_property_b.o gnu_property_c.o +gnu_property_main.o: gnu_property_main.c + $(COMPILE) -c -o $@ $< +gnu_property_a.o: gnu_property_a.S + $(COMPILE) -c -o $@ $< +gnu_property_b.o: gnu_property_b.S + $(COMPILE) -c -o $@ $< +gnu_property_c.o: gnu_property_c.S + $(COMPILE) -c -o $@ $< +endif DEFAULT_TARGET_X86_64 + check_PROGRAMS += pr22266 pr22266: pr22266_main.o pr22266_ar.o gcctestdir/ld $(LINK) -Bgcctestdir/ pr22266_main.o pr22266_ar.o -- cgit v1.1