[boot-wrapper PATCH v2 2/9] Add standard headers
Andre Przywara
andre.przywara at arm.com
Fri Jan 7 06:31:28 PST 2022
On Fri, 7 Jan 2022 13:49:43 +0000
Mark Rutland <mark.rutland at arm.com> wrote:
> On Wed, Dec 22, 2021 at 06:16:00PM +0000, Andre Przywara wrote:
> > So far we were relying on some standard C headers to be provided by the
> > toolchain. This applies for instance to stddef.h and stdint.h.
> > As a "bare-metal" application, we should not rely on external headers,
> > or even on a toolchain providing them in the first place.
> >
> > Define our own version of stddef.h and stdint.h, containing just the
> > types that we actually need.
>
> Even a freestanding compiler implementation is required to provide these
> headers, and using the compiler versions would avoid unexpected mismatches
> (e.g. for builtins). So I don't think the justification as written makes sense.
>
> Is this because the next patch removes the stdinc paths, and so we don't get
> the compiler's implementation of these headers?
Yes, exactly. I don't like repeating those either, and understand that
even a minimal compiler carries these headers, *somewhere*, but I couldn't
find an easy way of including them without being compiler/build specific.
I can try harder, and would be happy if someone points out the real
solution to this.
For the sake of solving this problem I figured that those particular
definitions are actually somewhat generic (for all practical purposes), so
it was the least involved solution to the real problem, which is to ditch
the *other* compiler headers and libraries, as done in patch 3/9.
Cheers,
Andre
> >
> > Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> > ---
> > arch/aarch32/include/stdint.h | 19 +++++++++++++++++++
> > arch/aarch64/include/stdint.h | 19 +++++++++++++++++++
> > include/stddef.h | 15 +++++++++++++++
> > 3 files changed, 53 insertions(+)
> > create mode 100644 arch/aarch32/include/stdint.h
> > create mode 100644 arch/aarch64/include/stdint.h
> > create mode 100644 include/stddef.h
> >
> > diff --git a/arch/aarch32/include/stdint.h b/arch/aarch32/include/stdint.h
> > new file mode 100644
> > index 0000000..77546f0
> > --- /dev/null
> > +++ b/arch/aarch32/include/stdint.h
> > @@ -0,0 +1,19 @@
> > +/*
> > + * arch/aarch32/include/stdint.h
> > + *
> > + * Copyright (C) 2021 ARM Limited. All rights reserved.
> > + *
> > + * Use of this source code is governed by a BSD-style license that can be
> > + * found in the LICENSE.txt file.
> > + */
> > +#ifndef STDINT_H__
> > +#define STDINT_H__
> > +
> > +typedef unsigned char uint8_t;
> > +typedef unsigned short int uint16_t;
> > +typedef unsigned int uint32_t;
> > +typedef unsigned long long int uint64_t;
> > +
> > +typedef unsigned int uintptr_t;
> > +
> > +#endif
> > diff --git a/arch/aarch64/include/stdint.h b/arch/aarch64/include/stdint.h
> > new file mode 100644
> > index 0000000..92c2603
> > --- /dev/null
> > +++ b/arch/aarch64/include/stdint.h
> > @@ -0,0 +1,19 @@
> > +/*
> > + * arch/aarch64/include/stdint.h
> > + *
> > + * Copyright (C) 2021 ARM Limited. All rights reserved.
> > + *
> > + * Use of this source code is governed by a BSD-style license that can be
> > + * found in the LICENSE.txt file.
> > + */
> > +#ifndef STDINT_H__
> > +#define STDINT_H__
> > +
> > +typedef unsigned char uint8_t;
> > +typedef unsigned short int uint16_t;
> > +typedef unsigned int uint32_t;
> > +typedef unsigned long int uint64_t;
> > +
> > +typedef unsigned long int uintptr_t;
> > +
> > +#endif
> > diff --git a/include/stddef.h b/include/stddef.h
> > new file mode 100644
> > index 0000000..3208b10
> > --- /dev/null
> > +++ b/include/stddef.h
> > @@ -0,0 +1,15 @@
> > +/*
> > + * include/stddef.h - standard data type definitions
> > + *
> > + * Copyright (C) 2021 ARM Limited. All rights reserved.
> > + *
> > + * Use of this source code is governed by a BSD-style license that can be
> > + * found in the LICENSE.txt file.
> > + */
> > +#ifndef STDDEF_H__
> > +#define STDDEF_H__
> > +
> > +typedef unsigned long int size_t;
> > +typedef signed long int ssize_t;
> > +
> > +#endif
> > --
> > 2.25.1
> >
More information about the linux-arm-kernel
mailing list