forked from Mirrors/opensbi
		
	platform: Fix compile error caused by standard includes
Avoid using standard includes namely stdint.h, string.h, stdlib.h, etc. All standard include except stddef.h give compilation error due to differences in RISC-V toolchain configuration. Typically, the compilation error is related to "gnu-stubs-lp64.h". This patch fixes compile error caused by standard includes by providing substitutes of definetions provided by standard includes wherever required. Signed-off-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
		
							
								
								
									
										39
									
								
								platform/common/include/plat/string.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								platform/common/include/plat/string.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2018 Western Digital Corporation or its affiliates.
 | 
			
		||||
 *
 | 
			
		||||
 * Authors:
 | 
			
		||||
 *   Atish Patra <atish.patra@wdc.com>
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier: BSD-2-Clause
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __STRING_H__
 | 
			
		||||
#define __STRING_H__
 | 
			
		||||
 | 
			
		||||
#include <sbi/sbi_types.h>
 | 
			
		||||
 | 
			
		||||
int strcmp(const char *a, const char *b);
 | 
			
		||||
 | 
			
		||||
size_t strlen(const char *str);
 | 
			
		||||
 | 
			
		||||
size_t strnlen(const char *str, size_t count);
 | 
			
		||||
 | 
			
		||||
char *strcpy(char *dest,const char *src);
 | 
			
		||||
 | 
			
		||||
char *strncpy(char *dest, const char *src, size_t count);
 | 
			
		||||
 | 
			
		||||
char *strchr(const char *s, int c);
 | 
			
		||||
 | 
			
		||||
char *strrchr(const char *s, int c);
 | 
			
		||||
 | 
			
		||||
void *memset(void *s,int c,size_t count);
 | 
			
		||||
 | 
			
		||||
void *memcpy(void *dest, const void *src, size_t count);
 | 
			
		||||
 | 
			
		||||
void *memmove(void *dest,const void *src, size_t count);
 | 
			
		||||
 | 
			
		||||
int memcmp(const void *s1,const void *s2, size_t count);
 | 
			
		||||
 | 
			
		||||
void *memchr(const void *s, int c, size_t count);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -10,9 +10,9 @@
 | 
			
		||||
#include <sbi/riscv_io.h>
 | 
			
		||||
#include <sbi/riscv_encoding.h>
 | 
			
		||||
#include <sbi/sbi_console.h>
 | 
			
		||||
#include <plat/string.h>
 | 
			
		||||
#include <plat/tinyfdt.h>
 | 
			
		||||
#include <plat/irqchip/plic.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define PLIC_PRIORITY_BASE		0x0
 | 
			
		||||
#define PLIC_PENDING_BASE		0x1000
 | 
			
		||||
 
 | 
			
		||||
@@ -12,12 +12,13 @@
 | 
			
		||||
 * bugs as well. Use any optimized routines from newlib or glibc if required.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <plat/string.h>
 | 
			
		||||
 | 
			
		||||
int strcmp(const char *a, const char *b)
 | 
			
		||||
{
 | 
			
		||||
	/* search first diff or end of string */
 | 
			
		||||
	for (; *a == *b && *a != '\0'; a++, b++);
 | 
			
		||||
 | 
			
		||||
	return *a - *b;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -46,7 +47,7 @@ size_t strnlen(const char *str, size_t count)
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char * strcpy(char * dest,const char *src)
 | 
			
		||||
char *strcpy(char *dest, const char *src)
 | 
			
		||||
{
 | 
			
		||||
	char *ret = dest;
 | 
			
		||||
 | 
			
		||||
@@ -57,7 +58,7 @@ char * strcpy(char * dest,const char *src)
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char * strncpy(char * dest,const char *src,size_t count)
 | 
			
		||||
char *strncpy(char *dest, const char *src, size_t count)
 | 
			
		||||
{
 | 
			
		||||
	char *ret = dest;
 | 
			
		||||
 | 
			
		||||
@@ -68,7 +69,7 @@ char * strncpy(char * dest,const char *src,size_t count)
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char * strchr(const char * s, int c)
 | 
			
		||||
char *strchr(const char *s, int c)
 | 
			
		||||
{
 | 
			
		||||
	while(*s != '\0' && *s != (char)c)
 | 
			
		||||
		s++;
 | 
			
		||||
@@ -79,7 +80,7 @@ char * strchr(const char * s, int c)
 | 
			
		||||
		return (char *)s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char * strrchr(const char * s, int c)
 | 
			
		||||
char *strrchr(const char *s, int c)
 | 
			
		||||
{
 | 
			
		||||
	const char *last = s + strlen(s);
 | 
			
		||||
 | 
			
		||||
@@ -91,7 +92,7 @@ char * strrchr(const char * s, int c)
 | 
			
		||||
	else
 | 
			
		||||
		return (char *)last;
 | 
			
		||||
}
 | 
			
		||||
void * memset(void * s,int c,size_t count)
 | 
			
		||||
void *memset(void *s, int c, size_t count)
 | 
			
		||||
{
 | 
			
		||||
	char *temp = s;
 | 
			
		||||
 | 
			
		||||
@@ -103,7 +104,7 @@ void * memset(void * s,int c,size_t count)
 | 
			
		||||
	return s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void * memcpy(void *dest, const void *src, size_t count)
 | 
			
		||||
void *memcpy(void *dest, const void *src, size_t count)
 | 
			
		||||
{
 | 
			
		||||
	char *temp1 = dest;
 | 
			
		||||
	const char *temp2 = src;
 | 
			
		||||
@@ -116,7 +117,7 @@ void * memcpy(void *dest, const void *src, size_t count)
 | 
			
		||||
	return dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void * memmove(void * dest,const void *src,size_t count)
 | 
			
		||||
void *memmove(void *dest, const void *src, size_t count)
 | 
			
		||||
{
 | 
			
		||||
	char *temp1 = (char *)dest;
 | 
			
		||||
	const char *temp2 = (char *)src;
 | 
			
		||||
@@ -138,13 +139,15 @@ void * memmove(void * dest,const void *src,size_t count)
 | 
			
		||||
			count--;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int memcmp(const void * s1,const void * s2,size_t count)
 | 
			
		||||
int memcmp(const void *s1, const void *s2, size_t count)
 | 
			
		||||
{
 | 
			
		||||
	const char *temp1 = s1;
 | 
			
		||||
	const char *temp2 = s2;
 | 
			
		||||
 | 
			
		||||
	for (; count > 0 && (*temp1 == *temp2); count--) {
 | 
			
		||||
		temp1++;
 | 
			
		||||
		temp2++;
 | 
			
		||||
@@ -166,5 +169,6 @@ void *memchr(const void *s, int c, size_t count)
 | 
			
		||||
		}
 | 
			
		||||
		count--;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -52,11 +52,13 @@
 | 
			
		||||
 *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sbi/sbi_types.h>
 | 
			
		||||
#include <plat/string.h>
 | 
			
		||||
 | 
			
		||||
#define INT_MAX		((int)(~0U >> 1))
 | 
			
		||||
#define UINT_MAX	((unsigned int)~0U)
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __CHECKER__
 | 
			
		||||
#define FDT_FORCE __attribute__((force))
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,8 @@
 | 
			
		||||
 * SPDX-License-Identifier: BSD-2-Clause
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <plat/string.h>
 | 
			
		||||
#include <plat/tinyfdt.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define FDT_MAGIC	0xd00dfeed
 | 
			
		||||
#define FDT_VERSION	17
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user