mirror of
https://github.com/systemd/systemd.git
synced 2025-03-09 12:58:26 +03:00
boot: Do not use errno.h/inttypes.h
These are provided by libc instead of the compiler and are not supposed to be used in freestanding environments. When cross-compiling with clang and the corresponding gcc cross-toolchain is not around, clang may pick up the wrong header from the host system.
This commit is contained in:
parent
a4ab05e296
commit
3ceaa05d56
@ -1,7 +1,5 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "bcd.h"
|
||||
#include "bootspec-fundamental.h"
|
||||
#include "console.h"
|
||||
|
@ -121,6 +121,32 @@ _gnu_printf_(2, 0) _warn_unused_result_ char16_t *xvasprintf_status(EFI_STATUS s
|
||||
# define printf(...) printf_status(EFI_SUCCESS, __VA_ARGS__)
|
||||
# define xasprintf(...) xasprintf_status(EFI_SUCCESS, __VA_ARGS__)
|
||||
|
||||
/* inttypes.h is provided by libc instead of the compiler and is not supposed to be used in freestanding
|
||||
* environments. We could use clang __*_FMT*__ constants for this, bug gcc does not have them. :( */
|
||||
|
||||
# if defined(__ILP32__)
|
||||
# define PRI64_PREFIX "ll"
|
||||
# elif defined(__LP64__)
|
||||
# define PRI64_PREFIX "l"
|
||||
# elif defined(__LLP64__) || (__SIZEOF_LONG__ == 4 && __SIZEOF_POINTER__ == 8)
|
||||
# define PRI64_PREFIX "ll"
|
||||
# else
|
||||
# error Unknown 64-bit data model
|
||||
# endif
|
||||
|
||||
# define PRIi32 "i"
|
||||
# define PRIu32 "u"
|
||||
# define PRIx32 "x"
|
||||
# define PRIX32 "X"
|
||||
# define PRIiPTR "zi"
|
||||
# define PRIuPTR "zu"
|
||||
# define PRIxPTR "zx"
|
||||
# define PRIXPTR "zX"
|
||||
# define PRIi64 PRI64_PREFIX "i"
|
||||
# define PRIu64 PRI64_PREFIX "u"
|
||||
# define PRIx64 PRI64_PREFIX "x"
|
||||
# define PRIX64 PRI64_PREFIX "X"
|
||||
|
||||
/* The compiler normally has knowledge about standard functions such as memcmp, but this is not the case when
|
||||
* compiling with -ffreestanding. By referring to builtins, the compiler can check arguments and do
|
||||
* optimizations again. Note that we still need to provide implementations as the compiler is free to not
|
||||
|
@ -1,7 +1,5 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "proto/device-path.h"
|
||||
#include "proto/simple-text-io.h"
|
||||
#include "ticks.h"
|
||||
|
@ -1,7 +1,11 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include <errno.h>
|
||||
#ifdef SD_BOOT
|
||||
# define EINVAL 22
|
||||
#else
|
||||
# include <errno.h>
|
||||
#endif
|
||||
#include "string-util-fundamental.h"
|
||||
|
||||
/* Features of the loader, i.e. systemd-boot */
|
||||
|
Loading…
x
Reference in New Issue
Block a user