bin: compile lttng as C++
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 3 Sep 2021 21:31:28 +0000 (17:31 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 15 Oct 2021 20:57:45 +0000 (16:57 -0400)
Compile the code of the lttng binary as C++ source.

 - start by renaming all files under src/bin/lttng to have the .cpp
   extension, adjust Makefile.am accordingly
 - apply the sophisticated algorithm:

     while does_not_build():
       fix_error()

   until completion

Fixes fall in these categories:

 - add extern "C" to headers of functions implemented in C.  This is
   likely temporary: at some point some of these things will be
   implemented in C++, at which point we'll remove the extern "C".

 - rename mi_lttng_version to mi_lttng_version_data, to avoid a -Wshadow
   warning about the mi_lttng_version function hiding the
   mi_lttng_version's struct constructor

 - we have the same warning about lttng_calibrate, but we can't rename
   it, it's exposed in a public header.  Add some pragmas to disable the
   warning around there.  We will need more macro smartness in case we
   need to support a compiler that doesn't understand these pragmas.

 - in filter-ast.h, add a dummy field to the empty struct, to avoid a
   -Wextern-c-compat warning with clang++ (it warns us that the struct
   has size 0 in C but size 1 in C++).

 - in add_context.cpp, we can't initialize ctx_opts' union field like we
   did in C. Fix that by adding a ctx_opts constructor for each kind of
   context and implement the PERF_* macros to use them.

 - need to explicitly cast void pointer to type of the destination, for
   example the eturn value of allocation functions, or parameter of
   "destroy" functions

 - need to explicitly cast when passing an int to an enum parameter, for
   example an lttng_error_code parameter

 - remove use of designated array initializers, for example for
   schedule_type_str in disable_rotation.cpp

 - fix order of struct initializers to match order of field
   declarations, for example in list_triggers.cpp, function
   cmd_list_triggers

 - rename some things to avoid clashing with keywords, for example in
   runas.h

Change-Id: Id743b141552a412b4104af4dda8969eef5032388
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>

No differences found
This page took 0.025278 seconds and 4 git commands to generate.