chore: remove null pointer representation check

That part of code in configure.ac look stupid, remove it.

If we _do_ try to run BookmarkFS on such an exotic platform with
non-zero null pointers, the breakage should be detected by the tests
(if it can run or even build at all).
This commit is contained in:
CismonX 2025-03-05 16:43:00 +08:00
parent 1836692719
commit b585a05c91
No known key found for this signature in database
GPG key ID: 3094873E29A482FB
2 changed files with 7 additions and 21 deletions

View file

@ -40,22 +40,6 @@ AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_MAKE_SET
# -- Checks for platform-specific features --
AC_MSG_CHECKING([if null pointers have an all-zero representation])
AC_RUN_IFELSE([
AC_LANG_PROGRAM([[#include <string.h>]],
[[void *ptr = NULL; char buf[sizeof(ptr)] = { 0 };
if (0 != memcmp(buf, &ptr, sizeof(ptr))) return 1;]])
], [
AC_MSG_RESULT([yes])
], [
AC_MSG_RESULT([no])
AC_MSG_ERROR(m4_normalize([
Null pointers do not have an all-zero representation on this platform.
]))
])
# -- Checks for features --
BOOKMARKFS_FEAT([bookmarkfs-util], [no], [the BookmarkFS utility library])

View file

@ -300,17 +300,19 @@ hashmap_create (
hashmap_hash_func *entry_hash
) {
size_t buckets_len = BUCKET_CNT(EXP_MIN);
// XXX: Null pointers have an implementation-defined value
// per ISO C standard, and should not be zero-initialized with calloc().
// However, it is guaranteed to be zero on most, if not all,
// modern ABI standards that we know of.
// XXX: According to the ISO C standard, null pointers have an
// implementation-defined value, and should not be zero-initialized
// with calloc() or memset().
//
// Nevertheless, we add a build-time check just in case (see configure.ac).
// However, it is guaranteed to be all-bits-zero on most,
// if not all, modern ABI standards that we know of.
// POSIX also has such requirements since POSIX.1-2024.
//
// See:
// - <https://github.com/ARM-software/abi-aa>
// - <https://github.com/riscv-non-isa/riscv-elf-psabi-doc>
// - <https://gitlab.com/x86-psABIs/x86-64-ABI>
// - <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stddef.h.html>
struct bucket *buckets = xcalloc(buckets_len, sizeof(struct bucket));
struct hashmap *h = xmalloc(sizeof(*h));