}
static
-int register_to_sessiond(int socket, enum lttng_ust_ctl_socket_type type)
+int register_to_sessiond(int socket, enum lttng_ust_ctl_socket_type type,
+ const char *procname)
{
return ustcomm_send_reg_msg(socket,
type,
lttng_ust_rb_alignof(uint16_t) * CHAR_BIT,
lttng_ust_rb_alignof(uint32_t) * CHAR_BIT,
lttng_ust_rb_alignof(uint64_t) * CHAR_BIT,
- lttng_ust_rb_alignof(unsigned long) * CHAR_BIT);
+ lttng_ust_rb_alignof(unsigned long) * CHAR_BIT,
+ procname);
}
static
sock_info->root_handle = ret;
}
- ret = register_to_sessiond(sock_info->socket, LTTNG_UST_CTL_SOCKET_CMD);
+ ret = register_to_sessiond(sock_info->socket, LTTNG_UST_CTL_SOCKET_CMD,
+ sock_info->procname);
if (ret < 0) {
ERR("Error registering to %s ust cmd socket",
sock_info->name);
}
ret = register_to_sessiond(sock_info->notify_socket,
- LTTNG_UST_CTL_SOCKET_NOTIFY);
+ LTTNG_UST_CTL_SOCKET_NOTIFY, sock_info->procname);
if (ret < 0) {
ERR("Error registering to %s ust notify socket",
sock_info->name);
* Expose a canary symbol of the previous ABI to ensure we catch uses of a
* liblttng-ust.so.0 dlopen'd after .so.1 has been loaded. Use a different
* symbol than the detection code to ensure we don't detect ourself.
+ *
+ * This scheme will only work on systems where the global symbol table has
+ * priority when resolving the symbols of a dlopened shared object, which is
+ * the case on Linux but not on FreeBSD.
*/
void init_usterr(void);
void init_usterr(void)