tests: test_dwarf.c: initialize `tag` variable
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 24 Apr 2024 19:45:50 +0000 (15:45 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 24 Apr 2024 20:38:05 +0000 (16:38 -0400)
On Arch Linux, When configuring with:

    $ /home/smarchi/src/babeltrace/configure CFLAGS='-O2 -flto=auto' LDFLAGS='-flto=auto'

I get:

      CCLD     test_dwarf
    In function 'test_bt_dwarf',
        inlined from 'main' at /home/smarchi/src/babeltrace/tests/plugins/flt.lttng-utils.debug-info/test_dwarf.c:163:2:
    /home/smarchi/src/babeltrace/tests/plugins/flt.lttng-utils.debug-info/test_dwarf.c:136:9: error: 'tag' may be used uninitialized [-Werror=maybe-uninitialized]
      136 |         ok(tag == DW_TAG_typedef, "bt_dwarf_die_get_tag - correct tag value");
          |         ^
    /home/smarchi/src/babeltrace/tests/plugins/flt.lttng-utils.debug-info/test_dwarf.c: In function 'main':
    /home/smarchi/src/babeltrace/tests/plugins/flt.lttng-utils.debug-info/test_dwarf.c:79:22: note: 'tag' was declared here
       79 |         int fd, ret, tag;
          |                      ^

Indeed, `tag` is not set if `bt_dwarf_die_get_tag()` fails, and I
suppose that LTO is able to "see" through the function call, despite the
implementation being in another compilation unit.

Fix this by initializing `tag` to an invalid DIE tag value.

For some reason, I only see this error on the stable-2.0 branch, not on
master.  But I think it wouldn't hurt to merge this patch to both master
and stable-2.0.

I caught this when trying to build the 2.0.6 release as an Arch package,
using the official PKGBUILD as a base.

[1] https://gitlab.archlinux.org/archlinux/packaging/packages/babeltrace2/-/blob/d6c58a3a8e0dbbbac7424dec28212f0fd1720eb7/PKGBUILD

Change-Id: I5475efdf095511404ecf8a214ab33358b41230fa
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12473
Reviewed-by: Michael Jeanson <mjeanson@efficios.com>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Tested-by: jenkins <jenkins@lttng.org>
tests/plugins/flt.lttng-utils.debug-info/test-dwarf.c

index b74eabf4e2708b75756a9fa38e736f2bb6857841..e50d1c44981f227cd573e96bea4badee173ff56f 100644 (file)
@@ -63,7 +63,7 @@ void test_bt_no_dwarf(const char *data_dir)
 static
 void test_bt_dwarf(const char *data_dir)
 {
-       int fd, ret, tag;
+       int fd, ret, tag = -1;
        char *path;
        char *die_name = NULL;
        struct bt_dwarf_cu *cu = NULL;
This page took 0.025193 seconds and 4 git commands to generate.