]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Build user-space with different gcc optimization levels
authorGvozden Neskovic <neskovic@gmail.com>
Tue, 26 Jul 2016 19:08:51 +0000 (21:08 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 9 Aug 2016 21:40:35 +0000 (14:40 -0700)
This fix resolves warnings reported during compiling of user-space
libraries with different gcc optimization levels.

Tested with gcc versions: 4.9.2 (Debian), and 6.1.1 (Fedora).
The patch enables use of following opt levels: O0, O1, O2, O3, Og, Os, Ofast.

List of warnings:

[GCC 4.9.2 -Os]
libzfs_sendrecv.c:3726:26: error: 'clp' may be used uninitialized in this function [-Werror=maybe-uninitialized]

[GCC 4.9.2 -Og]
fs_fletcher.c:323:26: error: 'idx' may be used uninitialized in this function [-Werror=maybe-uninitialized]
dsl_dataset.c:1290:12: error: 'atp' may be used uninitialized in this function [-Werror=maybe-uninitialized]

[GCC 4.9.2 -Ofast]
u8_textprep.c:1310:9: error: 'tc[3ul]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
u8_textprep.c:177:23: error: 'u8t[0ul]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
dsl_dataset.c:2089:37: error: ‘hds’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
dsl_dataset.c:3216:2: error: ‘ds’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
dsl_dataset.c:1591:2: error: ‘ds’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
dsl_dataset.c:3341:2: error: ‘ds’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
vdev_raidz.c:1153:8: error: 'dcount[2]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
vdev_raidz.c:1167:17: error: 'dst[2]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
kernel.c:1005:2: error: ‘resid’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
libzfs_dataset.c:2826:8: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
libzfs_dataset.c:3056:35: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
libzfs_dataset.c:1584:13: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
libzfs_dataset.c:3056:35: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
libzfs_dataset.c:1792:66: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
libzfs_dataset.c:3986:35: error: ‘val’ may be used uninitialized in this function [-Werror=maybe-uninitialized]

[GCC 6.1.1]
Resolved in PR #4907

Signed-off-by: Gvozden Neskovic <neskovic@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #4937

lib/libzfs/libzfs_dataset.c
lib/libzfs/libzfs_sendrecv.c
lib/libzpool/kernel.c
module/unicode/u8_textprep.c
module/zcommon/zfs_fletcher.c
module/zfs/dsl_dataset.c
module/zfs/vdev_raidz.c

index 3ff96f0c65eb33e95487fd1610b698104a4804d5..794d35fbe3d8bad902eadce080112a7fae8e4d62 100644 (file)
@@ -2625,7 +2625,7 @@ uint64_t
 zfs_prop_get_int(zfs_handle_t *zhp, zfs_prop_t prop)
 {
        char *source;
-       uint64_t val;
+       uint64_t val = 0;
 
        (void) get_numeric_property(zhp, prop, NULL, &source, &val);
 
index bc8bd5f8a8bcc46d0736b20754d0edd643377974..6adcc7a5490bb3410e7c3cd1d90141df95ad6752 100644 (file)
@@ -3710,8 +3710,8 @@ zfs_receive(libzfs_handle_t *hdl, const char *tosnap, nvlist_t *props,
        VERIFY(0 == close(cleanup_fd));
 
        if (err == 0 && !flags->nomount && top_zfs) {
-               zfs_handle_t *zhp;
-               prop_changelist_t *clp;
+               zfs_handle_t *zhp = NULL;
+               prop_changelist_t *clp = NULL;
 
                zhp = zfs_open(hdl, top_zfs, ZFS_TYPE_FILESYSTEM);
                if (zhp != NULL) {
index a68911451886cc617bb8962cd9721f3b97e0ca32..549dd4c5c21e074d1fb0e5ba448e2da1eab6c468 100644 (file)
@@ -996,7 +996,7 @@ kobj_open_file(char *name)
 int
 kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off)
 {
-       ssize_t resid;
+       ssize_t resid = 0;
 
        if (vn_rdwr(UIO_READ, (vnode_t *)file->_fd, buf, size, (offset_t)off,
            UIO_SYSSPACE, 0, 0, 0, &resid) != 0)
index 26cc39f3bcd225a000c5265b97b1ca7f5c92485f..992f6b6b72f538ddb9a80f41d99a18fb394f1c6e 100644 (file)
@@ -1060,7 +1060,7 @@ do_composition(size_t uv, uchar_t *s, uchar_t *comb_class, uchar_t *start,
        uchar_t *disp, size_t last, uchar_t **os, uchar_t *oslast)
 {
        uchar_t t[U8_STREAM_SAFE_TEXT_MAX + 1];
-       uchar_t tc[U8_MB_CUR_MAX];
+       uchar_t tc[U8_MB_CUR_MAX] = { '\0' };
        uint8_t saved_marks[U8_MAX_CHARS_A_SEQ];
        size_t saved_marks_count;
        uchar_t *p;
@@ -1396,7 +1396,7 @@ collect_a_seq(size_t uv, uchar_t *u8s, uchar_t **source, uchar_t *slast,
        uchar_t comb_class[U8_MAX_CHARS_A_SEQ];
        uchar_t disp[U8_MAX_CHARS_A_SEQ];
        uchar_t start[U8_MAX_CHARS_A_SEQ];
-       uchar_t u8t[U8_MB_CUR_MAX];
+       uchar_t u8t[U8_MB_CUR_MAX] = { '\0' };
        uchar_t uts[U8_STREAM_SAFE_TEXT_MAX + 1];
        uchar_t tc;
        size_t last;
index a3888a32b0f6c01384a30f7f7d83d5ae102b5427..f3eae679156942fff236ea54f6a72fcbd2104839 100644 (file)
@@ -294,7 +294,7 @@ int
 fletcher_4_impl_set(const char *val)
 {
        const fletcher_4_ops_t *ops;
-       enum fletcher_selector idx;
+       enum fletcher_selector idx = FLETCHER_FASTEST;
        size_t val_len;
        unsigned i;
 
index 1b2ac72b04f339de3262d704d95dbc9070d5e947..5d7847d466a52e2d12fbf622b667df5492af2bb3 100644 (file)
@@ -1270,7 +1270,7 @@ dsl_dataset_snapshot_check(void *arg, dmu_tx_t *tx)
            pair != NULL; pair = nvlist_next_nvpair(ddsa->ddsa_snaps, pair)) {
                int error = 0;
                dsl_dataset_t *ds;
-               char *name, *atp;
+               char *name, *atp = NULL;
                char dsname[ZFS_MAX_DATASET_NAME_LEN];
 
                name = nvpair_name(pair);
@@ -1584,7 +1584,7 @@ dsl_dataset_snapshot_tmp_sync(void *arg, dmu_tx_t *tx)
 {
        dsl_dataset_snapshot_tmp_arg_t *ddsta = arg;
        dsl_pool_t *dp = dmu_tx_pool(tx);
-       dsl_dataset_t *ds;
+       dsl_dataset_t *ds = NULL;
 
        VERIFY0(dsl_dataset_hold(dp, ddsta->ddsta_fsname, FTAG, &ds));
 
@@ -2081,7 +2081,7 @@ dsl_dataset_rename_snapshot_sync(void *arg, dmu_tx_t *tx)
 {
        dsl_dataset_rename_snapshot_arg_t *ddrsa = arg;
        dsl_pool_t *dp = dmu_tx_pool(tx);
-       dsl_dataset_t *hds;
+       dsl_dataset_t *hds = NULL;
 
        VERIFY0(dsl_dataset_hold(dp, ddrsa->ddrsa_fsname, FTAG, &hds));
        ddrsa->ddrsa_tx = tx;
@@ -3209,7 +3209,7 @@ dsl_dataset_set_refquota_sync(void *arg, dmu_tx_t *tx)
 {
        dsl_dataset_set_qr_arg_t *ddsqra = arg;
        dsl_pool_t *dp = dmu_tx_pool(tx);
-       dsl_dataset_t *ds;
+       dsl_dataset_t *ds = NULL;
        uint64_t newval;
 
        VERIFY0(dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds));
@@ -3336,7 +3336,7 @@ dsl_dataset_set_refreservation_sync(void *arg, dmu_tx_t *tx)
 {
        dsl_dataset_set_qr_arg_t *ddsqra = arg;
        dsl_pool_t *dp = dmu_tx_pool(tx);
-       dsl_dataset_t *ds;
+       dsl_dataset_t *ds = NULL;
 
        VERIFY0(dsl_dataset_hold(dp, ddsqra->ddsqra_name, FTAG, &ds));
        dsl_dataset_set_refreservation_sync_impl(ds,
index b67de08966ffa8ad2d2178ccdc47df8073d2ec7f..f5df2c7d89702e5c72360f41d0d36caf1b31ded9 100644 (file)
@@ -1103,8 +1103,8 @@ vdev_raidz_matrix_reconstruct(raidz_map_t *rm, int n, int nmissing,
        int i, j, x, cc, c;
        uint8_t *src;
        uint64_t ccount;
-       uint8_t *dst[VDEV_RAIDZ_MAXPARITY];
-       uint64_t dcount[VDEV_RAIDZ_MAXPARITY];
+       uint8_t *dst[VDEV_RAIDZ_MAXPARITY] = { NULL };
+       uint64_t dcount[VDEV_RAIDZ_MAXPARITY] = { 0 };
        uint8_t log = 0;
        uint8_t val;
        int ll;