lttng-ust.git
3 years agoAdd structure size field to struct lttng_session
Mathieu Desnoyers [Thu, 11 Mar 2021 21:02:00 +0000 (16:02 -0500)] 
Add structure size field to struct lttng_session

Made possible by ABI bump. This scheme can be used for extensibility.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8d264969b866e7f06a835731753911718dd09727

3 years agoAdd structure size field to struct lttng_event
Mathieu Desnoyers [Thu, 11 Mar 2021 21:00:19 +0000 (16:00 -0500)] 
Add structure size field to struct lttng_event

Made possible by ABI bump. This scheme can be used for extensibility.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I38b15636605339f3f8702983aeaffafa1ab56719

3 years agoRefactoring: introduce session private structure
Mathieu Desnoyers [Thu, 11 Mar 2021 20:48:52 +0000 (15:48 -0500)] 
Refactoring: introduce session private structure

Move private session fields to private structure. Made possible by major
ABI bump.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I7fa738363c79bfb9636f2c0e57d5f40fe95da7ca

3 years agoRefactoring: introduce bytecode runtime private structure
Mathieu Desnoyers [Thu, 11 Mar 2021 20:26:03 +0000 (15:26 -0500)] 
Refactoring: introduce bytecode runtime private structure

Move private bytecode runtime fields to private structure. Made possible
by major ABI bump.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I142d0edafb2fe1231454d145822b60a8a8a91c6e

3 years agoRefactoring: introduce event private structure
Mathieu Desnoyers [Thu, 11 Mar 2021 20:07:20 +0000 (15:07 -0500)] 
Refactoring: introduce event private structure

Move private event fields to private structure. Made possible by major
ABI bump.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I241a2a574fb2b58d1b0e466058931af45e1d69e0

3 years agoNamespace tracepoint_init and tracepoint_exit
Michael Jeanson [Wed, 10 Mar 2021 22:07:57 +0000 (17:07 -0500)] 
Namespace tracepoint_init and tracepoint_exit

These are ABI symbols of liblttng-ust-tracepoint, namespace them under
'lttng_ust_tp_'.

Change-Id: Ic9fe173cd475179444a2a680e2e3eaba6622cbef
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoRemove lttng_ust_synchronize_trace public symbol
Michael Jeanson [Wed, 10 Mar 2021 22:15:28 +0000 (17:15 -0500)] 
Remove lttng_ust_synchronize_trace public symbol

Remove 'lttng_ust_synchronize_trace', an ABI symbol of the
liblttng-ust-tracepoint library that only wraps
'lttng_ust_urcu_synchronize_rcu', a common extern symbol across
all libraries.

Replace it with direct calls to 'lttng_ust_urcu_synchronize_rcu'.

Change-Id: Ieed2e4a195bb1cfab5a97d746024a6a1c5854362
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide remaining tracer core private symbols
Michael Jeanson [Wed, 10 Mar 2021 15:38:46 +0000 (10:38 -0500)] 
Hide remaining tracer core private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: Id95785fcfbb79355bec1422e06f608ea3dd53134
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoExpose liblttng-libc-wrapper malloc ctor in public header
Michael Jeanson [Wed, 10 Mar 2021 15:57:30 +0000 (10:57 -0500)] 
Expose liblttng-libc-wrapper malloc ctor in public header

Document the reason why the liblttng-libc-wrapper malloc constructor is
ABI in a public header. Also namespace it under
'lttng_ust_libc_wrapper_' in case we add other public symbols to this
library.

Change-Id: I2db6f685ba5368a1ce1929e6baa64cd6322c83e7
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide private context utils symbols
Michael Jeanson [Wed, 10 Mar 2021 15:39:39 +0000 (10:39 -0500)] 
Hide private context utils symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I458dbe5f3abc712543a035dad241c40df60dae55
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoAdd missing doc/man/vtracelog.3 to gitignore
Michael Jeanson [Wed, 10 Mar 2021 15:36:59 +0000 (10:36 -0500)] 
Add missing doc/man/vtracelog.3 to gitignore

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iffa3d5082ba2df645cdbc068373aa6eda051f596

3 years agotracef-tracelog-limitations.txt: take variadic variant into account
Philippe Proulx [Wed, 10 Mar 2021 03:41:34 +0000 (22:41 -0500)] 
tracef-tracelog-limitations.txt: take variadic variant into account

This patch changes `tracef-tracelog-limitations.txt` so as to always
mention the variadic variant where the non-variadic variant is mentioned
for consistency.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I13250fdae647ea58c042238c88b674c56d4f3fc0

3 years agotracef.3.txt/tracelog.3.txt: always take variadic variants into account
Philippe Proulx [Wed, 10 Mar 2021 03:38:35 +0000 (22:38 -0500)] 
tracef.3.txt/tracelog.3.txt: always take variadic variants into account

This patch makes the `tracef.3.txt` and `tracelog.3.txt` manual page
sources always mention the variadic variant where the non-variadic
variant is mentioned for consistency.

This patch also changes the `va_list` type from the "SYNOPSIS" sections
as vtracef() and vtracelog() are macros. The type of the `ap` parameter
(`va_list`) is given in the "DESCRIPTION" sections.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I84a795d16a39a483c43f1963189cd7e1faa5c329

3 years agodoc/man/Makefile.am: handle vtracef(3) and vtracelog(3) correctly
Philippe Proulx [Wed, 10 Mar 2021 03:35:48 +0000 (22:35 -0500)] 
doc/man/Makefile.am: handle vtracef(3) and vtracelog(3) correctly

