[PATCH v3 2/2] lib: sbi: Fix compile errors using -Os option
Xiang W
wxjstz at 126.com
Thu Dec 2 06:30:12 PST 2021
在 2021-12-02星期四的 17:59 +0530,Anup Patel写道:
> When building with -Os option along with -ffreestanding, both GCC
> and clang will add implicit calls to memcpy() and memcpy() for stack
> variables initialized in declaration.
>
> The C standard as per Clause 4, the compiler cannot necessarily
> assume that anything beyond:
>
> * float.h
> * iso646.h
> * limits.h
> * stdalign.h
> * stdarg.h
> * stdbool.h
> * stddef.h
> * stdint.h
> * stdnoreturn.h
> * fenv.h
> * math.h
> * and the numeric conversion functions of stdlib.h.
>
> This patch maps memcpy() and memset() as weak-alias of sbi_memcpy()
> and sbi_memset() respectively so that implicit calls to memcpy()
> and memset() will compile properly.
>
> Signed-off-by: Anup Patel <anup.patel at wdc.com>
Reviewed-by: Xiang W <wxjstz at 126.com>
> ---
> lib/sbi/sbi_string.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/lib/sbi/sbi_string.c b/lib/sbi/sbi_string.c
> index c87bce9..c67c02e 100644
> --- a/lib/sbi/sbi_string.c
> +++ b/lib/sbi/sbi_string.c
> @@ -122,6 +122,9 @@ void *sbi_memset(void *s, int c, size_t count)
> return s;
> }
>
> +void *memset(void *s, int c, size_t count) \
> +__attribute__((weak, alias("sbi_memset")));
> +
> void *sbi_memcpy(void *dest, const void *src, size_t count)
> {
> char *temp1 = dest;
> @@ -135,6 +138,9 @@ void *sbi_memcpy(void *dest, const void *src,
> size_t count)
> return dest;
> }
>
> +void *memcpy(void *dest, const void *src, size_t count) \
> +__attribute__((weak, alias("sbi_memcpy")));
> +
> void *sbi_memmove(void *dest, const void *src, size_t count)
> {
> char *temp1 = (char *)dest;
> --
> 2.25.1
>
>
More information about the opensbi
mailing list