diff options
author | Simon Marlow <marlowsd@gmail.com> | 2009-08-05 10:21:59 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2009-08-05 10:21:59 +0000 |
commit | 7d7c187b4a12f1bb350e85cdb0115e19537cc704 (patch) | |
tree | 2bfcb2d4e6ebacce3e80dd8fa454452aa76c0049 /rts/RtsSignals.h | |
parent | acdd7c95066cf6505a4d2e8683f119146805af91 (diff) | |
download | haskell-7d7c187b4a12f1bb350e85cdb0115e19537cc704.tar.gz |
Declare RTS-private prototypes with __attribute__((visibility("hidden")))
This has no effect with static libraries, but when the RTS is in a
shared library it does two things:
- it prevents the function from being exposed by the shared library
- internal calls to the function can use the faster non-PLT calls,
because the function cannot be overriden at link time.
Diffstat (limited to 'rts/RtsSignals.h')
-rw-r--r-- | rts/RtsSignals.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/rts/RtsSignals.h b/rts/RtsSignals.h index 601a46b79c..3b569df5d3 100644 --- a/rts/RtsSignals.h +++ b/rts/RtsSignals.h @@ -25,12 +25,14 @@ #if RTS_USER_SIGNALS +#pragma GCC visibility push(hidden) + /* * Function: initUserSignals() * * Initialize the console handling substrate. */ -extern void initUserSignals(void); +void initUserSignals(void); /* * Function: initDefaultHandlers() @@ -38,10 +40,10 @@ extern void initUserSignals(void); * Install any default signal/console handlers. Currently we install a * Ctrl+C handler that shuts down the RTS in an orderly manner. */ -extern void initDefaultHandlers(void); -extern void resetDefaultHandlers(void); +void initDefaultHandlers(void); +void resetDefaultHandlers(void); -extern void freeSignalHandlers(void); +void freeSignalHandlers(void); /* * Function: blockUserSignals() @@ -51,21 +53,21 @@ extern void freeSignalHandlers(void); * when emptying the queue by running the handlers. * */ -extern void blockUserSignals(void); +void blockUserSignals(void); /* * Function: unblockUserSignals() * * The inverse of blockUserSignals(); re-enable the deliver of console events. */ -extern void unblockUserSignals(void); +void unblockUserSignals(void); /* * Function: awaitUserSignals() * * Wait for the next console event. Currently a NOP (returns immediately.) */ -extern void awaitUserSignals(void); +void awaitUserSignals(void); /* * Function: markSignalHandlers() @@ -73,7 +75,9 @@ extern void awaitUserSignals(void); * Evacuate the handler queue. _Assumes_ that console event delivery * has already been blocked. */ -extern void markSignalHandlers (evac_fn evac, void *user); +void markSignalHandlers (evac_fn evac, void *user); + +#pragma GCC visibility pop #endif /* RTS_USER_SIGNALS */ |