Coverage Report

Created: 2025-06-13 06:36

/src/util-linux/include/debug.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * No copyright is claimed.  This code is in the public domain; do with
3
 * it what you wish.
4
 */
5
#ifndef UTIL_LINUX_DEBUG_H
6
#define UTIL_LINUX_DEBUG_H
7
8
9
/*
10
 * util-linux debug macros
11
 *
12
 * The debug stuff is based on <name>_debug_mask that controls what outputs is
13
 * expected. The mask is usually initialized by <NAME>_DEBUG= env.variable
14
 *
15
 * After successful initialization the flag <PREFIX>_DEBUG_INIT is always set
16
 * to the mask (this flag is required). The <PREFIX> is usually library API
17
 * prefix (e.g. MNT_) or program name (e.g. CFDISK_)
18
 *
19
 * In the code is possible to use
20
 *
21
 *  DBG(FOO, ul_debug("this is output for foo"));
22
 *
23
 * where for the FOO has to be defined <PREFIX>_DEBUG_FOO.
24
 *
25
 * It's possible to initialize the mask by comma delimited strings with
26
 * subsystem names (e.g. "LIBMOUNT_DEBUG=options,tab"). In this case is
27
 * necessary to define mask names array. This functionality is optional.
28
 *
29
 * It's strongly recommended to use UL_* macros to define/declare/use
30
 * the debug stuff.
31
 *
32
 * See disk-utils/cfdisk.c: cfdisk_init_debug()  for programs debug
33
 *  or libmount/src/init.c: mnt_init_debug()     for library debug
34
 *
35
 */
36
37
#include <stdarg.h>
38
#include <string.h>
39
40
#include "c.h"
41
42
struct ul_debug_maskname {
43
  const char *name;
44
  int mask;
45
  const char *help;
46
};
47
#define UL_DEBUG_EMPTY_MASKNAMES {{ NULL, 0, NULL }}
48
#define UL_DEBUG_DEFINE_MASKNAMES(m) static const struct ul_debug_maskname m ## _masknames[]
49
#define UL_DEBUG_MASKNAMES(m) m ## _masknames
50
51
0
#define UL_DEBUG_MASK(m)         m ## _debug_mask
52
#define UL_DEBUG_DEFINE_MASK(m)  int UL_DEBUG_MASK(m)
53
#define UL_DEBUG_DECLARE_MASK(m) extern UL_DEBUG_DEFINE_MASK(m)
54
55
/*
56
 * Internal mask flags (above 0xffffff)
57
 */