This patch adds explicit grouped target rules to `doc/man/Makefile.am`
to handle the vtracef(3) and vtracelog(3) manual page generation
correctly.

This patch also adds `vtracef.3` and `vtracelog.3` to the list of files
to clean.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia91db414693f1d336933a347ada13cfd430a9e53

3 years agotracelog.3.txt: add `vtracelog` to the "NAME" section
Philippe Proulx [Wed, 10 Mar 2021 03:03:34 +0000 (22:03 -0500)] 
tracelog.3.txt: add `vtracelog` to the "NAME" section

This makes the build process also generate `vtracelog.3` which only
includes the contents of `tracelog.3`.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I328242aeec9653f98e3888c07903fdd74d4c73ed

3 years agolttng-ust(3): reorganize the "Context information" section
Philippe Proulx [Tue, 9 Mar 2021 20:48:06 +0000 (15:48 -0500)] 
lttng-ust(3): reorganize the "Context information" section

This patch reorganizes the "Context information" of the
lttng-ust(3) manual page so as to categorize the context fields
into:

* General context fields
* Process context fields
* perf context fields
* Namespace context fields
* Credential context fields

This patch also changes parts of said section to replace some external
manual page references with English nouns for consistency, moving the
references to parentheses.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib93111ab9d252f891fab0a21c106dcf7d33975a3

3 years agoHide tls fixup private symbols
Michael Jeanson [Tue, 9 Mar 2021 21:44:22 +0000 (16:44 -0500)] 
Hide tls fixup private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I83f6f9c65689cbc686560f87295f23b6d0e49ad6
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide ust_lock private symbols
Michael Jeanson [Tue, 9 Mar 2021 21:35:20 +0000 (16:35 -0500)] 
Hide ust_lock private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I1dbe60bba35dffd8c36db7f9145a80a9ab56ab3e
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide strutils private symbols
Michael Jeanson [Tue, 9 Mar 2021 19:53:26 +0000 (14:53 -0500)] 
Hide strutils private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I5be6ac61b27b31c0a1901b14aa0e864f331e4346
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide lttng_ust_statedump private symbols
Michael Jeanson [Tue, 9 Mar 2021 19:51:36 +0000 (14:51 -0500)] 
Hide lttng_ust_statedump private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: Iba28039a659231d45b67813eb1f4f8913a612bbd
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide print_op private symbol
Michael Jeanson [Tue, 9 Mar 2021 19:49:03 +0000 (14:49 -0500)] 
Hide print_op private symbol

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Also namespace print_op to lttng_bytecode_print_op.

Change-Id: I937b37605d88503102227e82e58600e66f89b5c6
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide lttng_ust_getenv private symbols
Michael Jeanson [Tue, 9 Mar 2021 19:41:26 +0000 (14:41 -0500)] 
Hide lttng_ust_getenv private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Also namespace lttng_getenv to lttng_ust_getenv to match the init
function.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I03f9c4f431d521a3b2419bde23a51d495155730c

3 years agocounter: shrink down number of dimensions to 4
Mathieu Desnoyers [Wed, 10 Mar 2021 14:22:25 +0000 (09:22 -0500)] 
counter: shrink down number of dimensions to 4

This is in line with upcoming development using counters.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I13cae3176b71966ff5c731d903d4e677870a346b

3 years agocounters: add coalesce_hits to control API and protocol
Mathieu Desnoyers [Wed, 10 Mar 2021 14:20:36 +0000 (09:20 -0500)] 
counters: add coalesce_hits to control API and protocol

This will be required by an upcoming feature in a subsequent release, so
plan ahead with a coalesce_hits field. It is currently unused by
liblttng-ust.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id15f573f523cd3873a7190135ff7009fbcfbb042

3 years agoliblttng-ust-fd doesn't use the internal logging system
Michael Jeanson [Tue, 9 Mar 2021 17:14:12 +0000 (12:14 -0500)] 
liblttng-ust-fd doesn't use the internal logging system

liblttng-ust-fd is a standalone library that only uses liblttng-ust
public symbols and doesn't currently use the internal logging system. We
don't need to link against the private convenience library and
initialize the logging system, clean this up.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ifd111722e4034de70f68adc3c84b466e3d490370

3 years agoMake 'lttng/ust-error.h' official API
Michael Jeanson [Thu, 4 Mar 2021 15:47:44 +0000 (10:47 -0500)] 
Make 'lttng/ust-error.h' official API

Change-Id: I94a96a08438b915980d47042202869253811e410
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoDrop unused typedef t_statedump_func_ptr from API
Michael Jeanson [Mon, 8 Mar 2021 16:49:58 +0000 (11:49 -0500)] 
Drop unused typedef t_statedump_func_ptr from API

Change-Id: I075eafea76ce07fff9a2a3b83f965a73c0aad41c
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoREADME: lttng-ust does not depend on liburcu at runtime anymore
Mathieu Desnoyers [Tue, 9 Mar 2021 19:01:05 +0000 (14:01 -0500)] 
README: lttng-ust does not depend on liburcu at runtime anymore

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2c5660168341b6c3a76bf7843f398c45f9e58100

