1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-28 11:55:44 +03:00

shared/base-filesystem: add (empty) iffdery for the table

I think this is going to be very annoying for our downstream maintainers.
Let's at least provide the ifdef scaffolding so that only filling in the
actual entries remains. The structure is copied from missing_syscall.h.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-11-17 14:43:02 +01:00
parent 60106de05a
commit 6f32005fd1

View File

@ -38,25 +38,46 @@ static const BaseFilesystem table[] = {
{ "proc", 0755, NULL, NULL, true },
{ "sys", 0755, NULL, NULL, true },
{ "dev", 0755, NULL, NULL, true },
#if defined(__i386__) || defined(__x86_64__)
/* Various architecture ABIs define the path to the dynamic loader via the /lib64/ subdirectory of
* the root directory. When booting from an otherwise empty root file system (where only /usr/ has
* been mounted into) it is thus necessary to create a symlink pointing to the right subdirectory of
* /usr/ first otherwise we couldn't invoke any dynamic binary. Let's detect this case here, and
* create the symlink as needed should it be missing. We prefer doing this consistently with Debian's
* multiarch logic, but support Fedora-style multilib too.*/
#if defined(__aarch64__)
#elif defined(__alpha__)
#elif defined(__arc__) || defined(__tilegx__)
#elif defined(__arm__)
#elif defined(__i386__) || defined(__x86_64__)
{ "lib64", 0, "usr/lib/x86_64-linux-gnu\0"
"usr/lib64\0", "ld-linux-x86-64.so.2" },
#else
/* gcc doesn't allow pragma to be used within constructs, hence log about this separately below */
# define WARN_LIB64 1
# define KNOW_LIB64_DIRS 1
#elif defined(__ia64__)
#elif defined(__m68k__)
#elif defined(_MIPS_SIM)
# if _MIPS_SIM == _MIPS_SIM_ABI32
# elif _MIPS_SIM == _MIPS_SIM_NABI32
# elif _MIPS_SIM == _MIPS_SIM_ABI64
# else
# error "Unknown MIPS ABI"
# endif
#elif defined(__powerpc__)
#elif defined(__riscv)
# if __riscv_xlen == 32
# elif __riscv_xlen == 64
# else
# error "Unknown RISC-V ABI"
# endif
#elif defined(__s390__)
#elif defined(__s390x__)
#elif defined(__sparc__)
#endif
/* gcc doesn't allow pragma to be used within constructs, hence log about this separately below */
};
#ifdef WARN_LIB64
#pragma message "If your architecture knows a /lib64/ or /lib32/ directory, please add an entry creating it here."
/* And if your architecture doesn't know these directories, make sure to add ifdeffery here to
* suppress this pragma message. */
#ifndef KNOW_LIB64_DIRS
# pragma message "Please add an entry above specifying whether your architecture uses /lib64/, /lib32/, or no such links."
#endif
int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {