https://sourceware.org/bugzilla/show_bug.cgi?id=32071
Bug ID: 32071
Summary: undefined weak hidden function symbols resolves to
garbage
Product: binutils
Version: 2.43
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: gold
Assignee: ccoutant at gmail dot com
Reporter: ishitatsuyuki at gmail dot com
CC: chris at smowton dot net, ian at airs dot com
Target Milestone: ---
When there is no definition for a weak undef STT_FUNC symbol, the function's
address should resolve to absolute zero, not some random address.
In Bug 15435 gold was changed to accept weak undefs with STV_HIDDEN, however
when no definition is present it seems to resolve to some garbage address [1],
instead of zero. This is easily reproducible with the sample from the same bug.
---
extern void undefined () __attribute__((visibility("hidden")))
__attribute__((weak));
int main ()
{
if (&undefined != 0) return 1;
return 0;
}
---
$ gcc main.c -fuse-ld=bfd && ./a.out; echo $?
0
$ gcc main.c -fuse-ld=gold && ./a.out; echo $?
1
$ gcc main.c -fuse-ld=lld && ./a.out; echo $?
0
$ gcc main.c -fuse-ld=mold && ./a.out; echo $?
0
[1]:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29986#note_2516917
--
You are receiving this mail because:
You are on the CC list for the bug.