3 years agoMove ust-events.h private structs to internal
Michael Jeanson [Fri, 5 Mar 2021 17:09:58 +0000 (12:09 -0500)] 
Move ust-events.h private structs to internal

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: Icb7dd50ec33917799d0e26dbe792f32d00b5393e
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove ust-events.h private functions to internal
Michael Jeanson [Fri, 5 Mar 2021 17:10:59 +0000 (12:10 -0500)] 
Move ust-events.h private functions to internal

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: Ic797f0b17f9edac5d5b2115428afbd241b1c778b
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoRemove forward decl for unused 'struct lttng_ust_context_app'
Michael Jeanson [Fri, 5 Mar 2021 19:22:38 +0000 (14:22 -0500)] 
Remove forward decl for unused 'struct lttng_ust_context_app'

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I29aae53fe8f134d6579f828196693d5578922b7f

3 years agoMove 'struct lttng_enabler' to private headers
Michael Jeanson [Fri, 5 Mar 2021 16:47:33 +0000 (11:47 -0500)] 
Move 'struct lttng_enabler' to private headers

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: I2f6df1d8e5844aeb2e3311e7fb3608e9d55ebec5
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove 'enum lttng_client_types' to private headers
Michael Jeanson [Fri, 5 Mar 2021 16:39:35 +0000 (11:39 -0500)] 
Move 'enum lttng_client_types' to private headers

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: I1be3b2b93fa31e86f27085de75b492ab88157c83
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove context symbols to private header
Michael Jeanson [Tue, 23 Feb 2021 22:16:35 +0000 (17:16 -0500)] 
Move context symbols to private header

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: I5719866bf6041f683dc62b612c671051cc397d79
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoRemove leftover symbols from liburcu-bp compat
Michael Jeanson [Thu, 4 Mar 2021 22:51:24 +0000 (17:51 -0500)] 
Remove leftover symbols from liburcu-bp compat

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2c8a2ca1330b38862eafb41243b52dae91b57862

3 years agoRemove unused ring buffer client callbacks symbols
Mathieu Desnoyers [Mon, 8 Mar 2021 17:51:06 +0000 (12:51 -0500)] 
Remove unused ring buffer client callbacks symbols

This is an API change but the major SONAME bump to '1' gives us the
opportunity to remove symbols which are unused.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ifa147982cc520a3ef3c5fd6f09857ece27e769a3

3 years agoRemove ring buffer client callbacks from public headers
Michael Jeanson [Mon, 8 Mar 2021 16:59:40 +0000 (11:59 -0500)] 
Remove ring buffer client callbacks from public headers

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: I41292fc7e18764abf8ba53860ecab568a4c7a88a
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove lttng_ust_fixup_fd_tracker_tls to private header
Michael Jeanson [Wed, 3 Mar 2021 22:47:36 +0000 (17:47 -0500)] 
Move lttng_ust_fixup_fd_tracker_tls to private header

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

Change-Id: Ic259b140f849e71ccbd0cafbc25d79144bb3f4a2
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove perf counter symbols to private header
Michael Jeanson [Wed, 3 Mar 2021 22:32:55 +0000 (17:32 -0500)] 
Move perf counter symbols to private header

This is an API change but the major SONAME bump to '1' gives us the
opportunity to hide symbols that should have been private from the
start.

This also allows to stop exposing LTTNG_UST_HAVE_PERF_EVENT in the
public headers.

Change-Id: I43893b7bad6d447e86af33ad99def6c76689123f
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoBump liblttng-ust-ctl soname major to 5
Michael Jeanson [Wed, 3 Mar 2021 16:59:07 +0000 (11:59 -0500)] 
Bump liblttng-ust-ctl soname major to 5

The cleanups to liblttng-ust ABI also results in private symbols that
were exposed to disappear from ust-ctl ABI.

Change-Id: I0b1792ab1d822dbe44ae8fd5460ea175ee2524fb
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agofix: trailing backslash in include/Makefile.am
Michael Jeanson [Tue, 2 Mar 2021 20:59:57 +0000 (15:59 -0500)] 
fix: trailing backslash in include/Makefile.am

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1fa19ea426b8014e12ff64f4810a1c7330466350

3 years agoDocument why the fd tracker is ABI without a public header
Michael Jeanson [Tue, 2 Mar 2021 19:58:23 +0000 (14:58 -0500)] 
Document why the fd tracker is ABI without a public header

The fd tracker feature is part of the ABI and used by liblttng-ust-fd.
However, some test code and documentation needs to be written before it
is exposed to users with a public header.

Change-Id: I601e11328426904c121ff6cd9668abbd83006f68
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoDelete unused private header ust-ctl-private.h
Michael Jeanson [Tue, 2 Mar 2021 17:16:41 +0000 (12:16 -0500)] 
Delete unused private header ust-ctl-private.h

No declarations in this header are implemented.

Change-Id: I9819f8a6b8cf95ce1265db9632443d9b7908f404
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide private usterr-signal-safe.h symbols
Michael Jeanson [Thu, 25 Feb 2021 16:14:47 +0000 (11:14 -0500)] 
Hide private usterr-signal-safe.h symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Changing 'ust_loglevel' from a public weak symbol to a private one,
means that each library that uses ust_err will now have it's own private
copy of the loglevel and will have to call 'ust_err_init' in it's
constructor.

While we're at it, namespace the symbols that were previously part of
the ABI.

