aboutsummaryrefslogtreecommitdiff
path: root/gold/testsuite/Makefile.am
diff options
context:
space:
mode:
authorStephen Crane <sjc@immunant.com>2017-12-11 14:58:38 -0800
committerSriraman Tallam <tmsriram@google.com>2017-12-11 14:58:38 -0800
commitc4e648430f3c5c135310f87280d45dba581aaa7b (patch)
tree026ea986bfbb2b5856062f4507404f4f00d2d27c /gold/testsuite/Makefile.am
parent4c5ae11b42433dbffc33fbde75c9e415594504d8 (diff)
downloadgdb-c4e648430f3c5c135310f87280d45dba581aaa7b.zip
gdb-c4e648430f3c5c135310f87280d45dba581aaa7b.tar.gz
gdb-c4e648430f3c5c135310f87280d45dba581aaa7b.tar.bz2
Add plugin API for processing plugin-added input files
Gold plugins may wish to further process an input file added by a plugin. For example, the plugin may need to assign a unique segment for sections in a plugin-generated input file. This patch adds a plugin callback that the linker will call when reading symbols from a new input file added after the all_symbols_read event (i.e. an input file added by a plugin). 2017-12-11 Stephen Crane <sjc@immunant.com> * plugin-api.h: Add new plugin hook to allow processing of input files added by a plugin. (ld_plugin_new_input_handler): New function hook type. (ld_plugin_register_new_input): New interface. (LDPT_REGISTER_NEW_INPUT_HOOK): New enum val. (tv_register_new_input): New member. * plugin.cc (Plugin::load): Include hooks for register_new_input in transfer vector. (Plugin::new_input): New function. (register_new_input): New function. (Plugin_manager::claim_file): Call Plugin::new_input if in replacement phase. * plugin.h (Plugin::set_new_input_handler): New function. * testsuite/plugin_new_section_layout.c: New plugin to test new_input plugin API. * testsuite/plugin_final_layout.sh: Add new input test. * testsuite/Makefile.am (plugin_layout_new_file): New test case. * testsuite/Makefile.in: Regenerate.
Diffstat (limited to 'gold/testsuite/Makefile.am')
-rw-r--r--gold/testsuite/Makefile.am17
1 files changed, 17 insertions, 0 deletions
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
index aad244c..16cae80 100644
--- a/gold/testsuite/Makefile.am
+++ b/gold/testsuite/Makefile.am
@@ -2401,6 +2401,23 @@ plugin_section_order.so: plugin_section_order.o gcctestdir/ld
plugin_section_order.o: plugin_section_order.c
$(COMPILE) -O0 -c -fpic -o $@ $<
+# Uses the plugin_final_layout.sh script above to avoid duplication
+check_DATA += plugin_layout_new_file.stdout plugin_layout_new_file_readelf.stdout
+MOSTLYCLEANFILES += plugin_layout_new_file
+plugin_final_layout.o.syms: plugin_final_layout.o
+ $(TEST_READELF) -sW $< >$@ 2>/dev/null
+plugin_layout_new_file: plugin_final_layout.o.syms plugin_test.so plugin_new_section_layout.so gcctestdir/ld
+ $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_test.so" -Wl,--plugin,"./plugin_new_section_layout.so" plugin_final_layout.o.syms
+plugin_layout_new_file.stdout: plugin_layout_new_file
+ $(TEST_NM) -n --synthetic plugin_layout_new_file > plugin_layout_new_file.stdout
+plugin_layout_new_file_readelf.stdout: plugin_layout_new_file
+ $(TEST_READELF) -Wl plugin_layout_new_file > plugin_layout_new_file_readelf.stdout
+
+plugin_new_section_layout.so: plugin_new_section_layout.o gcctestdir/ld
+ $(LINK) -Bgcctestdir/ -shared plugin_new_section_layout.o
+plugin_new_section_layout.o: plugin_new_section_layout.c
+ $(COMPILE) -O0 -c -fpic -o $@ $<
+
check_SCRIPTS += plugin_layout_with_alignment.sh
check_DATA += plugin_layout_with_alignment.stdout
MOSTLYCLEANFILES += plugin_layout_with_alignment