https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78253
Bug ID: 78253
Summary: [ARM] call weak function instead of strong when called
through pointer
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: clyon at gcc dot gnu.org
Target Milestone: ---
This is a forward/summary of https://bugs.linaro.org/show_bug.cgi?id=2562
Since GCC 5, on ARM a code fragment like:
some_module.c:
int __attribute__((weak)) some_weak_func(void)
{
return 10;
}
void save_weak_func_pointer(void)
{
__weak_func_ptr = some_weak_func;
}
saves the address of the weak implementation in __weak_func_ptr even though the
function can be overridden by a strong implementation in another object file.
so even if main.c has:
int some_weak_func(void)
{
return 11;
}
when calling through __weak_func_ptr(), we end up calling the weak
implementation.