Details

    • Bug
    • Resolution: Unresolved
    • Trivial
    • Lustre 2.14.0
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      gcc9 introduced new checks:

      • address-of-packed-member
      • missing-attributes
        it's easier to disable those for a while..

      Attachments

        Activity

          [LU-12822] gcc9 support
          yujian Jian Yu added a comment -

          It appears to be related to https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b999ae3614d09d97a1575936bcee884f912b10e

          So the -Werror=missing-attributes issue was fixed in kernel v5.0-rc7.

          yujian Jian Yu added a comment - It appears to be related to https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b999ae3614d09d97a1575936bcee884f912b10e So the -Werror=missing-attributes issue was fixed in kernel v5.0-rc7.
          yujian Jian Yu added a comment - - edited

          Hit the same failures with gcc 9.4.0 on RHEL 8.6 with kernel 4.18.0-372.32.1.el8_6.

          yujian Jian Yu added a comment - - edited Hit the same failures with gcc 9.4.0 on RHEL 8.6 with kernel 4.18.0-372.32.1.el8_6.
          yujian Jian Yu added a comment -

          I'm trying to build and install gcc 9.4.0 on RHEL 8.6 to see how the Lustre client build goes.

          yujian Jian Yu added a comment - I'm trying to build and install gcc 9.4.0 on RHEL 8.6 to see how the Lustre client build goes.
          yujian Jian Yu added a comment - - edited

          Building the same codes with gcc 9.4.0 on Ubuntu 20.04.5 with kernel 5.4.0-135-generic passed.

          yujian Jian Yu added a comment - - edited Building the same codes with gcc 9.4.0 on Ubuntu 20.04.5 with kernel 5.4.0-135-generic passed.
          yujian Jian Yu added a comment -

          Building master branch with gcc 9.2.1 on RHEL 8.6 failed as follows:

          # gcc --version | head -1
          gcc (GCC) 9.2.1 20191120 (Red Hat 9.2.1-2)
          # git clone git://git.whamcloud.com/fs/lustre-release.git
          # cd lustre-release/
          # sh autogen.sh
          # ./configure --disable-server --with-linux=/usr/src/kernels/4.18.0-372.32.1.el8_6.x86_64
          # make -j $(nproc)
          
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c: In function ‘kiblnd_unpack_rd’:
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:147:13: error: taking address of packed member of ‘struct kib_rdma_desc’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
            147 |   __swab32s(&rd->rd_key);
                |             ^~~~~~~~~~~
          <~snip~>
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c: In function ‘kiblnd_unpack_msg’:
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:264:13: error: taking address of packed member of ‘struct kib_msg’ may result in an unaligned pointer value [-Werror=address-of-packed-member]
            264 |   __swab64s(&msg->ibm_srcnid);
                |             ^~~~~~~~~~~~~~~~
          <~snip~>
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c: At top level:
          /usr/src/kernels/4.18.0-372.32.1.el8_6.x86_64/include/linux/module.h:129:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘ko2iblnd_init’: ‘cold’ [-Werror=missing-attributes]
            129 |  int init_module(void) __attribute__((alias(#initfn)));
                |      ^~~~~~~~~~~
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3908:1: note: in expansion of macro ‘module_init’
           3908 | module_init(ko2iblnd_init);
                | ^~~~~~~~~~~
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3888:19: note: ‘init_module’ target declared here
           3888 | static int __init ko2iblnd_init(void)
                |                   ^~~~~~~~~~~~~
          <~snip~>
                           from /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:38:
          /usr/src/kernels/4.18.0-372.32.1.el8_6.x86_64/include/linux/module.h:135:7: error: ‘cleanup_module’ specifies less restrictive attribute than its target ‘ko2iblnd_exit’: ‘cold’ [-Werror=missing-attributes]
            135 |  void cleanup_module(void) __attribute__((alias(#exitfn)));
                |       ^~~~~~~~~~~~~~
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3909:1: note: in expansion of macro ‘module_exit’
           3909 | module_exit(ko2iblnd_exit);
                | ^~~~~~~~~~~
          /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3883:20: note: ‘cleanup_module’ target declared here
           3883 | static void __exit ko2iblnd_exit(void)
                |                    ^~~~~~~~~~~~~
          <~snip~>
          
            CC [M]  /root/lustre-release/libcfs/libcfs/module.o
            CC [M]  /root/lustre-release/libcfs/libcfs/tracefile.o
          In file included from /root/lustre-release/libcfs/libcfs/module.c:32:
          include/linux/module.h:129:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘libcfs_init’: ‘cold’ [-Werror=missing-attributes]
            129 |  int init_module(void) __attribute__((alias(#initfn)));
                |      ^~~~~~~~~~~
          /root/lustre-release/libcfs/libcfs/module.c:962:1: note: in expansion of macro ‘module_init’
            962 | module_init(libcfs_init);
                | ^~~~~~~~~~~
          /root/lustre-release/libcfs/libcfs/module.c:847:19: note: ‘init_module’ target declared here
            847 | static int __init libcfs_init(void)
                |                   ^~~~~~~~~~~
          In file included from /root/lustre-release/libcfs/libcfs/module.c:32:
          include/linux/module.h:135:7: error: ‘cleanup_module’ specifies less restrictive attribute than its target ‘libcfs_exit’: ‘cold’ [-Werror=missing-attributes]
            135 |  void cleanup_module(void) __attribute__((alias(#exitfn)));
                |       ^~~~~~~~~~~~~~
          /root/lustre-release/libcfs/libcfs/module.c:963:1: note: in expansion of macro ‘module_exit’
            963 | module_exit(libcfs_exit);
                | ^~~~~~~~~~~
          /root/lustre-release/libcfs/libcfs/module.c:918:20: note: ‘cleanup_module’ target declared here
            918 | static void __exit libcfs_exit(void)
                |                    ^~~~~~~~~~~
          cc1: all warnings being treated as errors
          make[6]: *** [scripts/Makefile.build:317: /root/lustre-release/libcfs/libcfs/module.o] Error 1
          

           

          yujian Jian Yu added a comment - Building master branch with gcc 9.2.1 on RHEL 8.6 failed as follows: # gcc --version | head -1 gcc (GCC) 9.2.1 20191120 (Red Hat 9.2.1-2) # git clone git://git.whamcloud.com/fs/lustre-release.git # cd lustre-release/ # sh autogen.sh # ./configure --disable-server --with-linux=/usr/src/kernels/4.18.0-372.32.1.el8_6.x86_64 # make -j $(nproc) /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c: In function ‘kiblnd_unpack_rd’: /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:147:13: error: taking address of packed member of ‘struct kib_rdma_desc’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 147 | __swab32s(&rd->rd_key); | ^~~~~~~~~~~ <~snip~> /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c: In function ‘kiblnd_unpack_msg’: /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:264:13: error: taking address of packed member of ‘struct kib_msg’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 264 | __swab64s(&msg->ibm_srcnid); | ^~~~~~~~~~~~~~~~ <~snip~> /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c: At top level: /usr/src/kernels/4.18.0-372.32.1.el8_6.x86_64/include/linux/module.h:129:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘ko2iblnd_init’: ‘cold’ [-Werror=missing-attributes] 129 | int init_module(void) __attribute__((alias(#initfn))); | ^~~~~~~~~~~ /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3908:1: note: in expansion of macro ‘module_init’ 3908 | module_init(ko2iblnd_init); | ^~~~~~~~~~~ /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3888:19: note: ‘init_module’ target declared here 3888 | static int __init ko2iblnd_init(void) | ^~~~~~~~~~~~~ <~snip~> from /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:38: /usr/src/kernels/4.18.0-372.32.1.el8_6.x86_64/include/linux/module.h:135:7: error: ‘cleanup_module’ specifies less restrictive attribute than its target ‘ko2iblnd_exit’: ‘cold’ [-Werror=missing-attributes] 135 | void cleanup_module(void) __attribute__((alias(#exitfn))); | ^~~~~~~~~~~~~~ /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3909:1: note: in expansion of macro ‘module_exit’ 3909 | module_exit(ko2iblnd_exit); | ^~~~~~~~~~~ /root/lustre-release/lnet/klnds/o2iblnd/o2iblnd.c:3883:20: note: ‘cleanup_module’ target declared here 3883 | static void __exit ko2iblnd_exit(void) | ^~~~~~~~~~~~~ <~snip~> CC [M] /root/lustre-release/libcfs/libcfs/module.o CC [M] /root/lustre-release/libcfs/libcfs/tracefile.o In file included from /root/lustre-release/libcfs/libcfs/module.c:32: include/linux/module.h:129:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘libcfs_init’: ‘cold’ [-Werror=missing-attributes] 129 | int init_module(void) __attribute__((alias(#initfn))); | ^~~~~~~~~~~ /root/lustre-release/libcfs/libcfs/module.c:962:1: note: in expansion of macro ‘module_init’ 962 | module_init(libcfs_init); | ^~~~~~~~~~~ /root/lustre-release/libcfs/libcfs/module.c:847:19: note: ‘init_module’ target declared here 847 | static int __init libcfs_init(void) | ^~~~~~~~~~~ In file included from /root/lustre-release/libcfs/libcfs/module.c:32: include/linux/module.h:135:7: error: ‘cleanup_module’ specifies less restrictive attribute than its target ‘libcfs_exit’: ‘cold’ [-Werror=missing-attributes] 135 | void cleanup_module(void) __attribute__((alias(#exitfn))); | ^~~~~~~~~~~~~~ /root/lustre-release/libcfs/libcfs/module.c:963:1: note: in expansion of macro ‘module_exit’ 963 | module_exit(libcfs_exit); | ^~~~~~~~~~~ /root/lustre-release/libcfs/libcfs/module.c:918:20: note: ‘cleanup_module’ target declared here 918 | static void __exit libcfs_exit(void) | ^~~~~~~~~~~ cc1: all warnings being treated as errors make[6]: *** [scripts/Makefile.build:317: /root/lustre-release/libcfs/libcfs/module.o] Error 1  

          We just ran into this issue with the lustre test module kinode.c. It appears to be related to https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b999ae3614d09d97a1575936bcee884f912b10e

          Also MOFED doesn't seem to build with gcc 9 as well

          simmonsja James A Simmons added a comment - We just ran into this issue with the lustre test module kinode.c. It appears to be related to https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b999ae3614d09d97a1575936bcee884f912b10e Also MOFED doesn't seem to build with gcc 9 as well
          simmonsja James A Simmons added a comment - - edited

          Is it only ldiskfs? Also what ldiskfs series is being use on Fedora?

          simmonsja James A Simmons added a comment - - edited Is it only ldiskfs? Also what ldiskfs series is being use on Fedora?
          bzzz Alex Zhuravlev added a comment - - edited

          here is example:

          In file included from /home/alexey/head1/ldiskfs/super.c:20:
          include/linux/module.h:132:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘ldiskfs_init_fs’: ‘cold’ [-Werror=missing-attributes]
            132 |  int init_module(void) __attribute__((alias(#initfn)));
                |      ^~~~~~~~~~~
          /home/alexey/head1/ldiskfs/super.c:6003:1: note: in expansion of macro ‘module_init’
           6003 | module_init(ldiskfs_init_fs)
                | ^~~~~~~~~~~
          /home/alexey/head1/ldiskfs/super.c:5930:19: note: ‘init_module’ target declared here
           5930 | static int __init ldiskfs_init_fs(void)
                |                   ^~~~~~~~~~~~~~~
          In file included from /home/alexey/head1/ldiskfs/super.c:20:
          
          bzzz Alex Zhuravlev added a comment - - edited here is example: In file included from /home/alexey/head1/ldiskfs/ super .c:20: include/linux/module.h:132:6: error: ‘init_module’ specifies less restrictive attribute than its target ‘ldiskfs_init_fs’: ‘cold’ [-Werror=missing-attributes] 132 | int init_module(void) __attribute__((alias(#initfn))); | ^~~~~~~~~~~ /home/alexey/head1/ldiskfs/ super .c:6003:1: note: in expansion of macro ‘module_init’ 6003 | module_init(ldiskfs_init_fs) | ^~~~~~~~~~~ /home/alexey/head1/ldiskfs/ super .c:5930:19: note: ‘init_module’ target declared here 5930 | static int __init ldiskfs_init_fs(void) | ^~~~~~~~~~~~~~~ In file included from /home/alexey/head1/ldiskfs/ super .c:20:

          I wonder what the default flags are for fedora. I'm using 

          gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)

          What are the build failures you are still seeing?

          simmonsja James A Simmons added a comment - I wonder what the default flags are for fedora. I'm using  gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2) What are the build failures you are still seeing?

          well, I still can't build master with gcc9

          bzzz Alex Zhuravlev added a comment - well, I still can't build master with gcc9

          People

            bzzz Alex Zhuravlev
            bzzz Alex Zhuravlev
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated: