event: Change EVENT_SPY to global
This creates static records at present, but it causes a problem with clang and LTO: the linker list records are sometimes dropped from the image. Fix this by making the records global. Update to use __used while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
2ff5490d7d
commit
569524741a
1 changed files with 5 additions and 2 deletions
|
@ -123,10 +123,13 @@ static inline const char *event_spy_id(struct evspy_info *spy)
|
|||
* The only solution I can think of is to mark linker-list entries as 'used'
|
||||
* using an attribute. This should be safe, since we don't actually want to drop
|
||||
* any of these. However this does slightly limit LTO's optimisation choices.
|
||||
*
|
||||
* Another issue has come up, only with clang: using 'static' makes it throw
|
||||
* away the linker-list entry sometimes, e.g. with the EVT_FT_FIXUP entry in
|
||||
* vbe_simple.c - so for now, make it global.
|
||||
*/
|
||||
#define EVENT_SPY(_type, _func) \
|
||||
static __attribute__((used)) ll_entry_declare(struct evspy_info, \
|
||||
_type, evspy_info) = \
|
||||
__used ll_entry_declare(struct evspy_info, _type, evspy_info) = \
|
||||
_ESPY_REC(_type, _func)
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue