On Thu, Jan 05, 2023 at 01:08:47AM +0100, Harald Seiler wrote: > 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 <q...@q3k.org> > Signed-off-by: Harald Seiler <h...@denx.de>
Applied to u-boot/master, thanks! -- Tom
signature.asc
Description: PGP signature