Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Don't inject matchpathcon_filespec_add64() ifdef __x86_64__
As the code notes, it wants to add an /* ABI backwards-compatible shim for non-LFS 32-bit systems */ it tries to detect these with #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 && __BITS_PER_LONG < 64 which is correct with the added precondition that the ino_t /without/ -D_FILE_OFFSET_BITS=64 /was actually/ u32 (i.e. it conflates /all/ ILP32 systems into being non-LFS). This is not the case on x32, for example, which is LFS; thus, the static_assert(sizeof(unsigned long) == sizeof(__ino_t), "inode size mismatch"); assertion fails (__ino_t is the "kernel ino_t" type, which generally corresponds to the kernel's ulong, which is u64 on x32). The correct spelling of the test for this is #if (...) && sizeof(__ino_t) == 4 but this is not statically solvable with the preprocessor. Thus, we need to explcitly special-case this. __x86_64__ indicates one of two ABIs (LP64 (amd64) or ILP32 (x32)), both of which have ino_t=u64, and is the macro used for defining __INO_T_TYPE in the system headers, so it's the best fit here. Fixes: commit 9395cc0 ("Always build for LFS mode on 32-bit archs.") Closes: SELinuxProject#463 Closes: Debian#1098481 Signed-off-by: наб <[email protected]>
- Loading branch information