Don't inject matchpathcon_filespec_add64() ifdef __x86_64__ (#463, Debian#1098481) #464
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
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
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
but this is not statically solvable with the preprocessor.
Thus, we need to explicitly 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: #463
Closes: Debian#1098481
Cc: @kainz
Insert -I../../libselinux/include and -L../../libselinux/src into subprograms where needed
These subprograms (sublibraries) use plain
&c. which includes/links to the system libselinux.
Naturally, this doesn't work if you don't have one.
These all came out of a plain build on x32.