https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84901
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |lto CC| |hjl.tools at gmail dot com, | |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- I think this is a BFD linker bug, with --dynamic-list the linker resolution with GNU ld 2.30 is the following 2 func.o 4 190 37612a23f90e023e PREVAILING_DEF_IRONLY func_attr_used_disabled 194 37612a23f90e023e PREVAILING_DEF_IRONLY func_attr_used_enabled 199 37612a23f90e023e PREVAILING_DEF_IRONLY var_attr_used_disabled 202 37612a23f90e023e PREVAILING_DEF_IRONLY var_attr_used_enabled main.o 5 201 7ea6415e61742ba7 PREVAILING_DEF main 224 7ea6415e61742ba7 RESOLVED_IR var_attr_used_disabled 226 7ea6415e61742ba7 RESOLVED_IR var_attr_used_enabled 218 7ea6415e61742ba7 RESOLVED_IR func_attr_used_enabled 220 7ea6415e61742ba7 RESOLVED_IR func_attr_used_disabled while when using gold it is 2 func.o 4 190 1ff7d470667c7203 PREVAILING_DEF_IRONLY_EXP func_attr_used_disabled 194 1ff7d470667c7203 PREVAILING_DEF_IRONLY_EXP func_attr_used_enabled 199 1ff7d470667c7203 PREVAILING_DEF_IRONLY_EXP var_attr_used_disabled 202 1ff7d470667c7203 PREVAILING_DEF_IRONLY_EXP var_attr_used_enabled main.o 5 201 64462b5d6de9d7fa PREVAILING_DEF main 224 64462b5d6de9d7fa RESOLVED_IR var_attr_used_disabled 226 64462b5d6de9d7fa RESOLVED_IR var_attr_used_enabled 218 64462b5d6de9d7fa RESOLVED_IR func_attr_used_enabled 220 64462b5d6de9d7fa RESOLVED_IR func_attr_used_disabled which looks correct to me and results in properly exported symbols. So it should work correctly when using gold (from recent enough binutils version, didn't try to bisect). HJ, can you look to fix GNU ld?