Change-Id: I031d4ebfaa43fa4fb3c9f60dc6b557b1d30eca18
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove internal elf macros to a private header
Michael Jeanson [Fri, 26 Feb 2021 20:41:26 +0000 (15:41 -0500)] 
Move internal elf macros to a private header

The public 'lttng/ust-elf.h' header exposed a dependency on the libelf
headers even though elfutils is only an optional dependency. None of the
macros and static inline functions using the libelf API need to be
publicly available, move them to a private header.

Also move non-namespaced convenience macros to a private header.

Change-Id: I3b75a3a984ffc2a2827664a76c45c7a8fd7b1fdf
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove compat macros in 'lttng/align.h' to a private header
Michael Jeanson [Thu, 25 Feb 2021 20:46:02 +0000 (15:46 -0500)] 
Move compat macros in 'lttng/align.h' to a private header

No need to expose those compat macros in a public header, only keep the
actual align macros public.

Change-Id: Iee0ac69cfb98400afd9ee83a8a8e218af48971bf
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMake 'lttng/bitmap.h' a private header
Michael Jeanson [Thu, 25 Feb 2021 20:52:52 +0000 (15:52 -0500)] 
Make 'lttng/bitmap.h' a private header

This header only defines static inline utils functions, make it private.

Change-Id: I88bb29532bfb24e7e418ddec1e410850df3480b2
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide libringbuffer private symbols
Michael Jeanson [Tue, 2 Mar 2021 17:41:15 +0000 (12:41 -0500)] 
Hide libringbuffer private symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I605c3d560ad03affe79d3518ec35ba484e892c3b
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide private snprintf symbols
Michael Jeanson [Tue, 2 Mar 2021 17:04:26 +0000 (12:04 -0500)] 
Hide private snprintf symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: Iee731f585712c997fc92bc252ad4e4a7a4bddf3c
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide private ust-comm.h symbols
Michael Jeanson [Thu, 25 Feb 2021 23:36:03 +0000 (18:36 -0500)] 
Hide private ust-comm.h symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I57a6d90535e01d85abb26c42da117828d1334c72

3 years agoHide private ust-snprintf.h symbols
Michael Jeanson [Thu, 25 Feb 2021 19:01:03 +0000 (14:01 -0500)] 
Hide private ust-snprintf.h symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I893e18b4fe4e9c1dc45e30fed8a10f28a367cc7c
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide private share.h symbols
Michael Jeanson [Thu, 25 Feb 2021 15:23:54 +0000 (10:23 -0500)] 
Hide private share.h symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

While we're at it, namespace the symbols that were previously part of
the ABI.

Change-Id: I75c4a65969982f2097365441f92de0d3082c8172
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide private ust-dynamic-type.h symbols
Michael Jeanson [Thu, 25 Feb 2021 15:33:25 +0000 (10:33 -0500)] 
Hide private ust-dynamic-type.h symbols

The major SONAME bump to '1' gives us the opportunity to hide private
symbols that should never have been visible.

Change-Id: I8a366479704830fe098d425f97a556ed5069d3bc
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoDocument why context provider is ABI without a public header
Michael Jeanson [Thu, 25 Feb 2021 15:29:48 +0000 (10:29 -0500)] 
Document why context provider is ABI without a public header

The context provider feature is part of the ABI and used by the Java jni
interface. However, some test code and documentation needs to be written
before it is exposed to users with a public header.

Change-Id: I24fcd5cf4a79e3f3c95654dd915dbe7c5380b66c
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoUse 'ust-' prefix for all global private headers
Michael Jeanson [Thu, 25 Feb 2021 19:11:04 +0000 (14:11 -0500)] 
Use 'ust-' prefix for all global private headers

Reduce the chances of a header filename clash by namespacing all the
global public header files with 'ust-'. Also, consistency makes me
happy.

Change-Id: I41a0b32885a5568ebf4c554893bde8a1ea5c3402
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove private headers out of 'lttng/' public header dir
Michael Jeanson [Tue, 23 Feb 2021 21:57:55 +0000 (16:57 -0500)] 
Move private headers out of 'lttng/' public header dir

The 'include/lttng' directory contains a mix of public and private
headers. Move the private header files out of this directory to reduce
confusion.

Change-Id: I48c3c4c0e724b4a7665777b95bd9a18efdb6a03a
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoFix: lttng_event_notifier_group_error_counter_cmd does not respect caller convention
Jonathan Rajotte [Mon, 1 Mar 2021 18:07:27 +0000 (13:07 -0500)] 
Fix: lttng_event_notifier_group_error_counter_cmd does not respect caller convention

The callers of lttng_event_notifier_group_error_counter_cmd (via
callback) expects that, on success, the object for which the ownership was
taken be set to -1 or NULL.

In this case, the shm_fd filed was not set to -1. Resulting in the
caller closing the fd and leading to errors on subsequent call.

e.g:
 sample: lttng-ust-fd-tracker.c:300: int lttng_ust_add_fd_to_tracker(int): Assertion `!IS_FD_SET(fd, lttng_fd_set)' failed.
 Error: Error sending counter cpu data to UST tracer: status=APP_DEAD
 Error: Failed to setup event notifier error accounting for app
 ./test.sh: line 5: 2650455 Aborted                 (core dumped) ../lttng-ust/doc/examples/easy-ust/sample
 lttng-sessiond: ustctl.c:192: int ustctl_release_object(int, struct lttng_ust_object_data *): Assertion `0' failed.

