mirror of git://gcc.gnu.org/git/gcc.git
![]() This is one part of the fix for PR109128, along with a corresponding binutils's linker 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. PR middle-end/109128 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. lto-plugin/ * lto-plugin.c (register_claim_file_v2): New. (claim_file_handler_v2): New. (claim_file_handler): Wrap claim_file_handler_v2. (onload): Handle LDPT_REGISTER_CLAIM_FILE_HOOK_V2. |
||
---|---|---|
.. | ||
cuda | ||
gdb | ||
COPYING | ||
COPYING3 | ||
ChangeLog | ||
ChangeLog-9103 | ||
ChangeLog.jit | ||
ansidecl.h | ||
btf.h | ||
ctf.h | ||
demangle.h | ||
dwarf2.def | ||
dwarf2.h | ||
dyn-string.h | ||
environ.h | ||
fibheap.h | ||
filenames.h | ||
floatformat.h | ||
fnmatch.h | ||
gcc-c-fe.def | ||
gcc-c-interface.h | ||
gcc-cp-fe.def | ||
gcc-cp-interface.h | ||
gcc-interface.h | ||
getopt.h | ||
gomp-constants.h | ||
hashtab.h | ||
hsa.h | ||
hsa_ext_amd.h | ||
hsa_ext_image.h | ||
leb128.h | ||
libiberty.h | ||
longlong.h | ||
lto-symtab.h | ||
md5.h | ||
objalloc.h | ||
obstack.h | ||
partition.h | ||
plugin-api.h | ||
safe-ctype.h | ||
sha1.h | ||
simple-object.h | ||
sort.h | ||
splay-tree.h | ||
symcat.h | ||
timeval-utils.h | ||
vtv-change-permission.h | ||
xregex.h | ||
xregex2.h | ||
xtensa-config.h | ||
xtensa-dynconfig.h |