mirror of
https://github.com/ipxe/ipxe
synced 2025-12-15 09:04:37 +03:00
[compiler] Prevent empty weak function stubs from being removed
Even with the noinline specifier added by commit 1a260f8, gcc may skip
calls to non-inlinable functions that it knows have no side
effects. This caused the get_cached_dhcpack() call in start_dhcp(),
the weak stub of which has no code in its body, to be removed,
preventing cached DHCP from working.
Fix by adding a __keepme macro to compiler.h expanding to asm(""), as
recommended by gcc's info page, and using it in the weak stub for
get_cached_dhcpack().
Reported-by: Aaron Brooks <aaron@brooks1.net>
Tested-by: Aaron Brooks <aaron@brooks1.net>
Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
committed by
Michael Brown
parent
059c11e1e6
commit
49d6f57005
@@ -1389,7 +1389,7 @@ static struct sockaddr dhcp_peer = {
|
||||
/**
|
||||
* Get cached DHCPACK where none exists
|
||||
*/
|
||||
__weak void get_cached_dhcpack ( void ) {}
|
||||
__weak void get_cached_dhcpack ( void ) { __keepme }
|
||||
|
||||
/**
|
||||
* Start DHCP state machine on a network device
|
||||
|
||||
Reference in New Issue
Block a user