For PR lto/47247, I updated the linker plugin API to add a new entry point, LDPT_GET_SYMBOLS_V2, and a new symbol resolution code, LDPR_PREVAILING_DEF_IRONLY_EXP. Ian approved the patch on the binutils side, but it includes a change to an include file shared with gcc. This patch to sync include/plugin-api.h with the binutils copy.
Committed at r179220. -cary include/ChangeLog PR lto/47247 * plugin-api.h (enum ld_plugin_symbol_resolution): Add LDPR_PREVAILING_DEF_IRONLY_EXP. (enum ld_plugin_tag): Add LDPT_GET_SYMBOLS_V2. Index: plugin-api.h =================================================================== --- plugin-api.h (revision 179219) +++ plugin-api.h (working copy) @@ -155,7 +155,13 @@ enum ld_plugin_symbol_resolution LDPR_RESOLVED_EXEC, /* This symbol was resolved by a definition in a shared object. */ - LDPR_RESOLVED_DYN + LDPR_RESOLVED_DYN, + + /* This is the prevailing definition of the symbol, with no + references from regular objects. It is only referenced from IR + code, but the symbol is exported and may be referenced from + a dynamic object (not seen at link time). */ + LDPR_PREVAILING_DEF_IRONLY_EXP }; /* The plugin library's "claim file" handler. */ @@ -347,7 +353,8 @@ enum ld_plugin_tag LDPT_GET_INPUT_SECTION_NAME, LDPT_GET_INPUT_SECTION_CONTENTS, LDPT_UPDATE_SECTION_ORDER, - LDPT_ALLOW_SECTION_ORDERING + LDPT_ALLOW_SECTION_ORDERING, + LDPT_GET_SYMBOLS_V2 }; /* The plugin transfer vector. */