]> git.baikalelectronics.ru Git - uboot.git/commit
Revert "time: add weak annotation to timer_read_counter declaration"
authorHarald Seiler <hws@denx.de>
Thu, 5 Jan 2023 00:08:47 +0000 (01:08 +0100)
committerTom Rini <trini@konsulko.com>
Thu, 12 Jan 2023 19:06:16 +0000 (14:06 -0500)
commit3f098adda957fd0815b0d4c9d4d03ce05229b9f9
tree244e5993ab9969fb4519f50ad0c6dccaf3d62535
parent840977b5c7436d8bca69303319ffccc521e107e8
Revert "time: add weak annotation to timer_read_counter declaration"

This reverts commit 65ba7add0d609bbd035b8d42fafdaf428ac24751.

A weak extern is a nasty sight to behold: If the symbol is never
defined, on ARM, the linker will replace the function call with a NOP.
This behavior isn't well documented but there are at least some hints
to it [1].

When timer_read_counter() is not defined, this obviously does the wrong
thing here and it does so silently.  The consequence is that a board
without timer_read_counter() will sleep for random amounts and generally
have erratic get_ticks() values.

Drop the __weak annotation of the extern so a linker error is raised
when timer_read_counter() is not defined.  This is okay, the original
reason for the reverted change - breaking the sandbox build - no longer
applies.

Final sidenote:  This was the only weak extern in the entire tree at
this time as far as I can tell.  I guess we should avoid introduction of
them again as they are obviously a very big footgun.

[1]: https://stackoverflow.com/questions/31203402/gcc-behavior-for-unresolved-weak-functions

Fixes: 65ba7add0d60 ("time: add weak annotation to timer_read_counter declaration")
Reported-by: Serge Bazanski <q3k@q3k.org>
Signed-off-by: Harald Seiler <hws@denx.de>
lib/time.c