• Jose E. Marchesi's avatar
    bpf: Disable some `attribute ignored' warnings in GCC · b0fbdf75
    Jose E. Marchesi authored
    This patch modifies selftests/bpf/Makefile to pass -Wno-attributes to
    GCC.  This is because of the following attributes which are ignored:
    
    - btf_decl_tag
    - btf_type_tag
    
      There are many of these.  At the moment none of these are
      recognized/handled by gcc-bpf.
    
      We are aware that btf_decl_tag is necessary for some of the
      selftest harness to communicate test failure/success.  Support for
      it is in progress in GCC upstream:
    
      https://gcc.gnu.org/pipermail/gcc-patches/2024-May/650482.html
    
      However, the GCC master branch is not yet open, so the series
      above (currently under review upstream) wont be able to make it
      there until 14.1 gets released, probably mid next week.
    
      As for btf_type_tag, more extensive work will be needed in GCC
      upstream to support it in both BTF and DWARF.  We have a WIP big
      patch for that, but that is not needed to compile/build the
      selftests.
    
    - used
    
      There are SEC macros defined in the selftests as:
    
      #define SEC(N) __attribute__((section(N),used))
    
      The SEC macro is used for both functions and global variables.
      According to the GCC documentation `used' attribute is really only
      meaningful for functions, and it warns when the attribute is used
      for other global objects, like for example ctl_array in
      test_xdp_noinline.c.
    
      Ignoring this is benign.
    
    - align_value
    
      In progs/test_cls_redirect.c:127 there is:
    
      typedef uint8_t *net_ptr __attribute__((align_value(8)));
    
      GCC warns that it is ignoring this attribute, because it is not
      implemented by GCC.
    
      I think ignoring this attribute in GCC is benign, because according
      to the clang documentation [1] its purpose seems to be merely
      declarative and doesn't seem to translate into extra checks at
      run-time, only to perhaps better optimized code ("runtime behavior
      is undefined if the pointed memory object is not aligned to the
      specified alignment").
    
      [1] https://clang.llvm.org/docs/AttributeReference.html#align-value
    
    Tested in bpf-next master.
    Signed-off-by: default avatarJose E. Marchesi <jose.marchesi@oracle.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Acked-by: default avatarYonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/bpf/20240507074227.4523-3-jose.marchesi@oracle.com
    b0fbdf75
Makefile 30 KB