58
0
#define __UL_DEBUG_FL_NOADDR  (1 << 24)  /* Don't print object address */
59
60
61
/* l - library name, p - flag prefix, m - flag postfix, x - function */
62
#define __UL_DBG(l, p, m, x) \
63
2.42M
  do { \
64
2.42M
    if ((p ## m) & l ## _debug_mask) { \
65
0
      fprintf(stderr, "%d: %s: %8s: ", getpid(), # l, # m); \
66
0
      x; \
67
0
    } \
68
2.42M
  } while (0)
69
70
#define __UL_DBG_CALL(l, p, m, x) \
71
3.04k
  do { \
72
3.04k
    if ((p ## m) & l ## _debug_mask) { \
73
0
      x; \
74
0
    } \
75
3.04k
  } while (0)
76
77
#define __UL_DBG_FLUSH(l, p) \
78
  do { \
79
    if (l ## _debug_mask && \
80
        l ## _debug_mask != p ## INIT) { \
81
      fflush(stderr); \
82
    } \
83
  } while (0)
84
85
#define __UL_INIT_DEBUG_FROM_STRING(lib, pref, mask, str) \
86
2
  do { \
87
2
    if (lib ## _debug_mask & pref ## INIT) \
88
2
    ; \
89
2
    else if (!mask && str) { \
90
0
      lib ## _debug_mask = ul_debug_parse_mask(lib ## _masknames, str); \
91
0
    } else \
92
2
      lib ## _debug_mask = mask; \
93
2
    if (lib ## _debug_mask) { \
94
0
      if (is_privileged_execution()) { \
95
0
        lib ## _debug_mask |= __UL_DEBUG_FL_NOADDR; \
96
0
        fprintf(stderr, "%d: %s: don't print memory addresses (SUID executable).\n", getpid(), # lib); \
97
0
      } \
98
0
    } \
99
2
    lib ## _debug_mask |= pref ## INIT; \
100
2
  } while (0)
101
102
103
#define __UL_INIT_DEBUG_FROM_ENV(lib, pref, mask, env) \
104
2
  do { \
105
2
    const char *envstr = mask ? NULL : getenv(# env); \
106
2
    __UL_INIT_DEBUG_FROM_STRING(lib, pref, mask, envstr); \
107
2
  } while (0)
108
109
110
111
static inline void __attribute__ ((__format__ (__printf__, 1, 2)))
112
ul_debug(const char *mesg, ...)
113
0
{
114
0
  va_list ap;
115
0
  va_start(ap, mesg);
116
0
  vfprintf(stderr, mesg, ap);
117
0
  va_end(ap);
118
0
  fputc('\n', stderr);
119
0
}
Unexecuted instantiation: probe.c:ul_debug
Unexecuted instantiation: tag.c:ul_debug
Unexecuted instantiation: verify.c:ul_debug
Unexecuted instantiation: partitions.c:ul_debug
Unexecuted instantiation: sgi.c:ul_debug
Unexecuted instantiation: solaris_x86.c:ul_debug
Unexecuted instantiation: sun.c:ul_debug
Unexecuted instantiation: ultrix.c:ul_debug
Unexecuted instantiation: unixware.c:ul_debug
Unexecuted instantiation: superblocks.c:ul_debug
Unexecuted instantiation: swap.c:ul_debug
Unexecuted instantiation: sysv.c:ul_debug
Unexecuted instantiation: ubi.c:ul_debug
Unexecuted instantiation: ubifs.c:ul_debug
Unexecuted instantiation: udf.c:ul_debug
Unexecuted instantiation: ufs.c:ul_debug
Unexecuted instantiation: vdo.c:ul_debug
Unexecuted instantiation: vfat.c:ul_debug
Unexecuted instantiation: via_raid.c:ul_debug
Unexecuted instantiation: vmfs.c:ul_debug
Unexecuted instantiation: vxfs.c:ul_debug
Unexecuted instantiation: xfs.c:ul_debug
Unexecuted instantiation: zfs.c:ul_debug
Unexecuted instantiation: zonefs.c:ul_debug
Unexecuted instantiation: erofs.c:ul_debug
Unexecuted instantiation: topology.c:ul_debug
Unexecuted instantiation: dm.c:ul_debug
Unexecuted instantiation: evms.c:ul_debug
Unexecuted instantiation: ioctl.c:ul_debug
Unexecuted instantiation: lvm.c:ul_debug
Unexecuted instantiation: md.c:ul_debug
Unexecuted instantiation: sysfs.c:ul_debug
Unexecuted instantiation: path.c:ul_debug
Unexecuted instantiation: init.c:ul_debug
Unexecuted instantiation: dev.c:ul_debug
Unexecuted instantiation: devname.c:ul_debug
Unexecuted instantiation: devno.c:ul_debug
Unexecuted instantiation: read.c:ul_debug
Unexecuted instantiation: save.c:ul_debug
Unexecuted instantiation: aix.c:ul_debug
Unexecuted instantiation: atari.c:ul_debug
Unexecuted instantiation: bsd.c:ul_debug
Unexecuted instantiation: dos.c:ul_debug
Unexecuted instantiation: gpt.c:ul_debug
Unexecuted instantiation: mac.c:ul_debug
Unexecuted instantiation: minix.c:ul_debug
Unexecuted instantiation: adaptec_raid.c:ul_debug
Unexecuted instantiation: apfs.c:ul_debug
Unexecuted instantiation: bcache.c:ul_debug
Unexecuted instantiation: befs.c:ul_debug
Unexecuted instantiation: bfs.c:ul_debug
Unexecuted instantiation: bitlocker.c:ul_debug
Unexecuted instantiation: bluestore.c:ul_debug
Unexecuted instantiation: btrfs.c:ul_debug
Unexecuted instantiation: cs_fvault2.c:ul_debug
Unexecuted instantiation: cramfs.c:ul_debug
Unexecuted instantiation: ddf_raid.c:ul_debug
Unexecuted instantiation: drbd.c:ul_debug
Unexecuted instantiation: drbdproxy_datalog.c:ul_debug
Unexecuted instantiation: drbdmanage.c:ul_debug
Unexecuted instantiation: exfat.c:ul_debug
Unexecuted instantiation: exfs.c:ul_debug
Unexecuted instantiation: ext.c:ul_debug
Unexecuted instantiation: f2fs.c:ul_debug
Unexecuted instantiation: gfs.c:ul_debug
Unexecuted instantiation: hfs.c:ul_debug
Unexecuted instantiation: highpoint_raid.c:ul_debug
Unexecuted instantiation: hpfs.c:ul_debug
Unexecuted instantiation: iso9660.c:ul_debug
Unexecuted instantiation: isw_raid.c:ul_debug
Unexecuted instantiation: jfs.c:ul_debug
Unexecuted instantiation: jmicron_raid.c:ul_debug
Unexecuted instantiation: linux_raid.c:ul_debug
Unexecuted instantiation: lsi_raid.c:ul_debug
Unexecuted instantiation: luks.c:ul_debug
Unexecuted instantiation: mpool.c:ul_debug
Unexecuted instantiation: netware.c:ul_debug
Unexecuted instantiation: nilfs.c:ul_debug
Unexecuted instantiation: ntfs.c:ul_debug
Unexecuted instantiation: refs.c:ul_debug
Unexecuted instantiation: nvidia_raid.c:ul_debug
Unexecuted instantiation: ocfs.c:ul_debug
Unexecuted instantiation: promise_raid.c:ul_debug
Unexecuted instantiation: reiserfs.c:ul_debug
Unexecuted instantiation: romfs.c:ul_debug
Unexecuted instantiation: scoutfs.c:ul_debug
Unexecuted instantiation: silicon_raid.c:ul_debug
Unexecuted instantiation: squashfs.c:ul_debug
Unexecuted instantiation: stratis.c:ul_debug
Unexecuted instantiation: cache.c:ul_debug
Unexecuted instantiation: config.c:ul_debug
120
121
static inline int ul_debug_parse_mask(
122
      const struct ul_debug_maskname flagnames[],
123
      const char *mask)
124
0
{
125
0
  int res;
126
0
  char *ptr;
127
128
  /* let's check for a numeric mask first */
129
0
  res = strtoul(mask, &ptr, 0);
130
131
  /* perhaps it's a comma-separated string? */
132
0
  if (ptr && *ptr && flagnames && flagnames[0].name) {
133
0
    char *msbuf, *ms, *name;
134
0
    res = 0;
135
136
0
    ms = msbuf = strdup(mask);
137
0
    if (!ms)
138
0
      return res;
139
140
0
    while ((name = strtok_r(ms, ",", &ptr))) {
141
0
      const struct ul_debug_maskname *d;
142
0
      ms = ptr;
143
144
0
      for (d = flagnames; d && d->name; d++) {
145
0
        if (strcmp(name, d->name) == 0) {
146
0
          res |= d->mask;
147
0
          break;
148
0
        }
149
0
      }
150
      /* nothing else we can do by OR-ing the mask */
151
0
      if (res == 0xffff)
152
0
        break;
153
0
    }
154
0
    free(msbuf);
155
0
  } else if (ptr && strcmp(ptr, "all") == 0)
156
0
    res = 0xffff;
157
158
0
  return res;
159
0
}
Unexecuted instantiation: probe.c:ul_debug_parse_mask
Unexecuted instantiation: tag.c:ul_debug_parse_mask
Unexecuted instantiation: verify.c:ul_debug_parse_mask
Unexecuted instantiation: partitions.c:ul_debug_parse_mask
Unexecuted instantiation: sgi.c:ul_debug_parse_mask
Unexecuted instantiation: solaris_x86.c:ul_debug_parse_mask
Unexecuted instantiation: sun.c:ul_debug_parse_mask
Unexecuted instantiation: ultrix.c:ul_debug_parse_mask
Unexecuted instantiation: unixware.c:ul_debug_parse_mask
Unexecuted instantiation: superblocks.c:ul_debug_parse_mask
Unexecuted instantiation: swap.c:ul_debug_parse_mask
Unexecuted instantiation: sysv.c:ul_debug_parse_mask
Unexecuted instantiation: ubi.c:ul_debug_parse_mask
Unexecuted instantiation: ubifs.c:ul_debug_parse_mask
Unexecuted instantiation: udf.c:ul_debug_parse_mask
Unexecuted instantiation: ufs.c:ul_debug_parse_mask
Unexecuted instantiation: vdo.c:ul_debug_parse_mask
Unexecuted instantiation: vfat.c:ul_debug_parse_mask
Unexecuted instantiation: via_raid.c:ul_debug_parse_mask
Unexecuted instantiation: vmfs.c:ul_debug_parse_mask
Unexecuted instantiation: vxfs.c:ul_debug_parse_mask
Unexecuted instantiation: xfs.c:ul_debug_parse_mask
Unexecuted instantiation: zfs.c:ul_debug_parse_mask
Unexecuted instantiation: zonefs.c:ul_debug_parse_mask
Unexecuted instantiation: erofs.c:ul_debug_parse_mask
Unexecuted instantiation: topology.c:ul_debug_parse_mask
Unexecuted instantiation: dm.c:ul_debug_parse_mask
Unexecuted instantiation: evms.c:ul_debug_parse_mask
Unexecuted instantiation: ioctl.c:ul_debug_parse_mask
Unexecuted instantiation: lvm.c:ul_debug_parse_mask
Unexecuted instantiation: md.c:ul_debug_parse_mask
Unexecuted instantiation: sysfs.c:ul_debug_parse_mask
Unexecuted instantiation: path.c:ul_debug_parse_mask
Unexecuted instantiation: init.c:ul_debug_parse_mask
Unexecuted instantiation: dev.c:ul_debug_parse_mask
Unexecuted instantiation: devname.c:ul_debug_parse_mask
Unexecuted instantiation: devno.c:ul_debug_parse_mask
Unexecuted instantiation: read.c:ul_debug_parse_mask
Unexecuted instantiation: save.c:ul_debug_parse_mask
Unexecuted instantiation: aix.c:ul_debug_parse_mask
Unexecuted instantiation: atari.c:ul_debug_parse_mask
Unexecuted instantiation: bsd.c:ul_debug_parse_mask
Unexecuted instantiation: dos.c:ul_debug_parse_mask
Unexecuted instantiation: gpt.c:ul_debug_parse_mask
Unexecuted instantiation: mac.c:ul_debug_parse_mask
Unexecuted instantiation: minix.c:ul_debug_parse_mask
Unexecuted instantiation: adaptec_raid.c:ul_debug_parse_mask
Unexecuted instantiation: apfs.c:ul_debug_parse_mask
Unexecuted instantiation: bcache.c:ul_debug_parse_mask
Unexecuted instantiation: befs.c:ul_debug_parse_mask
Unexecuted instantiation: bfs.c:ul_debug_parse_mask
Unexecuted instantiation: bitlocker.c:ul_debug_parse_mask
Unexecuted instantiation: bluestore.c:ul_debug_parse_mask
Unexecuted instantiation: btrfs.c:ul_debug_parse_mask
Unexecuted instantiation: cs_fvault2.c:ul_debug_parse_mask
Unexecuted instantiation: cramfs.c:ul_debug_parse_mask
Unexecuted instantiation: ddf_raid.c:ul_debug_parse_mask
Unexecuted instantiation: drbd.c:ul_debug_parse_mask
Unexecuted instantiation: drbdproxy_datalog.c:ul_debug_parse_mask
Unexecuted instantiation: drbdmanage.c:ul_debug_parse_mask
Unexecuted instantiation: exfat.c:ul_debug_parse_mask
Unexecuted instantiation: exfs.c:ul_debug_parse_mask
Unexecuted instantiation: ext.c:ul_debug_parse_mask
Unexecuted instantiation: f2fs.c:ul_debug_parse_mask
Unexecuted instantiation: gfs.c:ul_debug_parse_mask
Unexecuted instantiation: hfs.c:ul_debug_parse_mask
Unexecuted instantiation: highpoint_raid.c:ul_debug_parse_mask
Unexecuted instantiation: hpfs.c:ul_debug_parse_mask
Unexecuted instantiation: iso9660.c:ul_debug_parse_mask
Unexecuted instantiation: isw_raid.c:ul_debug_parse_mask
Unexecuted instantiation: jfs.c:ul_debug_parse_mask
Unexecuted instantiation: jmicron_raid.c:ul_debug_parse_mask
Unexecuted instantiation: linux_raid.c:ul_debug_parse_mask
Unexecuted instantiation: lsi_raid.c:ul_debug_parse_mask
Unexecuted instantiation: luks.c:ul_debug_parse_mask
Unexecuted instantiation: mpool.c:ul_debug_parse_mask
Unexecuted instantiation: netware.c:ul_debug_parse_mask
Unexecuted instantiation: nilfs.c:ul_debug_parse_mask
Unexecuted instantiation: ntfs.c:ul_debug_parse_mask
Unexecuted instantiation: refs.c:ul_debug_parse_mask
Unexecuted instantiation: nvidia_raid.c:ul_debug_parse_mask
Unexecuted instantiation: ocfs.c:ul_debug_parse_mask
Unexecuted instantiation: promise_raid.c:ul_debug_parse_mask
Unexecuted instantiation: reiserfs.c:ul_debug_parse_mask
Unexecuted instantiation: romfs.c:ul_debug_parse_mask
Unexecuted instantiation: scoutfs.c:ul_debug_parse_mask
Unexecuted instantiation: silicon_raid.c:ul_debug_parse_mask
Unexecuted instantiation: squashfs.c:ul_debug_parse_mask
Unexecuted instantiation: stratis.c:ul_debug_parse_mask
Unexecuted instantiation: cache.c:ul_debug_parse_mask
Unexecuted instantiation: config.c:ul_debug_parse_mask
160
161
static inline void ul_debug_print_masks(
162
      const char *env,
163
      const struct ul_debug_maskname flagnames[])
164
0
{
165
0
  const struct ul_debug_maskname *d;
166
167
0
  if (!flagnames)
168
0
    return;
169
170
0
  fprintf(stderr, "Available \"%s=<name>[,...]|<mask>\" debug masks:\n",
171
0
      env);
172
0
  for (d = flagnames; d && d->name; d++) {
173
0
    if (!d->help)
174
0
      continue;
175
0
    fprintf(stderr, "   %-8s [0x%06x] : %s\n",
176
0
        d->name, d->mask, d->help);
177
0
  }
178
0
}
Unexecuted instantiation: probe.c:ul_debug_print_masks
Unexecuted instantiation: tag.c:ul_debug_print_masks
Unexecuted instantiation: verify.c:ul_debug_print_masks
Unexecuted instantiation: partitions.c:ul_debug_print_masks
Unexecuted instantiation: sgi.c:ul_debug_print_masks
Unexecuted instantiation: solaris_x86.c:ul_debug_print_masks
Unexecuted instantiation: sun.c:ul_debug_print_masks
Unexecuted instantiation: ultrix.c:ul_debug_print_masks
Unexecuted instantiation: unixware.c:ul_debug_print_masks
Unexecuted instantiation: superblocks.c:ul_debug_print_masks
Unexecuted instantiation: swap.c:ul_debug_print_masks
Unexecuted instantiation: sysv.c:ul_debug_print_masks
Unexecuted instantiation: ubi.c:ul_debug_print_masks
Unexecuted instantiation: ubifs.c:ul_debug_print_masks
Unexecuted instantiation: udf.c:ul_debug_print_masks
Unexecuted instantiation: ufs.c:ul_debug_print_masks
Unexecuted instantiation: vdo.c:ul_debug_print_masks
Unexecuted instantiation: vfat.c:ul_debug_print_masks
Unexecuted instantiation: via_raid.c:ul_debug_print_masks
Unexecuted instantiation: vmfs.c:ul_debug_print_masks
Unexecuted instantiation: vxfs.c:ul_debug_print_masks
Unexecuted instantiation: xfs.c:ul_debug_print_masks
Unexecuted instantiation: zfs.c:ul_debug_print_masks
Unexecuted instantiation: zonefs.c:ul_debug_print_masks
Unexecuted instantiation: erofs.c:ul_debug_print_masks
Unexecuted instantiation: topology.c:ul_debug_print_masks
Unexecuted instantiation: dm.c:ul_debug_print_masks
Unexecuted instantiation: evms.c:ul_debug_print_masks
Unexecuted instantiation: ioctl.c:ul_debug_print_masks
Unexecuted instantiation: lvm.c:ul_debug_print_masks
Unexecuted instantiation: md.c:ul_debug_print_masks
Unexecuted instantiation: sysfs.c:ul_debug_print_masks
Unexecuted instantiation: path.c:ul_debug_print_masks
Unexecuted instantiation: init.c:ul_debug_print_masks
Unexecuted instantiation: dev.c:ul_debug_print_masks
Unexecuted instantiation: devname.c:ul_debug_print_masks
Unexecuted instantiation: devno.c:ul_debug_print_masks
Unexecuted instantiation: read.c:ul_debug_print_masks
Unexecuted instantiation: save.c:ul_debug_print_masks
Unexecuted instantiation: aix.c:ul_debug_print_masks
Unexecuted instantiation: atari.c:ul_debug_print_masks
Unexecuted instantiation: bsd.c:ul_debug_print_masks
Unexecuted instantiation: dos.c:ul_debug_print_masks
Unexecuted instantiation: gpt.c:ul_debug_print_masks
Unexecuted instantiation: mac.c:ul_debug_print_masks
Unexecuted instantiation: minix.c:ul_debug_print_masks
Unexecuted instantiation: adaptec_raid.c:ul_debug_print_masks
Unexecuted instantiation: apfs.c:ul_debug_print_masks
Unexecuted instantiation: bcache.c:ul_debug_print_masks
Unexecuted instantiation: befs.c:ul_debug_print_masks
Unexecuted instantiation: bfs.c:ul_debug_print_masks
Unexecuted instantiation: bitlocker.c:ul_debug_print_masks
Unexecuted instantiation: bluestore.c:ul_debug_print_masks
Unexecuted instantiation: btrfs.c:ul_debug_print_masks
Unexecuted instantiation: cs_fvault2.c:ul_debug_print_masks
Unexecuted instantiation: cramfs.c:ul_debug_print_masks
Unexecuted instantiation: ddf_raid.c:ul_debug_print_masks
Unexecuted instantiation: drbd.c:ul_debug_print_masks
Unexecuted instantiation: drbdproxy_datalog.c:ul_debug_print_masks
Unexecuted instantiation: drbdmanage.c:ul_debug_print_masks
Unexecuted instantiation: exfat.c:ul_debug_print_masks
Unexecuted instantiation: exfs.c:ul_debug_print_masks
Unexecuted instantiation: ext.c:ul_debug_print_masks
Unexecuted instantiation: f2fs.c:ul_debug_print_masks
Unexecuted instantiation: gfs.c:ul_debug_print_masks
Unexecuted instantiation: hfs.c:ul_debug_print_masks
Unexecuted instantiation: highpoint_raid.c:ul_debug_print_masks
Unexecuted instantiation: hpfs.c:ul_debug_print_masks
Unexecuted instantiation: iso9660.c:ul_debug_print_masks
Unexecuted instantiation: isw_raid.c:ul_debug_print_masks
Unexecuted instantiation: jfs.c:ul_debug_print_masks
Unexecuted instantiation: jmicron_raid.c:ul_debug_print_masks
Unexecuted instantiation: linux_raid.c:ul_debug_print_masks
Unexecuted instantiation: lsi_raid.c:ul_debug_print_masks
Unexecuted instantiation: luks.c:ul_debug_print_masks
Unexecuted instantiation: mpool.c:ul_debug_print_masks
Unexecuted instantiation: netware.c:ul_debug_print_masks
Unexecuted instantiation: nilfs.c:ul_debug_print_masks
Unexecuted instantiation: ntfs.c:ul_debug_print_masks
Unexecuted instantiation: refs.c:ul_debug_print_masks
Unexecuted instantiation: nvidia_raid.c:ul_debug_print_masks
Unexecuted instantiation: ocfs.c:ul_debug_print_masks
Unexecuted instantiation: promise_raid.c:ul_debug_print_masks
Unexecuted instantiation: reiserfs.c:ul_debug_print_masks
Unexecuted instantiation: romfs.c:ul_debug_print_masks
Unexecuted instantiation: scoutfs.c:ul_debug_print_masks
Unexecuted instantiation: silicon_raid.c:ul_debug_print_masks
Unexecuted instantiation: squashfs.c:ul_debug_print_masks
Unexecuted instantiation: stratis.c:ul_debug_print_masks
Unexecuted instantiation: cache.c:ul_debug_print_masks
Unexecuted instantiation: config.c:ul_debug_print_masks
179
180
#endif /* UTIL_LINUX_DEBUG_H */