From 0b65c07b97c43e8891c2e14061270878a85222c8 Mon Sep 17 00:00:00 2001 From: Sriraman Tallam Date: Thu, 22 Feb 2018 13:56:46 -0800 Subject: New plugin interface to get list of symbols wrapped with --wrap option. 2018-02-22 Sriraman Tallam * plugin.cc (get_wrap_symbols): New plugin interface. (load): Add get_wrap_symbols to transfer vector. * plugin-api.h (ld_plugin_get_wrap_symbols): New plugin interface. * testsuite/plugin_test.c (onload): Call and check get_wrap_symbols interface. * testsuite/plugin_test_wrap_symbols.sh: New test script. * testsuite/plugin_test_wrap_symbols_1.cc: New file. * testsuite/plugin_test_wrap_symbols_2.cc: New file. * testsuite/Makefile.am (plugin_test_wrap_symbols): New test. * testsuite/Makefile.in: Regenerate. --- include/plugin-api.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/plugin-api.h b/include/plugin-api.h index 03e21f4..24cd695 100644 --- a/include/plugin-api.h +++ b/include/plugin-api.h @@ -378,6 +378,14 @@ typedef enum ld_plugin_status (*ld_plugin_register_new_input) (ld_plugin_new_input_handler handler); +/* The linker's interface for getting the list of wrapped symbols using the + --wrap option. This sets *NUM_SYMBOLS to number of wrapped symbols and + *WRAP_SYMBOL_LIST to the list of wrapped symbols. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_wrap_symbols) (uint64_t *num_symbols, + const char ***wrap_symbol_list); enum ld_plugin_level { @@ -422,7 +430,8 @@ enum ld_plugin_tag LDPT_GET_SYMBOLS_V3 = 28, LDPT_GET_INPUT_SECTION_ALIGNMENT = 29, LDPT_GET_INPUT_SECTION_SIZE = 30, - LDPT_REGISTER_NEW_INPUT_HOOK = 31 + LDPT_REGISTER_NEW_INPUT_HOOK = 31, + LDPT_GET_WRAP_SYMBOLS = 32 }; /* The plugin transfer vector. */ @@ -457,6 +466,7 @@ struct ld_plugin_tv ld_plugin_get_input_section_alignment tv_get_input_section_alignment; ld_plugin_get_input_section_size tv_get_input_section_size; ld_plugin_register_new_input tv_register_new_input; + ld_plugin_get_wrap_symbols tv_get_wrap_symbols; } tv_u; }; -- cgit v1.1