mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Clang 13.0.0 produces a new -Werror warning about the ACPI_TO_INTEGER(p)
and ACPI_OFFSET(d, f) macros in acpica's actypes.h:
sys/contrib/dev/acpica/components/dispatcher/dsopcode.c:708:31: error: performing pointer subtraction with a null pointer has undefined behavior [-Werror,-Wnull-pointer-subtraction]
ObjDesc->Region.Address = ACPI_PTR_TO_PHYSADDR (Table);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
sys/contrib/dev/acpica/include/actypes.h:664:41: note: expanded from macro 'ACPI_PTR_TO_PHYSADDR'
#define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i)
^~~~~~~~~~~~~~~~~~
sys/contrib/dev/acpica/include/actypes.h:661:41: note: expanded from macro 'ACPI_TO_INTEGER'
#define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sys/contrib/dev/acpica/include/actypes.h:656:82: note: expanded from macro 'ACPI_PTR_DIFF'
#define ACPI_PTR_DIFF(a, b) ((ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b))))
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
This problem of undefined behavior was also reported to acpica by @cem
in 2018: https://github.com/acpica/acpica/issues/407, but it seems there
was never any fix committed for it upstream.
Instead fix these locally, for ACPI_TO_INTEGER by simply casting the
incoming pointer to ACPI_SIZE (which corresponds roughly to uintptr_t
and size_t), and for ACPI_OFFSET by reusing our __offsetof definition
from sys/cdefs.h.
Reviewed by: emaste, kib, imp
Differential Revision: https://reviews.freebsd.org/D31710
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| platform | ||
| acapps.h | ||
| acbuffer.h | ||
| acclib.h | ||
| accommon.h | ||
| acconfig.h | ||
| acconvert.h | ||
| acdebug.h | ||
| acdisasm.h | ||
| acdispat.h | ||
| acevents.h | ||
| acexcep.h | ||
| acglobal.h | ||
| achware.h | ||
| acinterp.h | ||
| aclocal.h | ||
| acmacros.h | ||
| acnames.h | ||
| acnamesp.h | ||
| acobject.h | ||
| acopcode.h | ||
| acoutput.h | ||
| acparser.h | ||
| acpi.h | ||
| acpiosxf.h | ||
| acpixf.h | ||
| acpredef.h | ||
| acresrc.h | ||
| acrestyp.h | ||
| acstruct.h | ||
| actables.h | ||
| actbinfo.h | ||
| actbl.h | ||
| actbl1.h | ||
| actbl2.h | ||
| actbl3.h | ||
| actypes.h | ||
| acutils.h | ||
| acuuid.h | ||
| amlcode.h | ||
| amlresrc.h | ||