Change-Id: I79b242768cf7d27cd9a50c31b56423c8de08abd5
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove to kernel style SPDX license identifiers
Michael Jeanson [Fri, 1 May 2020 16:10:53 +0000 (12:10 -0400)] 
Move to kernel style SPDX license identifiers

The SPDX identifier is a legally binding shorthand, which can be used
instead of the full boiler plate text.

See https://spdx.org/ids-how for details.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib61c375f72e6712e16654cfc9d97dae199e8b753

3 years agofix: unix socket peercred on FreeBSD
Michael Jeanson [Wed, 24 Feb 2021 20:12:12 +0000 (15:12 -0500)] 
fix: unix socket peercred on FreeBSD

Include 'sys/un.h' for LOCAL_PEERCRED.

The uid member of 'struct xucred' is 'cr_uid'.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6d94e5ad53292401afebeae0cbbba82e7568a847

3 years agoFix: uninitialized variable in lib_ring_buffer_channel_switch_timer_start
Mathieu Desnoyers [Thu, 25 Feb 2021 17:40:48 +0000 (12:40 -0500)] 
Fix: uninitialized variable in lib_ring_buffer_channel_switch_timer_start

Found by Coverity:
** CID 1447027:  Uninitialized variables  (UNINIT)
/libringbuffer/ring_buffer_frontend.c: 810 in lib_ring_buffer_channel_switch_timer_start()

>>>     CID 1447027:  Uninitialized variables  (UNINIT)
>>>     Using uninitialized value "sev". Field "sev._sigev_un" is uninitialized when calling "timer_create".

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iaa66e5612ff1c51b50c4c0b8f30f3695e1b03153

3 years agoFix: "Cleanup: clarify bytecode ownership"
Mathieu Desnoyers [Thu, 25 Feb 2021 17:36:18 +0000 (12:36 -0500)] 
Fix: "Cleanup: clarify bytecode ownership"

The function lttng_event_notifier_enabler_attach_capture_bytecode
have also been adapted to this change.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6d8a984af829356329f933b552f9ada34387fd2c

3 years agoFix: Use unix socket peercred for pid, uid, gid credentials
Mathieu Desnoyers [Mon, 12 Oct 2020 20:52:03 +0000 (16:52 -0400)] 
Fix: Use unix socket peercred for pid, uid, gid credentials

Currently, the session daemon trust the pid, ppid, uid, and gid values
passed by the application, but should really validate the uid using unix
socket peercred. This fix uses the peercred values rather than the
values provided by the application on registration for:

- pid, uid and gid on Linux,
- uid and gid on FreeBSD.

This should improve how the session daemon deals with containerized
applications on Linux as well. Applications are required to be either in
the same pid namespace, or in a pid namespace nested within the pid
namespace of the lttng-sessiond, so the session daemon can map the
application pid to something meaningful within its own pid namespace.
Applications in a unrelated (disjoint) pid namespace will be refused by
the session daemon.

About the uid and gid with user namespaces on Linux, those will provide
meaningful IDs if the application user namespace is either the same as
the user namespace of the session daemon, or a nested user namespace.
Otherwise, the IDs will be that of /proc/sys/kernel/overflowuid and
/proc/sys/kernel/overflowgid, which typically maps to nobody.nogroup on
current distributions.

Given that fetching the parent pid (ppid) of the application would
require to use /proc/<pid>/status (which is racy wrt pid reuse), expose
the ppid provided by the application on registration instead, but only
in situations where the application sits in the same pid namespace as
the session daemon (on Linux), which is detected by checking if the pid
provided by the application matches the pid obtained using unix socket
credentials. The ppid is only used for logging/debugging purposes in the
session daemon anyway, so it is OK to use the value provided by the
application for that purpose.

Fixes: #1286
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I94742e57dad642106908d09e2c7e395993c2c48f

3 years agoMove and hide new 'lttng_ust_counter_create' private symbol
Michael Jeanson [Thu, 17 Dec 2020 20:59:44 +0000 (15:59 -0500)] 
Move and hide new 'lttng_ust_counter_create' private symbol

Change-Id: I8306d4990243c2d5d098e164202c4f0a6fac7abf
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove and hide new time_ns private symbols
Michael Jeanson [Thu, 17 Dec 2020 20:33:15 +0000 (15:33 -0500)] 
Move and hide new time_ns private symbols

Change-Id: I47bb61832d59385d2c296b07058dd37f3af335e0
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoMove and hide new 'lttng_counter_transport_*' private symbols
Michael Jeanson [Thu, 17 Dec 2020 20:23:25 +0000 (15:23 -0500)] 
Move and hide new 'lttng_counter_transport_*' private symbols

Change-Id: If7da4f9a2a046d2bce183d1c0d9016c89a8ce882
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_counter_client_percpu_*' private symbols
Michael Jeanson [Thu, 17 Dec 2020 20:03:45 +0000 (15:03 -0500)] 
Hide new 'lttng_counter_client_percpu_*' private symbols

Change-Id: I6b0541fe745b2bc4df0be78ee1a2d5d3f708ada8
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'ustcomm_recv_*' private symbols
Michael Jeanson [Thu, 17 Dec 2020 19:44:56 +0000 (14:44 -0500)] 
Hide new 'ustcomm_recv_*' private symbols

Change-Id: I9be32b4d46af9ef2c94df403d8e95ce8dafeee44
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_ust_lfht_*' private symbols
Michael Jeanson [Thu, 17 Dec 2020 19:32:35 +0000 (14:32 -0500)] 
Hide new 'lttng_ust_lfht_*' private symbols

