From b21318bd2c29fcca8f99c1de7facdaa5cb2e66e2 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 11 May 2023 14:31:09 +0000 Subject: Add LDPT_REGISTER_CLAIM_FILE_HOOK_V2 linker plugin hook [GCC PR109128] This is one part of the fix for GCC PR109128, along with a corresponding GCC change. Without this patch, what happens in the linker, when an unused object in a .a file has offload data, is that elf_link_is_defined_archive_symbol calls bfd_link_plugin_object_p, which ends up calling the plugin's claim_file_handler, which then records the object as one with offload data. That is, the linker never decides to use the object in the first place, but use of this _p interface (called as part of trying to decide whether to use the object) results in the plugin deciding to use its offload data (and a consequent mismatch in the offload data present at runtime). The new hook allows the linker plugin to distinguish calls to claim_file_handler that know the object is being used by the linker (from ldmain.c:add_archive_element), from calls that don't know it's being used by the linker (from elf_link_is_defined_archive_symbol); in the latter case, the plugin should avoid recording the object as one with offload data. bfd/ * plugin.c (struct plugin_list_entry): Add claim_file_v2. (register_claim_file_v2): New. (try_load_plugin): Use LDPT_REGISTER_CLAIM_FILE_HOOK_V2. (ld_plugin_object_p): Take second argument. (bfd_link_plugin_object_p): Update call to ld_plugin_object_p. (register_ld_plugin_object_p): Update argument prototype. (bfd_plugin_object_p): Update call to ld_plugin_object_p. * plugin.h (register_ld_plugin_object_p): Update argument prototype. include/ * plugin.api.h (ld_plugin_claim_file_handler_v2) (ld_plugin_register_claim_file_v2) (LDPT_REGISTER_CLAIM_FILE_HOOK_V2): New. (struct ld_plugin_tv): Add tv_register_claim_file_v2. ld/ * plugin.c (struct plugin): Add claim_file_handler_v2. (LDPT_REGISTER_CLAIM_FILE_HOOK_V2): New. (plugin_object_p): Add second argument. Update call to plugin_call_claim_file. (register_claim_file_v2): New. (set_tv_header): Handle LDPT_REGISTER_CLAIM_FILE_HOOK_V2. (plugin_call_claim_file): Add argument known_used. (plugin_maybe_claim): Update call to plugin_object_p. * testplug.c, testplug2.c, testplug3.c, testplug4.c: Handle LDPT_REGISTER_CLAIM_FILE_HOOK_V2. * testsuite/ld-plugin/plugin-1.d, testsuite/ld-plugin/plugin-10.d, testsuite/ld-plugin/plugin-11.d, testsuite/ld-plugin/plugin-13.d, testsuite/ld-plugin/plugin-14.d, testsuite/ld-plugin/plugin-15.d, testsuite/ld-plugin/plugin-16.d, testsuite/ld-plugin/plugin-17.d, testsuite/ld-plugin/plugin-18.d, testsuite/ld-plugin/plugin-19.d, testsuite/ld-plugin/plugin-2.d, testsuite/ld-plugin/plugin-26.d, testsuite/ld-plugin/plugin-3.d, testsuite/ld-plugin/plugin-30.d, testsuite/ld-plugin/plugin-4.d, testsuite/ld-plugin/plugin-5.d, testsuite/ld-plugin/plugin-6.d, testsuite/ld-plugin/plugin-7.d, testsuite/ld-plugin/plugin-8.d, testsuite/ld-plugin/plugin-9.d: Update test expectations. --- bfd/plugin.c | 25 ++++++++++++++++++++----- bfd/plugin.h | 2 +- include/plugin-api.h | 16 ++++++++++++++++ ld/plugin.c | 30 ++++++++++++++++++++++++------ ld/testplug.c | 6 ++++++ ld/testplug2.c | 5 +++++ ld/testplug3.c | 5 +++++ ld/testplug4.c | 5 +++++ ld/testsuite/ld-plugin/plugin-1.d | 1 + ld/testsuite/ld-plugin/plugin-10.d | 1 + ld/testsuite/ld-plugin/plugin-11.d | 1 + ld/testsuite/ld-plugin/plugin-13.d | 1 + ld/testsuite/ld-plugin/plugin-14.d | 1 + ld/testsuite/ld-plugin/plugin-15.d | 1 + ld/testsuite/ld-plugin/plugin-16.d | 1 + ld/testsuite/ld-plugin/plugin-17.d | 1 + ld/testsuite/ld-plugin/plugin-18.d | 1 + ld/testsuite/ld-plugin/plugin-19.d | 1 + ld/testsuite/ld-plugin/plugin-2.d | 1 + ld/testsuite/ld-plugin/plugin-26.d | 1 + ld/testsuite/ld-plugin/plugin-3.d | 1 + ld/testsuite/ld-plugin/plugin-30.d | 1 + ld/testsuite/ld-plugin/plugin-4.d | 1 + ld/testsuite/ld-plugin/plugin-5.d | 1 + ld/testsuite/ld-plugin/plugin-6.d | 1 + ld/testsuite/ld-plugin/plugin-7.d | 1 + ld/testsuite/ld-plugin/plugin-8.d | 1 + ld/testsuite/ld-plugin/plugin-9.d | 1 + 28 files changed, 102 insertions(+), 12 deletions(-) diff --git a/bfd/plugin.c b/bfd/plugin.c index 66d286a..b798d34 100644 --- a/bfd/plugin.c +++ b/bfd/plugin.c @@ -129,6 +129,7 @@ struct plugin_list_entry { /* These must be initialized for each IR object with LTO wrapper. */ ld_plugin_claim_file_handler claim_file; + ld_plugin_claim_file_handler_v2 claim_file_v2; ld_plugin_all_symbols_read_handler all_symbols_read; ld_plugin_all_symbols_read_handler cleanup_handler; bool has_symbol_type; @@ -159,6 +160,16 @@ register_claim_file (ld_plugin_claim_file_handler handler) return LDPS_OK; } + +/* Register a claim-file handler, version 2. */ + +static enum ld_plugin_status +register_claim_file_v2 (ld_plugin_claim_file_handler_v2 handler) +{ + current_plugin->claim_file_v2 = handler; + return LDPS_OK; +} + static enum ld_plugin_status add_symbols (void * handle, int nsyms, @@ -337,7 +348,7 @@ try_load_plugin (const char *pname, bool build_list_p) { void *plugin_handle; - struct ld_plugin_tv tv[5]; + struct ld_plugin_tv tv[6]; int i; ld_plugin_onload onload; enum ld_plugin_status status; @@ -403,6 +414,10 @@ try_load_plugin (const char *pname, tv[i].tv_u.tv_register_claim_file = register_claim_file; ++i; + tv[i].tv_tag = LDPT_REGISTER_CLAIM_FILE_HOOK_V2; + tv[i].tv_u.tv_register_claim_file_v2 = register_claim_file_v2; + + ++i; tv[i].tv_tag = LDPT_ADD_SYMBOLS; tv[i].tv_u.tv_add_symbols = add_symbols; @@ -439,7 +454,7 @@ try_load_plugin (const char *pname, /* There may be plugin libraries in lib/bfd-plugins. */ static int has_plugin_list = -1; -static bfd_cleanup (*ld_plugin_object_p) (bfd *); +static bfd_cleanup (*ld_plugin_object_p) (bfd *, bool); static const char *plugin_name; @@ -463,7 +478,7 @@ bool bfd_link_plugin_object_p (bfd *abfd) { if (ld_plugin_object_p) - return ld_plugin_object_p (abfd) != NULL; + return ld_plugin_object_p (abfd, false) != NULL; return false; } @@ -480,7 +495,7 @@ bfd_plugin_target_p (const bfd_target *target) /* Register OBJECT_P to be used by bfd_plugin_object_p. */ void -register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *)) +register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *, bool)) { ld_plugin_object_p = object_p; } @@ -572,7 +587,7 @@ static bfd_cleanup bfd_plugin_object_p (bfd *abfd) { if (ld_plugin_object_p) - return ld_plugin_object_p (abfd); + return ld_plugin_object_p (abfd, false); if (abfd->plugin_format == bfd_plugin_unknown && !load_plugin (abfd)) return NULL; diff --git a/bfd/plugin.h b/bfd/plugin.h index 8da436a..6a6f0f1 100644 --- a/bfd/plugin.h +++ b/bfd/plugin.h @@ -27,7 +27,7 @@ void bfd_plugin_set_plugin (const char *); bool bfd_plugin_target_p (const bfd_target *); bool bfd_plugin_specified_p (void); bool bfd_link_plugin_object_p (bfd *); -void register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *)); +void register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *, bool)); void bfd_plugin_close_file_descriptor (bfd *, int); typedef struct plugin_data_struct diff --git a/include/plugin-api.h b/include/plugin-api.h index 379828b..395d5bc 100644 --- a/include/plugin-api.h +++ b/include/plugin-api.h @@ -260,6 +260,13 @@ enum ld_plugin_status (*ld_plugin_claim_file_handler) ( const struct ld_plugin_input_file *file, int *claimed); +/* The plugin library's "claim file" handler, version 2. */ + +typedef +enum ld_plugin_status +(*ld_plugin_claim_file_handler_v2) ( + const struct ld_plugin_input_file *file, int *claimed, int known_used); + /* The plugin library's "all symbols read" handler. */ typedef @@ -278,6 +285,13 @@ typedef enum ld_plugin_status (*ld_plugin_register_claim_file) (ld_plugin_claim_file_handler handler); +/* The linker's interface for registering the "claim file" handler, + version 2. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_claim_file_v2) (ld_plugin_claim_file_handler_v2 handler); + /* The linker's interface for registering the "all symbols read" handler. */ typedef @@ -553,6 +567,7 @@ enum ld_plugin_tag LDPT_GET_WRAP_SYMBOLS, LDPT_ADD_SYMBOLS_V2, LDPT_GET_API_VERSION, + LDPT_REGISTER_CLAIM_FILE_HOOK_V2 }; /* The plugin transfer vector. */ @@ -565,6 +580,7 @@ struct ld_plugin_tv int tv_val; const char *tv_string; ld_plugin_register_claim_file tv_register_claim_file; + ld_plugin_register_claim_file_v2 tv_register_claim_file_v2; ld_plugin_register_all_symbols_read tv_register_all_symbols_read; ld_plugin_register_cleanup tv_register_cleanup; ld_plugin_add_symbols tv_add_symbols; diff --git a/ld/plugin.c b/ld/plugin.c index 34aefc5..970cf56 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -87,6 +87,7 @@ typedef struct plugin size_t n_args; /* The plugin's event handlers. */ ld_plugin_claim_file_handler claim_file_handler; + ld_plugin_claim_file_handler_v2 claim_file_handler_v2; ld_plugin_all_symbols_read_handler all_symbols_read_handler; ld_plugin_cleanup_handler cleanup_handler; /* TRUE if the cleanup handlers have been called. */ @@ -159,6 +160,7 @@ static const enum ld_plugin_tag tv_header_tags[] = LDPT_LINKER_OUTPUT, LDPT_OUTPUT_NAME, LDPT_REGISTER_CLAIM_FILE_HOOK, + LDPT_REGISTER_CLAIM_FILE_HOOK_V2, LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK, LDPT_REGISTER_CLEANUP_HOOK, LDPT_ADD_SYMBOLS, @@ -181,7 +183,7 @@ static bool plugin_notice (struct bfd_link_info *, struct bfd_link_hash_entry *, bfd *, asection *, bfd_vma, flagword); -static bfd_cleanup plugin_object_p (bfd *); +static bfd_cleanup plugin_object_p (bfd *, bool); #if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) @@ -467,6 +469,15 @@ register_claim_file (ld_plugin_claim_file_handler handler) return LDPS_OK; } +/* Register a claim-file version 2 handler. */ +static enum ld_plugin_status +register_claim_file_v2 (ld_plugin_claim_file_handler_v2 handler) +{ + ASSERT (called_plugin); + called_plugin->claim_file_handler_v2 = handler; + return LDPS_OK; +} + /* Register an all-symbols-read handler. */ static enum ld_plugin_status register_all_symbols_read (ld_plugin_all_symbols_read_handler handler) @@ -1019,6 +1030,9 @@ set_tv_header (struct ld_plugin_tv *tv) case LDPT_REGISTER_CLAIM_FILE_HOOK: TVU(register_claim_file) = register_claim_file; break; + case LDPT_REGISTER_CLAIM_FILE_HOOK_V2: + TVU(register_claim_file_v2) = register_claim_file_v2; + break; case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: TVU(register_all_symbols_read) = register_all_symbols_read; break; @@ -1144,7 +1158,8 @@ plugin_load_plugins (void) /* Call 'claim file' hook for all plugins. */ static int -plugin_call_claim_file (const struct ld_plugin_input_file *file, int *claimed) +plugin_call_claim_file (const struct ld_plugin_input_file *file, int *claimed, + bool known_used) { plugin_t *curplug = plugins_list; *claimed = false; @@ -1155,7 +1170,10 @@ plugin_call_claim_file (const struct ld_plugin_input_file *file, int *claimed) enum ld_plugin_status rv; called_plugin = curplug; - rv = (*curplug->claim_file_handler) (file, claimed); + if (curplug->claim_file_handler_v2) + rv = (*curplug->claim_file_handler_v2) (file, claimed, known_used); + else + rv = (*curplug->claim_file_handler) (file, claimed); called_plugin = NULL; if (rv != LDPS_OK) set_plugin_error (curplug->name); @@ -1187,7 +1205,7 @@ plugin_cleanup (bfd *abfd ATTRIBUTE_UNUSED) } static bfd_cleanup -plugin_object_p (bfd *ibfd) +plugin_object_p (bfd *ibfd, bool known_used) { int claimed; plugin_input_file_t *input; @@ -1239,7 +1257,7 @@ plugin_object_p (bfd *ibfd) claimed = 0; - if (plugin_call_claim_file (&file, &claimed)) + if (plugin_call_claim_file (&file, &claimed, known_used)) einfo (_("%F%P: %s: plugin reported error claiming file\n"), plugin_error_plugin ()); @@ -1294,7 +1312,7 @@ void plugin_maybe_claim (lang_input_statement_type *entry) { ASSERT (entry->header.type == lang_input_statement_enum); - if (plugin_object_p (entry->the_bfd)) + if (plugin_object_p (entry->the_bfd, true)) { bfd *abfd = entry->the_bfd->plugin_dummy_bfd; diff --git a/ld/testplug.c b/ld/testplug.c index 796d67f..4b1bb8e 100644 --- a/ld/testplug.c +++ b/ld/testplug.c @@ -82,6 +82,7 @@ static const tag_name_t tag_names[] = ADDENTRY(LDPT_LINKER_OUTPUT), ADDENTRY(LDPT_OPTION), ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK), + ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK_V2), ADDENTRY(LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK), ADDENTRY(LDPT_REGISTER_CLEANUP_HOOK), ADDENTRY(LDPT_ADD_SYMBOLS), @@ -100,6 +101,7 @@ static const tag_name_t tag_names[] = /* Function pointers to cache hooks passed at onload time. */ static ld_plugin_register_claim_file tv_register_claim_file = 0; +static ld_plugin_register_claim_file_v2 tv_register_claim_file_v2 = 0; static ld_plugin_register_all_symbols_read tv_register_all_symbols_read = 0; static ld_plugin_register_cleanup tv_register_cleanup = 0; static ld_plugin_add_symbols tv_add_symbols = 0; @@ -389,6 +391,7 @@ dump_tv_tag (size_t n, struct ld_plugin_tv *tv) tv->tv_u.tv_string); break; case LDPT_REGISTER_CLAIM_FILE_HOOK: + case LDPT_REGISTER_CLAIM_FILE_HOOK_V2: case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: case LDPT_REGISTER_CLEANUP_HOOK: case LDPT_ADD_SYMBOLS: @@ -440,6 +443,9 @@ parse_tv_tag (struct ld_plugin_tv *tv) case LDPT_REGISTER_CLAIM_FILE_HOOK: SETVAR(tv_register_claim_file); break; + case LDPT_REGISTER_CLAIM_FILE_HOOK_V2: + SETVAR(tv_register_claim_file_v2); + break; case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: SETVAR(tv_register_all_symbols_read); break; diff --git a/ld/testplug2.c b/ld/testplug2.c index 0a33392..f1d6f5f 100644 --- a/ld/testplug2.c +++ b/ld/testplug2.c @@ -82,6 +82,7 @@ static const tag_name_t tag_names[] = ADDENTRY(LDPT_LINKER_OUTPUT), ADDENTRY(LDPT_OPTION), ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK), + ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK_V2), ADDENTRY(LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK), ADDENTRY(LDPT_REGISTER_CLEANUP_HOOK), ADDENTRY(LDPT_ADD_SYMBOLS), @@ -100,6 +101,7 @@ static const tag_name_t tag_names[] = /* Function pointers to cache hooks passed at onload time. */ static ld_plugin_register_claim_file tv_register_claim_file = 0; +static ld_plugin_register_claim_file_v2 tv_register_claim_file_v2 = 0; static ld_plugin_register_all_symbols_read tv_register_all_symbols_read = 0; static ld_plugin_register_cleanup tv_register_cleanup = 0; static ld_plugin_add_symbols tv_add_symbols = 0; @@ -392,6 +394,9 @@ parse_tv_tag (struct ld_plugin_tv *tv) case LDPT_REGISTER_CLAIM_FILE_HOOK: SETVAR(tv_register_claim_file); break; + case LDPT_REGISTER_CLAIM_FILE_HOOK_V2: + SETVAR(tv_register_claim_file_v2); + break; case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: SETVAR(tv_register_all_symbols_read); break; diff --git a/ld/testplug3.c b/ld/testplug3.c index 7e009e1..652d11f 100644 --- a/ld/testplug3.c +++ b/ld/testplug3.c @@ -82,6 +82,7 @@ static const tag_name_t tag_names[] = ADDENTRY(LDPT_LINKER_OUTPUT), ADDENTRY(LDPT_OPTION), ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK), + ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK_V2), ADDENTRY(LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK), ADDENTRY(LDPT_REGISTER_CLEANUP_HOOK), ADDENTRY(LDPT_ADD_SYMBOLS), @@ -100,6 +101,7 @@ static const tag_name_t tag_names[] = /* Function pointers to cache hooks passed at onload time. */ static ld_plugin_register_claim_file tv_register_claim_file = 0; +static ld_plugin_register_claim_file_v2 tv_register_claim_file_v2 = 0; static ld_plugin_register_all_symbols_read tv_register_all_symbols_read = 0; static ld_plugin_register_cleanup tv_register_cleanup = 0; static ld_plugin_add_symbols tv_add_symbols = 0; @@ -371,6 +373,9 @@ parse_tv_tag (struct ld_plugin_tv *tv) case LDPT_REGISTER_CLAIM_FILE_HOOK: SETVAR(tv_register_claim_file); break; + case LDPT_REGISTER_CLAIM_FILE_HOOK_V2: + SETVAR(tv_register_claim_file_v2); + break; case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: SETVAR(tv_register_all_symbols_read); break; diff --git a/ld/testplug4.c b/ld/testplug4.c index 109d500..9b63e83 100644 --- a/ld/testplug4.c +++ b/ld/testplug4.c @@ -82,6 +82,7 @@ static const tag_name_t tag_names[] = ADDENTRY(LDPT_LINKER_OUTPUT), ADDENTRY(LDPT_OPTION), ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK), + ADDENTRY(LDPT_REGISTER_CLAIM_FILE_HOOK_V2), ADDENTRY(LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK), ADDENTRY(LDPT_REGISTER_CLEANUP_HOOK), ADDENTRY(LDPT_ADD_SYMBOLS), @@ -100,6 +101,7 @@ static const tag_name_t tag_names[] = /* Function pointers to cache hooks passed at onload time. */ static ld_plugin_register_claim_file tv_register_claim_file = 0; +static ld_plugin_register_claim_file_v2 tv_register_claim_file_v2 = 0; static ld_plugin_register_all_symbols_read tv_register_all_symbols_read = 0; static ld_plugin_register_cleanup tv_register_cleanup = 0; static ld_plugin_add_symbols tv_add_symbols = 0; @@ -392,6 +394,9 @@ parse_tv_tag (struct ld_plugin_tv *tv) case LDPT_REGISTER_CLAIM_FILE_HOOK: SETVAR(tv_register_claim_file); break; + case LDPT_REGISTER_CLAIM_FILE_HOOK_V2: + SETVAR(tv_register_claim_file_v2); + break; case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: SETVAR(tv_register_all_symbols_read); break; diff --git a/ld/testsuite/ld-plugin/plugin-1.d b/ld/testsuite/ld-plugin/plugin-1.d index 6aae4cd..381974f 100644 --- a/ld/testsuite/ld-plugin/plugin-1.d +++ b/ld/testsuite/ld-plugin/plugin-1.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-10.d b/ld/testsuite/ld-plugin/plugin-10.d index f92ee65..f6bb0eb 100644 --- a/ld/testsuite/ld-plugin/plugin-10.d +++ b/ld/testsuite/ld-plugin/plugin-10.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-11.d b/ld/testsuite/ld-plugin/plugin-11.d index 6a5abcf..63b8160 100644 --- a/ld/testsuite/ld-plugin/plugin-11.d +++ b/ld/testsuite/ld-plugin/plugin-11.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-13.d b/ld/testsuite/ld-plugin/plugin-13.d index 55dea65..4521b34 100644 --- a/ld/testsuite/ld-plugin/plugin-13.d +++ b/ld/testsuite/ld-plugin/plugin-13.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-14.d b/ld/testsuite/ld-plugin/plugin-14.d index 81365af..bd8ef65 100644 --- a/ld/testsuite/ld-plugin/plugin-14.d +++ b/ld/testsuite/ld-plugin/plugin-14.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-15.d b/ld/testsuite/ld-plugin/plugin-15.d index 02c5e60..1647500 100644 --- a/ld/testsuite/ld-plugin/plugin-15.d +++ b/ld/testsuite/ld-plugin/plugin-15.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-16.d b/ld/testsuite/ld-plugin/plugin-16.d index 504fbdb..f1ee03a 100644 --- a/ld/testsuite/ld-plugin/plugin-16.d +++ b/ld/testsuite/ld-plugin/plugin-16.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-17.d b/ld/testsuite/ld-plugin/plugin-17.d index 159d4e4..5a520b6 100644 --- a/ld/testsuite/ld-plugin/plugin-17.d +++ b/ld/testsuite/ld-plugin/plugin-17.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-18.d b/ld/testsuite/ld-plugin/plugin-18.d index 284fd05..63d8147 100644 --- a/ld/testsuite/ld-plugin/plugin-18.d +++ b/ld/testsuite/ld-plugin/plugin-18.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-19.d b/ld/testsuite/ld-plugin/plugin-19.d index 621ee76..aa30763 100644 --- a/ld/testsuite/ld-plugin/plugin-19.d +++ b/ld/testsuite/ld-plugin/plugin-19.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-2.d b/ld/testsuite/ld-plugin/plugin-2.d index 91822c1..f272f53 100644 --- a/ld/testsuite/ld-plugin/plugin-2.d +++ b/ld/testsuite/ld-plugin/plugin-2.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-26.d b/ld/testsuite/ld-plugin/plugin-26.d index c631e38..fef25d5 100644 --- a/ld/testsuite/ld-plugin/plugin-26.d +++ b/ld/testsuite/ld-plugin/plugin-26.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-3.d b/ld/testsuite/ld-plugin/plugin-3.d index f030da4..0c23218 100644 --- a/ld/testsuite/ld-plugin/plugin-3.d +++ b/ld/testsuite/ld-plugin/plugin-3.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-30.d b/ld/testsuite/ld-plugin/plugin-30.d index eb9d424..690ae83 100644 --- a/ld/testsuite/ld-plugin/plugin-30.d +++ b/ld/testsuite/ld-plugin/plugin-30.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-4.d b/ld/testsuite/ld-plugin/plugin-4.d index b240eb2..ac4769b 100644 --- a/ld/testsuite/ld-plugin/plugin-4.d +++ b/ld/testsuite/ld-plugin/plugin-4.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-5.d b/ld/testsuite/ld-plugin/plugin-5.d index 52abaf2..5c8e8b8 100644 --- a/ld/testsuite/ld-plugin/plugin-5.d +++ b/ld/testsuite/ld-plugin/plugin-5.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-6.d b/ld/testsuite/ld-plugin/plugin-6.d index b1854ac..41f44fb 100644 --- a/ld/testsuite/ld-plugin/plugin-6.d +++ b/ld/testsuite/ld-plugin/plugin-6.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-7.d b/ld/testsuite/ld-plugin/plugin-7.d index c77b66f..b202edc 100644 --- a/ld/testsuite/ld-plugin/plugin-7.d +++ b/ld/testsuite/ld-plugin/plugin-7.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-8.d b/ld/testsuite/ld-plugin/plugin-8.d index ca24227..0a38ddb 100644 --- a/ld/testsuite/ld-plugin/plugin-8.d +++ b/ld/testsuite/ld-plugin/plugin-8.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* diff --git a/ld/testsuite/ld-plugin/plugin-9.d b/ld/testsuite/ld-plugin/plugin-9.d index 1155f4f..35fde40 100644 --- a/ld/testsuite/ld-plugin/plugin-9.d +++ b/ld/testsuite/ld-plugin/plugin-9.d @@ -5,6 +5,7 @@ Hello from testplugin. .*: LDPT_LINKER_OUTPUT value 0x1 \(1\) .*: LDPT_OUTPUT_NAME 'tmpdir/main.x' .*: LDPT_REGISTER_CLAIM_FILE_HOOK func@0x.* +.*: LDPT_REGISTER_CLAIM_FILE_HOOK_V2 func@0x.* .*: LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK func@0x.* .*: LDPT_REGISTER_CLEANUP_HOOK func@0x.* .*: LDPT_ADD_SYMBOLS func@0x.* -- cgit v1.1