Re: [PATCH] bootwrapper: Use local definition of string.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4 September 2012 15:57, Jon Medhurst (Tixy) <tixy@xxxxxxxxxx> wrote:

Thanks for this patch; looks pretty good.

> The semihosting and FDT code makes use of libc style string
> functions implemented in our string.c, however it relies of the system

"relies on". (I can fix this when I commit the patch.)

> providing the string.h header file.
>
> This causes problems on toolchains that don't provide these headers,
> like Android toolchains, and it also means that we include declaration
> for functions which aren't implemented in the bootwrapper.
>
> Resolve this by providing our own string.h which declares only
> the functions we implement and add the base directory to the
> include path so this header is found.
>
> Signed-off-by: Jon Medhurst <tixy@xxxxxxxxxx>
> ---
>  Makefile |    2 +-
>  string.h |   16 ++++++++++++++++
>  2 files changed, 17 insertions(+), 1 deletion(-)
>  create mode 100644 string.h
>
> diff --git a/Makefile b/Makefile
> index 995fd8f..f8fc841 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -57,7 +57,7 @@ monitor.o: $(MONITOR)
>         $(CC) $(CPPFLAGS) -c -o $@ $<
>
>  %.o: %.c
> -       $(CC) $(CPPFLAGS) -O2 -ffreestanding -Ilibfdt -c -o $@ $<
> +       $(CC) $(CPPFLAGS) -O2 -ffreestanding -I. -Ilibfdt -c -o $@ $<
>
>  model.lds: $(LD_SCRIPT) Makefile
>         $(CC) $(CPPFLAGS) -E -P -C -o $@ $<
> diff --git a/string.h b/string.h
> new file mode 100644
> index 0000000..f1aebdf
> --- /dev/null
> +++ b/string.h
> @@ -0,0 +1,16 @@
> +#ifndef STRING_H
> +#define STRING_H
> +
> +#include <stddef.h>

I guess to be fully consistent we should provide our own
stddef.h and stdint.h, but if it's not causing problems it's
not worth the effort.

> +
> +extern void *(memcpy)(void *__dest, __const void *__src, size_t __n);

I was going to complain about the weird parens around function
names and inconsistent use of __ prefix on parameter names,
but I see these all come straight from the existing string.c,
so never mind :-)

> +extern void *(memmove)(void *__dest, __const void *__src, size_t __n);
> +extern void *(memchr)(void const *s, int c, size_t n);
> +extern size_t (strlen)(const char *s);
> +extern void *(memset)(void *s, int c, size_t count);
> +extern int (memcmp)(void const *p1, void const *p2, size_t n);
> +extern int (strcmp)(char const *s1, char const *s2);
> +extern int (strncmp)(char const *s1, char const *s2, size_t n);
> +extern char *(strchr)(char const *s, int c);
> +
> +#endif
> --
> 1.7.10.4

Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx>

-- PMM
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux