[PATCH 1/1] lib: define memmove(), memcmp() as aliases
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Thu Dec 23 10:44:15 PST 2021
On 12/23/21 12:52, Anup Patel wrote:
> Hi Heinrich,
>
> On Thu, Dec 23, 2021 at 4:39 PM Heinrich Schuchardt
> <heinrich.schuchardt at canonical.com> wrote:
>>
>> According to the GCC documentation the freestanding environment must provide
>> memcpy(), memmove(), memset(), and memcmp(). We already have defined
>> memcpy() and memset() as weak aliases for sbi_memcpy() and sbi_memset() in
>> commit d249d6544c3c ("lib: sbi: Fix compile errors using -Os option").
>> Do the same for memmove() and memcmp().
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>
> We are moving memcpy() and memset() aliases to fw_base.S so that
> it's not part of libsbi.a which in-turn helps external firmwares using
> OpenSBI as a library. I am not fond of this solution but for the time
> being it will work. After OpenSBI v1.0 release, we can figure-out
> better way to do this within the firmware/ directory.
>
> Are you okay if I add memmove() and memcmp() aliases in
> fw_base.S as part of another patch ?
As you are anyway reworking the freestanding code, it makes sense that
you consider all relevant functions at once. Thanks.
Best regards
Heinrich
>
> Regards,
> Anup
>
>> ---
>> 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 c67c02e..233be4e 100644
>> --- a/lib/sbi/sbi_string.c
>> +++ b/lib/sbi/sbi_string.c
>> @@ -167,6 +167,9 @@ void *sbi_memmove(void *dest, const void *src, size_t count)
>> return dest;
>> }
>>
>> +void *memmove(void *dest, const void *src, size_t count) \
>> +__attribute__((weak, alias("sbi_memmove")));
>> +
>> int sbi_memcmp(const void *s1, const void *s2, size_t count)
>> {
>> const char *temp1 = s1;
>> @@ -183,6 +186,9 @@ int sbi_memcmp(const void *s1, const void *s2, size_t count)
>> return 0;
>> }
>>
>> +int memcmp(const void *s1, const void *s2, size_t count) \
>> +__attribute__((weak, alias("sbi_memcmp")));
>> +
>> void *sbi_memchr(const void *s, int c, size_t count)
>> {
>> const unsigned char *temp = s;
>> --
>> 2.33.1
>>
More information about the opensbi
mailing list