Change-Id: Ief99b5ecda492eb84f4196cb1630810be9944cfc
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_release_event_notifier_group_error_counter' private symbol
Michael Jeanson [Thu, 17 Dec 2020 19:15:57 +0000 (14:15 -0500)] 
Hide new 'lttng_release_event_notifier_group_error_counter' private symbol

Change-Id: Ie90fce9d29d5d12c970ae8b6d473e38498281f76
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_fixup_time_ns_tls' private symbol
Michael Jeanson [Thu, 17 Dec 2020 19:14:17 +0000 (14:14 -0500)] 
Hide new 'lttng_fixup_time_ns_tls' private symbol

Change-Id: Id058993bfa973e4f0c272388ef309b7a1167ade9
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_counter_*' private symbols
Michael Jeanson [Thu, 17 Dec 2020 17:20:34 +0000 (12:20 -0500)] 
Hide new 'lttng_counter_*' private symbols

Change-Id: Ie2a1086e829fc2aacf8ba74a33ba0b87bbbb60fc
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_ust_compat_futex_*' private symbols
Michael Jeanson [Thu, 17 Dec 2020 17:17:51 +0000 (12:17 -0500)] 
Hide new 'lttng_ust_compat_futex_*' private symbols

Change-Id: Ia71c7e07e0b44a69d8252200d2233ed73a6a3bfe
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_ust_context_set_event_notifier_group_provider' private symbol
Michael Jeanson [Tue, 15 Dec 2020 19:29:52 +0000 (14:29 -0500)] 
Hide new 'lttng_ust_context_set_event_notifier_group_provider' private symbol

Change-Id: I1547e0c1b7ce83c1f01316b9e0a2daffaa274bb3
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_bytecode_*' private symbols
Michael Jeanson [Tue, 15 Dec 2020 19:28:11 +0000 (14:28 -0500)] 
Hide new 'lttng_bytecode_*' private symbols

Change-Id: I467f6e8651e91e537301090f882f39d2eede1b84
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_context_init_all' private symbol
Michael Jeanson [Tue, 15 Dec 2020 19:26:12 +0000 (14:26 -0500)] 
Hide new 'lttng_context_init_all' private symbol

Change-Id: Id709930e70f2b612ac93a97ee1091d6f64675d28
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'lttng_counter_*' private symbols
Michael Jeanson [Tue, 15 Dec 2020 19:20:59 +0000 (14:20 -0500)] 
Hide new 'lttng_counter_*' private symbols

Change-Id: Ief9322ba0d0d2967f87deb058628e4eeac0d492a
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide mew 'lttng_msgpack_*' private symbols
Michael Jeanson [Tue, 15 Dec 2020 19:16:19 +0000 (14:16 -0500)] 
Hide mew 'lttng_msgpack_*' private symbols

Change-Id: Ib5a5aa2f3c84e723972742cb91f78495be086539
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoHide new 'patient_writev' private symbol
Michael Jeanson [Tue, 15 Dec 2020 19:14:04 +0000 (14:14 -0500)] 
Hide new 'patient_writev' private symbol

Change-Id: I708373d94cce6ae99dda82857b927d816edb86a7
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoRemove unused deprecated and backward compatibility fields
Mathieu Desnoyers [Tue, 23 Feb 2021 20:57:06 +0000 (15:57 -0500)] 
Remove unused deprecated and backward compatibility fields

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia062e1ba58770905e053d6fc01a9800b3f162e70

3 years agoRemove backward compatibility for liburcu-bp
Mathieu Desnoyers [Tue, 23 Feb 2021 20:48:59 +0000 (15:48 -0500)] 
Remove backward compatibility for liburcu-bp

Now that the soname is bumped, there is no backward compatibility to
keep for tracepoint call sites using liburcu-bp for synchronization,
so this compatibility code can be removed.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I35d84fa1ffdb033c094b1a6989cc1c3bc29ce7f8

3 years agoCleanup: Remove deprecated symbols following soname major version bump
Mathieu Desnoyers [Tue, 23 Feb 2021 20:40:42 +0000 (15:40 -0500)] 
Cleanup: Remove deprecated symbols following soname major version bump

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I7a468395c11c1c5dfb83ef4bd16e9c38413415c5

3 years agoBump soname major to 1
Mathieu Desnoyers [Tue, 23 Feb 2021 20:31:48 +0000 (15:31 -0500)] 
Bump soname major to 1

The event notifier (trigger) feature required a significant rework of
public data structures which should never have been made public in the
first place.

Bump the soname major to 1, which will require applications and
tracepoint providers to rebuild against an updated lttng-ust to use it.

Old applications and tracepoint providers linked against libraries with
major soname 0 should be able to co-exist on the same system.

Now (before the next release) is a good time to eliminate LTTng-UST APIs
which were made public by accident.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I804c875ab7c0ae30daaab4817614574ccebc26c8

3 years agoFix: memory and fd leaks in error counter
Mathieu Desnoyers [Tue, 15 Dec 2020 14:30:53 +0000 (09:30 -0500)] 
Fix: memory and fd leaks in error counter

Use a regular pattern for all commands:

If the command callback takes ownership of a pointer or file descriptor,
it sets them to NULL or -1. Therefore, the caller can always try to free
the pointer, or close it if it is greater or equal to 0.

