create stdio.h and stdarg.h for {,v}snprintf
Sometimes coreboot needs to compile external code (e.g. vboot_reference) using its own set of system header files. When these headers don't line up with C Standard Library, it causes problems. Create stdio.h and stdarg.h header files. Relocate snprintf into stdio.h and vsnprintf into stdarg.h from string.h. Chain include these header files from string.h, since coreboot doesn't care so much about the legacy POSIX location of these functions. Also move va_* definitions from vtxprintf.h into stdarg.h where they belong (in POSIX). Just use our own definitions regardless of GCC or LLVM. Add string.h header to a few C files which should have had it in the first place. BUG=b:124141368 TEST=make clean && make test-abuild BRANCH=none Change-Id: I7223cb96e745e11c82d4012c6671a51ced3297c2 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/39468 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
5e20c1cbc8
commit
a1b15172d7
|
@ -15,19 +15,7 @@
|
||||||
#ifndef __CONSOLE_VTXPRINTF_H
|
#ifndef __CONSOLE_VTXPRINTF_H
|
||||||
#define __CONSOLE_VTXPRINTF_H
|
#define __CONSOLE_VTXPRINTF_H
|
||||||
|
|
||||||
/* With GCC we use -nostdinc -ffreestanding to keep out system includes.
|
|
||||||
* Unfortunately this also gets us rid of the _compiler_ includes, like
|
|
||||||
* stdarg.h. To work around the issue, we define varargs directly here.
|
|
||||||
* On LLVM we can still just include stdarg.h.
|
|
||||||
*/
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define va_start(v, l) __builtin_va_start(v, l)
|
|
||||||
#define va_end(v) __builtin_va_end(v)
|
|
||||||
#define va_arg(v, l) __builtin_va_arg(v, l)
|
|
||||||
typedef __builtin_va_list va_list;
|
|
||||||
#else
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
int vtxprintf(void (*tx_byte)(unsigned char byte, void *data),
|
int vtxprintf(void (*tx_byte)(unsigned char byte, void *data),
|
||||||
const char *fmt, va_list args, void *data);
|
const char *fmt, va_list args, void *data);
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Note: This file is only for POSIX compatibility, and is meant to be
|
||||||
|
* chain-included via string.h.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STDARG_H
|
||||||
|
#define STDARG_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#define va_start(v, l) __builtin_va_start(v, l)
|
||||||
|
#define va_end(v) __builtin_va_end(v)
|
||||||
|
#define va_arg(v, l) __builtin_va_arg(v, l)
|
||||||
|
typedef __builtin_va_list va_list;
|
||||||
|
|
||||||
|
int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
|
||||||
|
|
||||||
|
#endif /* STDARG_H */
|
|
@ -0,0 +1,15 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Note: This file is only for POSIX compatibility, and is meant to be
|
||||||
|
* chain-included via string.h.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STDIO_H
|
||||||
|
#define STDIO_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
int snprintf(char *buf, size_t size, const char *fmt, ...);
|
||||||
|
|
||||||
|
#endif /* STDIO_H */
|
|
@ -1,9 +1,11 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#ifndef STRING_H
|
#ifndef STRING_H
|
||||||
#define STRING_H
|
#define STRING_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include <console/vtxprintf.h>
|
|
||||||
|
|
||||||
/* Stringify a token */
|
/* Stringify a token */
|
||||||
#ifndef STRINGIFY
|
#ifndef STRINGIFY
|
||||||
|
@ -16,8 +18,6 @@ void *memmove(void *dest, const void *src, size_t n);
|
||||||
void *memset(void *s, int c, size_t n);
|
void *memset(void *s, int c, size_t n);
|
||||||
int memcmp(const void *s1, const void *s2, size_t n);
|
int memcmp(const void *s1, const void *s2, size_t n);
|
||||||
void *memchr(const void *s, int c, size_t n);
|
void *memchr(const void *s, int c, size_t n);
|
||||||
int snprintf(char *buf, size_t size, const char *fmt, ...);
|
|
||||||
int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
|
|
||||||
char *strdup(const char *s);
|
char *strdup(const char *s);
|
||||||
char *strconcat(const char *s1, const char *s2);
|
char *strconcat(const char *s1, const char *s2);
|
||||||
size_t strnlen(const char *src, size_t max);
|
size_t strnlen(const char *src, size_t max);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <soc/gpio.h>
|
#include <soc/gpio.h>
|
||||||
#include <vendorcode/google/chromeos/chromeos.h>
|
#include <vendorcode/google/chromeos/chromeos.h>
|
||||||
#include <smbios.h>
|
#include <smbios.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
const char *smbios_system_sku(void)
|
const char *smbios_system_sku(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <soc/pci_devs.h>
|
#include <soc/pci_devs.h>
|
||||||
#include <soc/soc_util.h>
|
#include <soc/soc_util.h>
|
||||||
#include <soc/pm.h>
|
#include <soc/pm.h>
|
||||||
|
#include <string.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
static int acpi_sci_irq(void)
|
static int acpi_sci_irq(void)
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <device/pnp_def.h>
|
#include <device/pnp_def.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
struct superio_dev {
|
struct superio_dev {
|
||||||
const char *acpi_hid;
|
const char *acpi_hid;
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
* ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
|
* ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
|
||||||
***********************license end**************************************/
|
***********************license end**************************************/
|
||||||
#include <bdk.h>
|
#include <bdk.h>
|
||||||
|
#include <string.h>
|
||||||
#include "libbdk-arch/bdk-csrs-gti.h"
|
#include "libbdk-arch/bdk-csrs-gti.h"
|
||||||
#include "libbdk-arch/bdk-csrs-ocx.h"
|
#include "libbdk-arch/bdk-csrs-ocx.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue