https://sourceware.org/bugzilla/show_bug.cgi?id=24613

Fangrui Song <i at maskray dot me> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |i at maskray dot me

--- Comment #6 from Fangrui Song <i at maskray dot me> ---
Hi Dilyan and Nick,

-Wl,--warn-unresolved-symbols is very rare. Making `-z defs
--warn-unresolved-symbols` warn rather than error may be fine. It is unlikely
to cause a friction.

# warning
% gold a1.o --warn-unresolved-symbols -z defs
a1.o(.text+0x1): warning: undefined reference to 'undef'
% ld.lld a1.o --warn-unresolved-symbols -z defs
ld.lld: warning: undefined symbol: undef
>>> referenced by a1.o:(.text+0x1)

# error
% ld.bfd a1.o --warn-unresolved-symbols -z defs
ld.bfd: a1.o: in function `_shared':
(.text+0x1): undefined reference to `undef'

Another similar option is --unresolved-symbols=report-all. All of GNU ld, gold
and lld warn with --warn-unresolved-symbols
% ld.bfd a1.o --warn-unresolved-symbols --unresolved-symbols=report-all
ld.bfd: a1.o: in function `_shared':
(.text+0x1): warning: undefined reference to `undef'

My understanding:

There are two kinds of unresolved references: 1) from object files 2) from
shared objects. --unresolved-symbols= toggles both bits while -z (un)defs and
--(no-)allow-shlib-undefined toggles one bit, respectively. I personally favor
the fine-grained options over --unresolved-symbols=

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to