This eliminates memory and fd leaks on error.

Change-Id: I4916920095526c166636c6a432b95fdd6fd1ca4b
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoCleanup: clarify bytecode ownership
Mathieu Desnoyers [Tue, 15 Dec 2020 14:24:30 +0000 (09:24 -0500)] 
Cleanup: clarify bytecode ownership

Use a regular pattern for all commands:

If the command callback takes ownership of a pointer or file descriptor,
it sets them to NULL or -1. Therefore, the caller can always try to free
the pointer, or close it if it is greater or equal to 0.

Change-Id: Ie155d3cff80930271417075d693aa4528decbfc3
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoCleanup: clarify ownership of excluder
Mathieu Desnoyers [Tue, 15 Dec 2020 14:21:10 +0000 (09:21 -0500)] 
Cleanup: clarify ownership of excluder

Use a regular pattern for all commands:

If the command callback takes ownership of a pointer or file descriptor,
it sets them to NULL or -1. Therefore, the caller can always try to free
the pointer, or close it if it is greater or equal to 0.

Change-Id: I3947721841222859f4f4eab15ae94856921eb09b
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoFix: event notifier group: fix fd leak on error
Mathieu Desnoyers [Tue, 15 Dec 2020 14:14:09 +0000 (09:14 -0500)] 
Fix: event notifier group: fix fd leak on error

Use a regular pattern for all commands:

If the command callback takes ownership of a pointer or file descriptor,
it sets them to NULL or -1. Therefore, the caller can always try to free
the pointer, or close it if it is greater or equal to 0.

This eliminates memory and fd leaks on error.

Change-Id: If5181a0c438f2e1ac73e5d4d63d5cde21cc97e52
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoFix: stream fd leaks on error
Mathieu Desnoyers [Tue, 15 Dec 2020 14:01:38 +0000 (09:01 -0500)] 
Fix: stream fd leaks on error

Use a regular pattern for all commands:

If the command callback takes ownership of a pointer or file descriptor,
it sets them to NULL or -1. Therefore, the caller can always try to free
the pointer, or close it if it is greater or equal to 0.

This eliminates memory and fd leaks on error.

Change-Id: I447129ab1672ce4fc6cf3c0baf18dbf27bfcfaf8
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoFix: channel leak on error
Mathieu Desnoyers [Tue, 15 Dec 2020 13:48:59 +0000 (08:48 -0500)] 
Fix: channel leak on error

Use a regular pattern for all commands:

If the command callback takes ownership of a pointer or file descriptor,
it sets them to NULL or -1. Therefore, the caller can always try to free
the pointer, or close it if it is greater or equal to 0.

This eliminates memory and fd leaks on error.

Change-Id: I0f9cba5fc0f4c095c8ec8f3e8970de8a10386876
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoFix: lttng_abi_map_channel should be static
Mathieu Desnoyers [Tue, 15 Dec 2020 14:04:16 +0000 (09:04 -0500)] 
Fix: lttng_abi_map_channel should be static

Change-Id: If0434525f083dc20b50a7628926dadb483d30c88
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoFix: Use default visibility for tracepoint provider symbol
Mathieu Desnoyers [Sun, 27 Dec 2020 19:48:46 +0000 (14:48 -0500)] 
Fix: Use default visibility for tracepoint provider symbol

When building a probe provider `someprobe` with -fvisibility=hidden into
a shared library, the `__tracepoint_provider_someprobe` symbol is hidden,
which does not allow tracepoint instrumentation to link to it.

Fix this by using the "default" visibility attribute.

For a shared library built with -fvisibility=hidden, this changes the
output of nm for that symbol from:

000000000000417c b __tracepoint_provider_someprobe

(local BSS symbol)

to

000000000000417c B __tracepoint_provider_someprobe

(global (external) BSS symbol)

Fixes: #1296
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I308374f6cac58cca86e8eb19c872286a3da21a75

3 years agoFix: configure: support Autoconf 2.70
Jérémie Galarneau [Mon, 11 Jan 2021 17:09:05 +0000 (12:09 -0500)] 
Fix: configure: support Autoconf 2.70

The newly-released autoconf 2.70 introduces a number of breaking
changes [1] and is being rolled-out by some distros.

Amongst those changes, the AC_PROG_CC_STDC macro is marked as obsolete
and was merged into AC_PROG_CC, which we already use. On 2.70, this
results in a warning which we handle as an error.

A version check is added to invoke the AC_PROG_CC_STDC macro only when
running a pre-2.70 version of autoconf, fixing the issue.

Also, the AX_PTHREAD macro makes use of the $as_echo built-in shell
variable which no longer exists in 2.70. A patch was submitted to the
GNU Autoconf archive in March, but there have been no signs of life
given since then [2].

As such, our local copy is updated to the latest version and the patch
(which looks fairly straight-forward / safe) is applied. This should
minimize changes once we go back to an "official" version of the macro.

[1] https://lwn.net/Articles/839395/
[2] https://savannah.gnu.org/patch/?9906

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2f4eac788638924aa4960b54374d09de73957925

3 years agoFix: event notifier create protocol order issue
Mathieu Desnoyers [Fri, 18 Dec 2020 22:28:04 +0000 (17:28 -0500)] 
Fix: event notifier create protocol order issue

sessiond needs to send the additional command payload before awaiting
reply from UST.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I4d046e3fd2f334d728d4310ceb2b003f6bf0abed

