Coverage Report

Created: 2024-05-21 06:33

/src/util-linux/include/debug.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * SPDX-License-Identifier: LGPL-2.1-or-later
3
 *
4
 * Copyright (C) 2014 Ondrej Oprala <ooprala@redhat.com>
5
 * Copyright (C) 2014 Karel Zak <kzak@redhat.com>
6
 *
7
 * This file may be distributed under the terms of the
8
 * GNU Lesser General Public License.
9
 */
10
#ifndef UTIL_LINUX_DEBUG_H
11
#define UTIL_LINUX_DEBUG_H
12
13
14
/*
15
 * util-linux debug macros
16
 *
17
 * The debug stuff is based on <name>_debug_mask that controls what outputs is
18
 * expected. The mask is usually initialized by <NAME>_DEBUG= env.variable
19
 *
20
 * After successful initialization the flag <PREFIX>_DEBUG_INIT is always set
21
 * to the mask (this flag is required). The <PREFIX> is usually library API
22
 * prefix (e.g. MNT_) or program name (e.g. CFDISK_)
23
 *
24
 * In the code is possible to use
25
 *
26
 *  DBG(FOO, ul_debug("this is output for foo"));
27
 *
28
 * where for the FOO has to be defined <PREFIX>_DEBUG_FOO.
29
 *
30
 * It's possible to initialize the mask by comma delimited strings with
31
 * subsystem names (e.g. "LIBMOUNT_DEBUG=options,tab"). In this case is
32
 * necessary to define mask names array. This functionality is optional.
33
 *
34
 * It's strongly recommended to use UL_* macros to define/declare/use
35
 * the debug stuff.
36
 *
37
 * See disk-utils/cfdisk.c: cfdisk_init_debug()  for programs debug
38
 *  or libmount/src/init.c: mnt_init_debug()     for library debug
39
 *
40
 */
41
42
#include <stdarg.h>
43
#include <string.h>
44
45
struct ul_debug_maskname {
46
  const char *name;
47
  int mask;
48
  const char *help;
49
};
50
#define UL_DEBUG_EMPTY_MASKNAMES {{ NULL, 0, NULL }}
51
#define UL_DEBUG_DEFINE_MASKNAMES(m) static const struct ul_debug_maskname m ## _masknames[]
52
#define UL_DEBUG_MASKNAMES(m) m ## _masknames
53
54
0
#define UL_DEBUG_MASK(m)         m ## _debug_mask
55
#define UL_DEBUG_DEFINE_MASK(m)  int UL_DEBUG_MASK(m)
56
#define UL_DEBUG_DECLARE_MASK(m) extern UL_DEBUG_DEFINE_MASK(m)
57
58
/*
59
 * Internal mask flags (above 0xffffff)
60
 */
61
0
#define __UL_DEBUG_FL_NOADDR  (1 << 24)  /* Don't print object address */
62
63
64
/* l - library name, p - flag prefix, m - flag postfix, x - function */
65
#define __UL_DBG(l, p, m, x) \
66
18.9M
  do { \
67
18.9M
    if ((p ## m) & l ## _debug_mask) { \
68
0
      fprintf(stderr, "%d: %s: %8s: ", getpid(), # l, # m); \
69
0
      x; \
70
0
    } \
71
18.9M
  } while (0)
72
73
#define __UL_DBG_CALL(l, p, m, x) \
74
1.50k
  do { \
75
1.50k
    if ((p ## m) & l ## _debug_mask) { \
76
0
      x; \
77
0
    } \
78
1.50k
  } while (0)
79
80
#define __UL_DBG_FLUSH(l, p) \
81
  do { \
82
    if (l ## _debug_mask && \
83
        l ## _debug_mask != p ## INIT) { \
84
      fflush(stderr); \
85
    } \
86
  } while (0)
87
88
#define __UL_INIT_DEBUG_FROM_STRING(lib, pref, mask, str) \
89
6
  do { \
90
6
    if (lib ## _debug_mask & pref ## INIT) \
91
6
    ; \
92
6
    else if (!mask && str) { \
93
0
      lib ## _debug_mask = ul_debug_parse_mask(lib ## _masknames, str); \
94
0
    } else \
95
6
      lib ## _debug_mask = mask; \
96
6
    if (lib ## _debug_mask) { \
97
0
      if (getuid() != geteuid() || getgid() != getegid()) { \
98
0
        lib ## _debug_mask |= __UL_DEBUG_FL_NOADDR; \
99
0
        fprintf(stderr, "%d: %s: don't print memory addresses (SUID executable).\n", getpid(), # lib); \
100
0
      } \
101
0
    } \
102
6
    lib ## _debug_mask |= pref ## INIT; \
103
6
  } while (0)
104
105
106
#define __UL_INIT_DEBUG_FROM_ENV(lib, pref, mask, env) \
107
6
  do { \
108
6
    const char *envstr = mask ? NULL : getenv(# env); \
109
6
    __UL_INIT_DEBUG_FROM_STRING(lib, pref, mask, envstr); \
110
6
  } while (0)
111
112
113
114
static inline void __attribute__ ((__format__ (__printf__, 1, 2)))
115
ul_debug(const char *mesg, ...)
116
0
{
117
0
  va_list ap;
118
0
  va_start(ap, mesg);
119
0
  vfprintf(stderr, mesg, ap);
120
0
  va_end(ap);
121
0
  fputc('\n', stderr);
122
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: 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
123
124
static inline int ul_debug_parse_mask(
125
      const struct ul_debug_maskname flagnames[],
126
      const char *mask)
127
0
{
128
0
  int res;
129
0
  char *ptr;
130
131
  /* let's check for a numeric mask first */
132
0
  res = strtoul(mask, &ptr, 0);
133
134
  /* perhaps it's a comma-separated string? */
135
0
  if (ptr && *ptr && flagnames && flagnames[0].name) {
136
0
    char *msbuf, *ms, *name;
137
0
    res = 0;
138
139
0
    ms = msbuf = strdup(mask);
140
0
    if (!ms)
141
0
      return res;
142
143
0
    while ((name = strtok_r(ms, ",", &ptr))) {
144
0
      const struct ul_debug_maskname *d;
145
0
      ms = ptr;
146
147
0
      for (d = flagnames; d && d->name; d++) {
148
0
        if (strcmp(name, d->name) == 0) {
149
0
          res |= d->mask;
150
0
          break;
151
0
        }
152
0
      }
153
      /* nothing else we can do by OR-ing the mask */
154
0
      if (res == 0xffff)
155
0
        break;
156
0
    }
157
0
    free(msbuf);
158
0
  } else if (ptr && strcmp(ptr, "all") == 0)
159
0
    res = 0xffff;
160
161
0
  return res;
162
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: 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
163
164
static inline void ul_debug_print_masks(
165
      const char *env,
166
      const struct ul_debug_maskname flagnames[])
167
0
{
168
0
  const struct ul_debug_maskname *d;
169
170
0
  if (!flagnames)
171
0
    return;
172
173
0
  fprintf(stderr, "Available \"%s=<name>[,...]|<mask>\" debug masks:\n",
174
0
      env);
175
0
  for (d = flagnames; d && d->name; d++) {
176
0
    if (!d->help)
177
0
      continue;
178
0
    fprintf(stderr, "   %-8s [0x%06x] : %s\n",
179
0
        d->name, d->mask, d->help);
180
0
  }
181
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: 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
182
183
#endif /* UTIL_LINUX_DEBUG_H */