HomeFreeBSD

Switch from _Noreturn to __attribute__((noreturn))

Description

Switch from _Noreturn to attribute((noreturn))

Parts of the Linux kernel build system struggle with _Noreturn. This
results in the following warnings when building on RHEL 8.5, and likely
other environments. Switch to using the attribute((noreturn)).

  warning: objtool: dbuf_free_range()+0x2b8:
    return with modified stack frame
  warning: objtool: dbuf_free_range()+0x0:
    stack state mismatch: cfa1=7+40 cfa2=7+8
  ...
  WARNING: EXPORT symbol "arc_buf_size" [zfs.ko] version generation
    failed, symbol will not be versioned.
  WARNING: EXPORT symbol "spa_open" [zfs.ko] version generation
    failed, symbol will not be versioned.
  ...

Additionally, thread_exit() has been renamed spl_thread_exit() and
made a static inline function. This was needed because the kernel
will generate a warning for symbols which are
attribute__((noreturn))
and then exported with EXPORT_SYMBOL.

While we could continue to use _Noreturn in user space I've also
switched it to attribute((noreturn)) purely for consistency
throughout the code base.

Reviewed-by: Ryan Moeller <freqlabs@FreeBSD.org>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #13238

Details

Provenance
Brian Behlendorf <behlendorf1@llnl.gov>Authored on Mar 23 2022, 3:51 PM
GitHub <noreply@github.com>Committed on Mar 23 2022, 3:51 PM
Parents
rGb73505c7e056: ZTS: Log test name to /dev/kmsg on Linux
Branches
Unknown
Tags
Unknown

Event Timeline

GitHub <noreply@github.com> committed rG460748d4aeb1: Switch from _Noreturn to __attribute__((noreturn)) (authored by Brian Behlendorf <behlendorf1@llnl.gov>).Mar 23 2022, 3:51 PM