From: David Goulet Date: Fri, 24 Aug 2012 18:36:58 +0000 (-0400) Subject: Set hidden visibility for calls used in lttng-ctl X-Git-Tag: v2.1.0-rc3~12 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=32dd26fbc3c69fe677a7917535e10ace066e674c;hp=7671f53cf3b6029a3bf00e502a0a58ac7a82e378 Set hidden visibility for calls used in lttng-ctl The liblttng-ctl had multiple dynamic symbols that are only used inside the lttng-tools code tree and should not be exposed to the user. This commit sets every function calls found with "objdump -T" with a hidden visibility attribute. The strpbrk_or_eos() is set static and the struct net_families as well so we don't export those two symbols. At this stage there is still the filter_* calls that need to be fixed. Signed-off-by: David Goulet --- diff --git a/src/common/error.c b/src/common/error.c index 016027acd..d5403d804 100644 --- a/src/common/error.c +++ b/src/common/error.c @@ -109,6 +109,7 @@ static const char *error_string_array[] = { * * These code MUST be negative in other to treat that as an error value. */ +__attribute__((visibility("hidden"))) const char *error_get_str(int32_t code) { code = -code; diff --git a/src/common/futex.c b/src/common/futex.c index adfe66b1c..3c18f75fc 100644 --- a/src/common/futex.c +++ b/src/common/futex.c @@ -49,6 +49,7 @@ * futex() call. If active, we set the value and wake everyone else we indicate * that we are gone (cleanup() case). */ +__attribute__((visibility("hidden"))) void futex_wait_update(int32_t *futex, int active) { if (active) { @@ -65,6 +66,7 @@ void futex_wait_update(int32_t *futex, int active) /* * Prepare futex. */ +__attribute__((visibility("hidden"))) void futex_nto1_prepare(int32_t *futex) { uatomic_set(futex, -1); @@ -76,6 +78,7 @@ void futex_nto1_prepare(int32_t *futex) /* * Wait futex. */ +__attribute__((visibility("hidden"))) void futex_nto1_wait(int32_t *futex) { cmm_smp_mb(); @@ -90,6 +93,7 @@ void futex_nto1_wait(int32_t *futex) /* * Wake 1 futex. */ +__attribute__((visibility("hidden"))) void futex_nto1_wake(int32_t *futex) { if (caa_unlikely(uatomic_read(futex) == -1)) { diff --git a/src/common/hashtable/utils.c b/src/common/hashtable/utils.c index 3a0e2b76c..dd599d798 100644 --- a/src/common/hashtable/utils.c +++ b/src/common/hashtable/utils.c @@ -449,6 +449,7 @@ static uint32_t __attribute__((unused)) hashlittle(const void *key, /* * Hash function for number value. */ +__attribute__((visibility("hidden"))) unsigned long hash_key_ulong(void *_key, unsigned long seed) { union { @@ -469,6 +470,7 @@ unsigned long hash_key_ulong(void *_key, unsigned long seed) /* * Hash function for number value. */ +__attribute__((visibility("hidden"))) unsigned long hash_key_ulong(void *_key, unsigned long seed) { uint32_t key = (uint32_t) _key; @@ -480,6 +482,7 @@ unsigned long hash_key_ulong(void *_key, unsigned long seed) /* * Hash function for string. */ +__attribute__((visibility("hidden"))) unsigned long hash_key_str(void *key, unsigned long seed) { return hashlittle(key, strlen((char *) key), seed); @@ -488,6 +491,7 @@ unsigned long hash_key_str(void *key, unsigned long seed) /* * Hash function compare for number value. */ +__attribute__((visibility("hidden"))) int hash_match_key_ulong(void *key1, void *key2) { if (key1 == key2) { @@ -500,6 +504,7 @@ int hash_match_key_ulong(void *key1, void *key2) /* * Hash compare function for string. */ +__attribute__((visibility("hidden"))) int hash_match_key_str(void *key1, void *key2) { if (strcmp(key1, key2) == 0) { diff --git a/src/common/runas.c b/src/common/runas.c index 43b154f10..cb697feee 100644 --- a/src/common/runas.c +++ b/src/common/runas.c @@ -333,6 +333,7 @@ int run_as(int (*cmd)(void *data), void *data, uid_t uid, gid_t gid) } } +__attribute__((visibility("hidden"))) int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid) { struct run_as_mkdir_data data; @@ -344,6 +345,7 @@ int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid) return run_as(_mkdir_recursive, &data, uid, gid); } +__attribute__((visibility("hidden"))) int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid) { struct run_as_mkdir_data data; @@ -359,6 +361,7 @@ int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid) * Note: open_run_as is currently not working. We'd need to pass the fd * opened in the child to the parent. */ +__attribute__((visibility("hidden"))) int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid) { struct run_as_open_data data; diff --git a/src/common/sessiond-comm/inet.c b/src/common/sessiond-comm/inet.c index e049d021b..e8d3afef3 100644 --- a/src/common/sessiond-comm/inet.c +++ b/src/common/sessiond-comm/inet.c @@ -47,6 +47,7 @@ static const struct lttcomm_proto_ops inet_ops = { /* * Creates an PF_INET socket. */ +__attribute__((visibility("hidden"))) int lttcomm_create_inet_sock(struct lttcomm_sock *sock, int type, int proto) { int val = 1, ret; @@ -77,6 +78,7 @@ error: /* * Bind socket and return. */ +__attribute__((visibility("hidden"))) int lttcomm_bind_inet_sock(struct lttcomm_sock *sock) { int ret; @@ -93,6 +95,7 @@ int lttcomm_bind_inet_sock(struct lttcomm_sock *sock) /* * Connect PF_INET socket. */ +__attribute__((visibility("hidden"))) int lttcomm_connect_inet_sock(struct lttcomm_sock *sock) { int ret, closeret; @@ -122,6 +125,7 @@ error_connect: * Do an accept(2) on the sock and return the new lttcomm socket. The socket * MUST be bind(2) before. */ +__attribute__((visibility("hidden"))) struct lttcomm_sock *lttcomm_accept_inet_sock(struct lttcomm_sock *sock) { int new_fd; @@ -163,6 +167,7 @@ error: /* * Make the socket listen using LTTNG_SESSIOND_COMM_MAX_LISTEN. */ +__attribute__((visibility("hidden"))) int lttcomm_listen_inet_sock(struct lttcomm_sock *sock, int backlog) { int ret; @@ -193,6 +198,7 @@ end: * * Return the size of received data. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_recvmsg_inet_sock(struct lttcomm_sock *sock, void *buf, size_t len, int flags) { @@ -229,6 +235,7 @@ ssize_t lttcomm_recvmsg_inet_sock(struct lttcomm_sock *sock, void *buf, * * Return the size of sent data. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_sendmsg_inet_sock(struct lttcomm_sock *sock, void *buf, size_t len, int flags) { @@ -271,6 +278,7 @@ ssize_t lttcomm_sendmsg_inet_sock(struct lttcomm_sock *sock, void *buf, /* * Shutdown cleanly and close. */ +__attribute__((visibility("hidden"))) int lttcomm_close_inet_sock(struct lttcomm_sock *sock) { int ret; diff --git a/src/common/sessiond-comm/inet6.c b/src/common/sessiond-comm/inet6.c index 98aba0430..8fe027601 100644 --- a/src/common/sessiond-comm/inet6.c +++ b/src/common/sessiond-comm/inet6.c @@ -47,6 +47,7 @@ static const struct lttcomm_proto_ops inet6_ops = { /* * Creates an PF_INET socket. */ +__attribute__((visibility("hidden"))) int lttcomm_create_inet6_sock(struct lttcomm_sock *sock, int type, int proto) { int val = 1, ret; @@ -77,6 +78,7 @@ error: /* * Bind socket and return. */ +__attribute__((visibility("hidden"))) int lttcomm_bind_inet6_sock(struct lttcomm_sock *sock) { int ret; @@ -93,6 +95,7 @@ int lttcomm_bind_inet6_sock(struct lttcomm_sock *sock) /* * Connect PF_INET socket. */ +__attribute__((visibility("hidden"))) int lttcomm_connect_inet6_sock(struct lttcomm_sock *sock) { int ret, closeret; @@ -122,6 +125,7 @@ error_connect: * Do an accept(2) on the sock and return the new lttcomm socket. The socket * MUST be bind(2) before. */ +__attribute__((visibility("hidden"))) struct lttcomm_sock *lttcomm_accept_inet6_sock(struct lttcomm_sock *sock) { int new_fd; @@ -163,6 +167,7 @@ error: /* * Make the socket listen using LTTNG_SESSIOND_COMM_MAX_LISTEN. */ +__attribute__((visibility("hidden"))) int lttcomm_listen_inet6_sock(struct lttcomm_sock *sock, int backlog) { int ret; @@ -193,6 +198,7 @@ end: * * Return the size of received data. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_recvmsg_inet6_sock(struct lttcomm_sock *sock, void *buf, size_t len, int flags) { @@ -229,6 +235,7 @@ ssize_t lttcomm_recvmsg_inet6_sock(struct lttcomm_sock *sock, void *buf, * * Return the size of sent data. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_sendmsg_inet6_sock(struct lttcomm_sock *sock, void *buf, size_t len, int flags) { @@ -271,6 +278,7 @@ ssize_t lttcomm_sendmsg_inet6_sock(struct lttcomm_sock *sock, void *buf, /* * Shutdown cleanly and close. */ +__attribute__((visibility("hidden"))) int lttcomm_close_inet6_sock(struct lttcomm_sock *sock) { int ret; diff --git a/src/common/sessiond-comm/sessiond-comm.c b/src/common/sessiond-comm/sessiond-comm.c index 01e5f865d..8ced84734 100644 --- a/src/common/sessiond-comm/sessiond-comm.c +++ b/src/common/sessiond-comm/sessiond-comm.c @@ -39,7 +39,7 @@ /* For Inet6 socket */ #include "inet6.h" -struct lttcomm_net_family net_families[] = { +static struct lttcomm_net_family net_families[] = { { LTTCOMM_INET, lttcomm_create_inet_sock }, { LTTCOMM_INET6, lttcomm_create_inet6_sock }, }; @@ -73,6 +73,7 @@ static const char *lttcomm_readable_code[] = { * * These code MUST be negative in other to treat that as an error value. */ +__attribute__((visibility("hidden"))) const char *lttcomm_get_readable_code(enum lttcomm_return_code code) { code = -code; @@ -88,6 +89,7 @@ const char *lttcomm_get_readable_code(enum lttcomm_return_code code) * Create socket from an already allocated lttcomm socket structure and init * sockaddr in the lttcomm sock. */ +__attribute__((visibility("hidden"))) int lttcomm_create_sock(struct lttcomm_sock *sock) { int ret, _sock_type, _sock_proto, domain; @@ -127,6 +129,7 @@ error: /* * Return allocated lttcomm socket structure. */ +__attribute__((visibility("hidden"))) struct lttcomm_sock *lttcomm_alloc_sock(enum lttcomm_sock_proto proto) { struct lttcomm_sock *sock; @@ -151,6 +154,7 @@ end: * This is mostly useful when lttcomm_sock are passed between process where the * fd and ops have to be changed within the correct address space. */ +__attribute__((visibility("hidden"))) struct lttcomm_sock *lttcomm_alloc_copy_sock(struct lttcomm_sock *src) { struct lttcomm_sock *sock; @@ -175,6 +179,7 @@ alloc_error: * This is mostly useful when lttcomm_sock are passed between process where the * fd and ops have to be changed within the correct address space. */ +__attribute__((visibility("hidden"))) void lttcomm_copy_sock(struct lttcomm_sock *dst, struct lttcomm_sock *src) { /* Safety net */ @@ -191,6 +196,7 @@ void lttcomm_copy_sock(struct lttcomm_sock *dst, struct lttcomm_sock *src) /* * Init IPv4 sockaddr structure. */ +__attribute__((visibility("hidden"))) int lttcomm_init_inet_sockaddr(struct lttcomm_sockaddr *sockaddr, const char *ip, unsigned int port) { @@ -221,6 +227,7 @@ error: /* * Init IPv6 sockaddr structure. */ +__attribute__((visibility("hidden"))) int lttcomm_init_inet6_sockaddr(struct lttcomm_sockaddr *sockaddr, const char *ip, unsigned int port) { @@ -249,6 +256,7 @@ error: /* * Return allocated lttcomm socket structure from lttng URI. */ +__attribute__((visibility("hidden"))) struct lttcomm_sock *lttcomm_alloc_sock_from_uri(struct lttng_uri *uri) { int ret; @@ -301,6 +309,7 @@ alloc_error: /* * Destroy and free lttcomm socket. */ +__attribute__((visibility("hidden"))) void lttcomm_destroy_sock(struct lttcomm_sock *sock) { if (sock != NULL) { diff --git a/src/common/sessiond-comm/unix.c b/src/common/sessiond-comm/unix.c index 837d12b48..9ef04ee0d 100644 --- a/src/common/sessiond-comm/unix.c +++ b/src/common/sessiond-comm/unix.c @@ -35,6 +35,7 @@ /* * Connect to unix socket using the path name. */ +__attribute__((visibility("hidden"))) int lttcomm_connect_unix_sock(const char *pathname) { struct sockaddr_un sun; @@ -76,6 +77,7 @@ error: * Do an accept(2) on the sock and return the new file descriptor. The socket * MUST be bind(2) before. */ +__attribute__((visibility("hidden"))) int lttcomm_accept_unix_sock(int sock) { int new_fd; @@ -95,6 +97,7 @@ int lttcomm_accept_unix_sock(int sock) * Creates a AF_UNIX local socket using pathname bind the socket upon creation * and return the fd. */ +__attribute__((visibility("hidden"))) int lttcomm_create_unix_sock(const char *pathname) { struct sockaddr_un sun; @@ -129,6 +132,7 @@ error: /* * Make the socket listen using LTTNG_SESSIOND_COMM_MAX_LISTEN. */ +__attribute__((visibility("hidden"))) int lttcomm_listen_unix_sock(int sock) { int ret; @@ -147,6 +151,7 @@ int lttcomm_listen_unix_sock(int sock) * * Return the size of received data. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len) { struct msghdr msg; @@ -175,6 +180,7 @@ ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len) * * Return the size of sent data. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_send_unix_sock(int sock, void *buf, size_t len) { struct msghdr msg; @@ -205,6 +211,7 @@ ssize_t lttcomm_send_unix_sock(int sock, void *buf, size_t len) /* * Shutdown cleanly a unix socket. */ +__attribute__((visibility("hidden"))) int lttcomm_close_unix_sock(int sock) { int ret, closeret; @@ -228,6 +235,7 @@ int lttcomm_close_unix_sock(int sock) * * Returns the size of data sent, or negative error value. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_send_fds_unix_sock(int sock, int *fds, size_t nb_fd) { struct msghdr msg; @@ -282,6 +290,7 @@ ssize_t lttcomm_send_fds_unix_sock(int sock, int *fds, size_t nb_fd) * Expect at most "nb_fd" file descriptors. Returns the number of fd * actually received in nb_fd. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd) { struct iovec iov[1]; @@ -347,6 +356,7 @@ end: * * Returns the size of data sent, or negative error value. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_send_creds_unix_sock(int sock, void *buf, size_t len) { struct msghdr msg; @@ -402,6 +412,7 @@ ssize_t lttcomm_send_creds_unix_sock(int sock, void *buf, size_t len) * * Returns the size of received data, or negative error value. */ +__attribute__((visibility("hidden"))) ssize_t lttcomm_recv_creds_unix_sock(int sock, void *buf, size_t len, lttng_sock_cred *creds) { @@ -491,6 +502,7 @@ end: * Set socket option to use credentials passing. */ #ifdef __linux__ +__attribute__((visibility("hidden"))) int lttcomm_setsockopt_creds_unix_sock(int sock) { int ret, on = 1; @@ -503,6 +515,7 @@ int lttcomm_setsockopt_creds_unix_sock(int sock) return ret; } #elif (defined(__FreeBSD__) || defined(__CYGWIN__)) +__attribute__((visibility("hidden"))) int lttcomm_setsockopt_creds_unix_sock(int sock) { return 0; diff --git a/src/common/uri.c b/src/common/uri.c index ec5d42663..3550af975 100644 --- a/src/common/uri.c +++ b/src/common/uri.c @@ -56,7 +56,7 @@ static const struct uri_proto proto_uri[] = { * Return pointer to the character in s matching one of the characters in * accept. If nothing is found, return pointer to the end of string (eos). */ -const inline char *strpbrk_or_eos(const char *s, const char *accept) +static const inline char *strpbrk_or_eos(const char *s, const char *accept) { char *p = strpbrk(s, accept); if (p == NULL) { @@ -140,6 +140,7 @@ error: /* * Build a string URL from a lttng_uri object. */ +__attribute__((visibility("hidden"))) int uri_to_str_url(struct lttng_uri *uri, char *dst, size_t size) { int ipver, ret; @@ -176,6 +177,7 @@ int uri_to_str_url(struct lttng_uri *uri, char *dst, size_t size) * * Return 0 if equal else 1. */ +__attribute__((visibility("hidden"))) int uri_compare(struct lttng_uri *uri1, struct lttng_uri *uri2) { return memcmp(uri1, uri2, sizeof(struct lttng_uri)); @@ -184,6 +186,7 @@ int uri_compare(struct lttng_uri *uri1, struct lttng_uri *uri2) /* * Free URI memory. */ +__attribute__((visibility("hidden"))) void uri_free(struct lttng_uri *uri) { /* Safety check */ @@ -195,6 +198,7 @@ void uri_free(struct lttng_uri *uri) /* * Return an allocated URI. */ +__attribute__((visibility("hidden"))) struct lttng_uri *uri_create(void) { struct lttng_uri *uri; @@ -223,6 +227,7 @@ struct lttng_uri *uri_create(void) * This code was originally licensed GPLv2 so we acknolwedge the Free Software * Foundation here for the work and to make sure we are compliant with it. */ +__attribute__((visibility("hidden"))) ssize_t uri_parse(const char *str_uri, struct lttng_uri **uris) { int ret, i = 0; diff --git a/src/common/utils.c b/src/common/utils.c index 729aa76f9..781888eb3 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -32,6 +32,7 @@ * /tmp/test1 does, the real path is returned. In normal time, realpath(3) * fails if the end point directory does not exist. */ +__attribute__((visibility("hidden"))) char *utils_expand_path(const char *path) { const char *end_path = path; @@ -84,6 +85,7 @@ error: /* * Create a pipe in dst. */ +__attribute__((visibility("hidden"))) int utils_create_pipe(int *dst) { int ret; @@ -106,6 +108,7 @@ int utils_create_pipe(int *dst) * Make sure the pipe opened by this function are closed at some point. Use * utils_close_pipe(). */ +__attribute__((visibility("hidden"))) int utils_create_pipe_cloexec(int *dst) { int ret, i; @@ -134,6 +137,7 @@ error: /* * Close both read and write side of the pipe. */ +__attribute__((visibility("hidden"))) void utils_close_pipe(int *src) { int i, ret; @@ -158,6 +162,7 @@ void utils_close_pipe(int *src) /* * Create a new string using two strings range. */ +__attribute__((visibility("hidden"))) char *utils_strdupdelim(const char *begin, const char *end) { char *str;