Kernel: Allow offsetof with packed fields
This is not standard C++ but should be fine with my toolchain.
This commit is contained in:
parent
3f638f125e
commit
066fb44105
|
@ -148,6 +148,9 @@ target_compile_options(kernel PUBLIC $<$<COMPILE_LANGUAGE:CXX>:-Wno-literal-suff
|
|||
target_compile_options(kernel PUBLIC -fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}=.)
|
||||
target_compile_options(kernel PUBLIC -fstack-protector -ffreestanding -Wall -Werror=return-type -Wstack-usage=1024 -fno-omit-frame-pointer -mgeneral-regs-only)
|
||||
|
||||
# This might not work with other toolchains
|
||||
target_compile_options(kernel PUBLIC $<$<COMPILE_LANGUAGE:CXX>:-Wno-invalid-offsetof>)
|
||||
|
||||
if(ENABLE_KERNEL_UBSAN)
|
||||
target_compile_options(kernel PUBLIC -fsanitize=undefined)
|
||||
endif()
|
||||
|
|
|
@ -213,7 +213,7 @@ namespace Kernel
|
|||
auto* fadt = (FADT*)header;
|
||||
|
||||
paddr_t dsdt_paddr = 0;
|
||||
if (fadt->length > 140) // 140 is the offset of x_dsdt
|
||||
if (fadt->length > offsetof(FADT, x_dsdt))
|
||||
dsdt_paddr = fadt->x_dsdt;
|
||||
if (dsdt_paddr == 0 || !PageTable::is_valid_pointer(dsdt_paddr))
|
||||
dsdt_paddr = fadt->dsdt;
|
||||
|
|
Loading…
Reference in New Issue