[DSE-Dev] Bug#1063329: libselinux1t64: breaks system in upgrade from unstable
Michael Tokarev
mjt at tls.msk.ru
Thu Feb 8 05:32:10 GMT 2024
06.02.2024 12:34, Helmut Grohne:
...
> An option I see here is to provide ABI-duality for libselinux:
>
> -extern int matchpathcon_filespec_add(ino_t ino, int specind, const char *file);
> +typedef unsigned long libselinux_ino_t;
> +typedef uint64_t libselinux_ino64_t;
> +extern int matchpathcon_filespec_add(libselinux_ino_t ino, int specind, const char *file);
> +#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 && sizeof(unsigned long) < 8
It's good for a sketch to show an idea but it wont work in practice, -
you can't use sizeof(foo) in a preprocessor condition. That's what
WORDSIZE #defines are for. But it's a minor nit.
glibc already has all the support for LFS which can be used directly,
by copying code from any glibc header, like eg for lseek definition...
> +extern int matchpathcon_filespec_add64(libselinux_ino64_t ino, int specind, const char *file);
> +#define matchpathcon_filespec_add matchpathcon_filespec_add64
and keeping this #define here instead of using internal in-glibc
symbol redirection stuff.
And ofc we need to define the compat wrapper for matchpathcon_filespec_add
to the source, and the new 64bit symbol to libselinux.map, with the same
arch-specific condition.
/mjt
More information about the SELinux-devel
mailing list