3 years agoFix: lttng-ust 2.13 should not try to use notifiers from 2.12 or prior probes
Mathieu Desnoyers [Thu, 17 Dec 2020 19:36:54 +0000 (14:36 -0500)] 
Fix: lttng-ust 2.13 should not try to use notifiers from 2.12 or prior probes

Probe providers built against lttng-ust 2.12 or prior do not implement
the event notifier callback, and accessing desc->u.ext.event_notifier_callback
accesses beyond the size of struct lttng_event_desc.

Therefore, skip those older probe providers from the list of providers
considered for event notifications, and print an error when this
situation is encountered.

Currently, the error reporting of lttng-ust is performed through ERR(),
which is only observable on the console of the application when run with
LTTNG_UST_DEBUG=1.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: Ia8a9bae1a471ae5d30ff0364b28e1cd3a8b4e396

3 years agoFix: UST comm protocol: event notifier command is too large
Mathieu Desnoyers [Thu, 17 Dec 2020 18:51:14 +0000 (13:51 -0500)] 
Fix: UST comm protocol: event notifier command is too large

The event notifier command is larger than the current largest command,
and we don't want to break the protocol between UST and tools
needlessly.

Therefore, pass the struct lttng_ust_event_notifier _after_ struct
ustcomm_ust_msg.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: Ief172eaddd113ec9092dd57bad3d73fd4c29fd51

3 years agoFix: incorrect parameters passed to vtracelog
Mathieu Desnoyers [Wed, 16 Dec 2020 21:23:53 +0000 (16:23 -0500)] 
Fix: incorrect parameters passed to vtracelog

The vtracelog APIs should be called from the vtracelog instrumentation
rather than the "tracelog" APIs, because it passes a va_list rather than
a variable argument list (...).

This can be verified by tracing the demo program doc/examples/demo-tracelog/demo-vtracelog:

Issue (corrupted trace output):

16:17:26.686073539] (+0.000000530) thinkos lttng_ust_tracelog:TRACE_ERR: { cpu_id = 2 }, { line = 31, file = "demo-vtracelog.c", func = "print_err", _msg_length = 49, msg = "This is a \"\b\" formatted 638975520 error event d68" }

Fixed:

[16:23:33.538189343] (+0.000000600) thinkos lttng_ust_tracelog:TRACE_ERR: { cpu_id = 3 }, { line = 31, file = "demo-vtracelog.c", func = "print_err", _msg_length = 52, msg = "This is a \"mystring test\" formatted 4 error event 42" }

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I330e339a3bf68fb8d9779bbc71b08c3bc033ac4e

3 years agoevent-notifier: Initialize `_notifier_notification` struct to zero
Francis Deslauriers [Mon, 14 Dec 2020 19:56:19 +0000 (14:56 -0500)] 
event-notifier: Initialize `_notifier_notification` struct to zero

Valgrind reports the following use of uninitialized bytes:

  ==2233138== Syscall param writev(vector[...]) points to uninitialised byte(s)
  ==2233138==    at 0x4EA161D: __writev (writev.c:26)
  ==2233138==    by 0x4EA161D: writev (writev.c:24)
  ==2233138==    by 0x489A9EC: patient_writev (in /usr/local/lib/liblttng-ust.so.0.0.0)
  ==2233138==    by 0x48C2D5F: lttng_event_notifier_notification_send (in /usr/local/lib/liblttng-ust.so.0.0.0)
  ==2233138==    by 0x4033F3: __event_notifier_probe__tp___tptest (in /home/frdeso/projets/lttng/tools/tests/utils/testapp/gen-ust-events/gen-ust-events)
  ==2233138==    by 0x401D6E: main (in /home/frdeso/projets/lttng/tools/tests/utils/testapp/gen-ust-events/gen-ust-events)
  ==2233138==  Address 0x1ffeffedda is on thread 1's stack
  ==2233138==  in frame #2, created by lttng_event_notifier_notification_send (???:)
  ==2233138==

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I49ac4b440df61b322ac9614b09c32d1f69beedd0

3 years agoAdd tests/unit/libmsgpack/test_msgpack to gitignore
Mathieu Desnoyers [Fri, 11 Dec 2020 16:05:34 +0000 (11:05 -0500)] 
Add tests/unit/libmsgpack/test_msgpack to gitignore

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8d838f961414ee996a4a63c9270fd26ef8ba0e02

3 years agoustctl.h: use enumeration values 0, 1 for bitness
Mathieu Desnoyers [Fri, 11 Dec 2020 15:55:02 +0000 (10:55 -0500)] 
ustctl.h: use enumeration values 0, 1 for bitness

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I915d3bad476f1b11b3c972f6bb60162f3f93d519

3 years agoust-abi: use 0, 1 for counter enumerations
Mathieu Desnoyers [Fri, 11 Dec 2020 15:51:36 +0000 (10:51 -0500)] 
ust-abi: use 0, 1 for counter enumerations

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 years agoCleanup: ust-abi: BITNESS_{32,64}BITS -> BITNESS_{32,64}
Mathieu Desnoyers [Fri, 11 Dec 2020 15:43:08 +0000 (10:43 -0500)] 
Cleanup: ust-abi: BITNESS_{32,64}BITS -> BITNESS_{32,64}

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I5175116ec93d61fe55d1c17e2e2b99b02a0e73a9

This page took 0.044742 seconds and 4 git commands to generate.