diff options
author | Joshua Oreman <oremanj@rwcr.net> | 2010-08-18 16:37:22 -0700 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2010-08-19 13:37:52 +0100 |
commit | 49d6f5700561be091b2b25bb7641708333e4911d (patch) | |
tree | ac34755391ad3025d3fd817af3696d1bca3276cf /src/include/ipxe/rarp.h | |
parent | 059c11e1e6173fdb56f21c60932cf2e15a359f1b (diff) | |
download | ipxe-49d6f5700561be091b2b25bb7641708333e4911d.tar.gz |
[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>
Diffstat (limited to 'src/include/ipxe/rarp.h')
0 files changed, 0 insertions, 0 deletions