mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Style fixes in libruntime.
This commit is contained in:
parent
aa43e06366
commit
b4a29f754a
@ -27,61 +27,87 @@
|
||||
* and call assertion fail handler.
|
||||
*/
|
||||
void __noreturn
|
||||
jerry_exit( jerry_status_t code) /**< status code */
|
||||
jerry_exit (jerry_status_t code) /**< status code */
|
||||
{
|
||||
#ifndef JERRY_NDEBUG
|
||||
if ( code != ERR_OK )
|
||||
if (code != ERR_OK)
|
||||
{
|
||||
__printf("Error: ");
|
||||
__printf ("Error: ");
|
||||
|
||||
switch ( code )
|
||||
switch (code)
|
||||
{
|
||||
case ERR_OK:
|
||||
{
|
||||
JERRY_UNREACHABLE();
|
||||
break;
|
||||
}
|
||||
case ERR_IO:
|
||||
__printf("ERR_IO\n");
|
||||
{
|
||||
__printf ("ERR_IO\n");
|
||||
break;
|
||||
}
|
||||
case ERR_BUFFER_SIZE:
|
||||
__printf("ERR_BUFFER_SIZE\n");
|
||||
{
|
||||
__printf ("ERR_BUFFER_SIZE\n");
|
||||
break;
|
||||
}
|
||||
case ERR_SEVERAL_FILES:
|
||||
__printf("ERR_SEVERAL_FILES\n");
|
||||
{
|
||||
__printf ("ERR_SEVERAL_FILES\n");
|
||||
break;
|
||||
}
|
||||
case ERR_NO_FILES:
|
||||
__printf("ERR_NO_FILES\n");
|
||||
{
|
||||
__printf ("ERR_NO_FILES\n");
|
||||
break;
|
||||
}
|
||||
case ERR_NON_CHAR:
|
||||
__printf("ERR_NON_CHAR\n");
|
||||
{
|
||||
__printf ("ERR_NON_CHAR\n");
|
||||
break;
|
||||
}
|
||||
case ERR_UNCLOSED:
|
||||
__printf("ERR_UNCLOSED\n");
|
||||
{
|
||||
__printf ("ERR_UNCLOSED\n");
|
||||
break;
|
||||
}
|
||||
case ERR_INT_LITERAL:
|
||||
__printf("ERR_INT_LITERAL\n");
|
||||
{
|
||||
__printf ("ERR_INT_LITERAL\n");
|
||||
break;
|
||||
}
|
||||
case ERR_STRING:
|
||||
__printf("ERR_STRING\n");
|
||||
{
|
||||
__printf ("ERR_STRING\n");
|
||||
break;
|
||||
}
|
||||
case ERR_PARSER:
|
||||
__printf("ERR_PARSER\n");
|
||||
{
|
||||
__printf ("ERR_PARSER\n");
|
||||
break;
|
||||
}
|
||||
case ERR_MEMORY:
|
||||
__printf("ERR_MEMORY\n");
|
||||
{
|
||||
__printf ("ERR_MEMORY\n");
|
||||
break;
|
||||
}
|
||||
case ERR_SYSCALL:
|
||||
{
|
||||
JERRY_UNREACHABLE();
|
||||
break;
|
||||
}
|
||||
case ERR_GENERAL:
|
||||
__printf("ERR_GENERAL\n");
|
||||
{
|
||||
__printf ("ERR_GENERAL\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* The failed assertion is 'Return code is zero' */
|
||||
jerry_assert_fail( "Return code is zero", __FILE__, __LINE__);
|
||||
jerry_assert_fail ("Return code is zero", __FILE__, __LINE__);
|
||||
}
|
||||
#endif /* !JERRY_NDEBUG */
|
||||
#endif /* !JERRY_NDEBUG */
|
||||
|
||||
__exit( -code );
|
||||
__exit (-code);
|
||||
} /* jerry_exit */
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -19,23 +19,23 @@
|
||||
|
||||
#include "jerry-libc.h"
|
||||
|
||||
FIXME( #ifndef LIBC_MUSL should be removed from here when own libc will be implemented )
|
||||
FIXME(#ifndef LIBC_MUSL should be removed from here when own libc will be implemented)
|
||||
|
||||
#ifndef LIBC_MUSL
|
||||
/**
|
||||
* memcpy alias to __memcpy (for compiler usage)
|
||||
*/
|
||||
extern void *memcpy(void *s1, const void*s2, size_t n);
|
||||
extern void *memcpy (void *s1, const void*s2, size_t n);
|
||||
|
||||
/**
|
||||
* memset alias to __memset (for compiler usage)
|
||||
*/
|
||||
extern void *memset(void *s, int c, size_t n);
|
||||
extern void *memset (void *s, int c, size_t n);
|
||||
|
||||
/**
|
||||
* memmove alias to __memmove (for compiler usage)
|
||||
*/
|
||||
extern void *memmove(void *s1, const void*s2, size_t n);
|
||||
extern void *memmove (void *s1, const void*s2, size_t n);
|
||||
|
||||
#ifdef __GNUC__
|
||||
/*
|
||||
@ -53,31 +53,31 @@ CALL_PRAGMA(GCC optimize ("-fno-tree-loop-distribute-patterns"))
|
||||
/**
|
||||
* memcpy alias to __memcpy (for compiler usage)
|
||||
*/
|
||||
void* memcpy(void *s1, /**< destination */
|
||||
const void* s2, /**< source */
|
||||
size_t n) /**< bytes number */
|
||||
void* memcpy (void *s1, /**< destination */
|
||||
const void* s2, /**< source */
|
||||
size_t n) /**< bytes number */
|
||||
{
|
||||
return __memcpy(s1, s2, n);
|
||||
return __memcpy (s1, s2, n);
|
||||
} /* memcpy */
|
||||
|
||||
/**
|
||||
* memset alias to __memset (for compiler usage)
|
||||
*/
|
||||
void* memset(void *s, /**< area to set values in */
|
||||
int c, /**< value to set */
|
||||
size_t n) /**< area size */
|
||||
void* memset (void *s, /**< area to set values in */
|
||||
int c, /**< value to set */
|
||||
size_t n) /**< area size */
|
||||
{
|
||||
return __memset(s, c, n);
|
||||
return __memset (s, c, n);
|
||||
} /* memset */
|
||||
|
||||
/**
|
||||
* memmove alias to __memmove (for compiler usage)
|
||||
*/
|
||||
void* memmove(void *s1, /**< destination*/
|
||||
const void*s2, /**< source */
|
||||
size_t n) /**< area size */
|
||||
void* memmove (void *s1, /**< destination*/
|
||||
const void*s2, /**< source */
|
||||
size_t n) /**< area size */
|
||||
{
|
||||
return __memmove(s1, s2, n);
|
||||
return __memmove (s1, s2, n);
|
||||
} /* memmove */
|
||||
|
||||
#ifdef __GNUC__
|
||||
@ -89,65 +89,66 @@ CALL_PRAGMA(GCC diagnostic pop)
|
||||
|
||||
/**
|
||||
* memset
|
||||
*
|
||||
*
|
||||
* @return @s
|
||||
*/
|
||||
void*
|
||||
__memset(void *s, /**< area to set values in */
|
||||
int c, /**< value to set */
|
||||
size_t n) /**< area size */
|
||||
__memset (void *s, /**< area to set values in */
|
||||
int c, /**< value to set */
|
||||
size_t n) /**< area size */
|
||||
{
|
||||
uint8_t *area_p = s;
|
||||
for ( size_t index = 0; index < n; index++ )
|
||||
{
|
||||
area_p[ index ] = (uint8_t)c;
|
||||
}
|
||||
|
||||
return s;
|
||||
uint8_t *area_p = s;
|
||||
for (size_t index = 0; index < n; index++)
|
||||
{
|
||||
area_p[ index ] = (uint8_t)c;
|
||||
}
|
||||
|
||||
return s;
|
||||
} /* __memset */
|
||||
|
||||
/**
|
||||
* memcmp
|
||||
*
|
||||
*
|
||||
* @return 0, if areas are equal;
|
||||
* -1, if first area's content is lexicographically less, than second area's content;
|
||||
* 1, otherwise
|
||||
*/
|
||||
int
|
||||
__memcmp(const void *s1, /**< first area */
|
||||
const void *s2, /**< second area */
|
||||
size_t n) /**< area size */
|
||||
__memcmp (const void *s1, /**< first area */
|
||||
const void *s2, /**< second area */
|
||||
size_t n) /**< area size */
|
||||
{
|
||||
const uint8_t *area1_p = s1, *area2_p = s2;
|
||||
for ( size_t index = 0; index < n; index++ )
|
||||
const uint8_t *area1_p = s1, *area2_p = s2;
|
||||
for (size_t index = 0; index < n; index++)
|
||||
{
|
||||
if (area1_p[ index ] < area2_p[ index ])
|
||||
{
|
||||
if ( area1_p[ index ] < area2_p[ index ] )
|
||||
{
|
||||
return -1;
|
||||
} else if ( area1_p[ index ] > area2_p[ index ] )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
else if (area1_p[ index ] > area2_p[ index ])
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
} /* __memcmp */
|
||||
|
||||
/**
|
||||
* memcpy
|
||||
*/
|
||||
void *
|
||||
__memcpy(void *s1, /**< destination */
|
||||
const void *s2, /**< source */
|
||||
size_t n) /**< bytes number */
|
||||
__memcpy (void *s1, /**< destination */
|
||||
const void *s2, /**< source */
|
||||
size_t n) /**< bytes number */
|
||||
{
|
||||
uint8_t *area1_p = s1;
|
||||
const uint8_t *area2_p = s2;
|
||||
|
||||
for ( size_t index = 0; index < n; index++ )
|
||||
{
|
||||
area1_p[ index ] = area2_p[ index ];
|
||||
}
|
||||
uint8_t *area1_p = s1;
|
||||
const uint8_t *area2_p = s2;
|
||||
|
||||
for (size_t index = 0; index < n; index++)
|
||||
{
|
||||
area1_p[ index ] = area2_p[ index ];
|
||||
}
|
||||
|
||||
return s1;
|
||||
} /* __memcpy */
|
||||
@ -158,102 +159,127 @@ __memcpy(void *s1, /**< destination */
|
||||
* @return the dest pointer's value
|
||||
*/
|
||||
void *
|
||||
__memmove(void *s1, /**< destination */
|
||||
const void *s2, /**< source */
|
||||
size_t n) /**< bytes number */
|
||||
__memmove (void *s1, /**< destination */
|
||||
const void *s2, /**< source */
|
||||
size_t n) /**< bytes number */
|
||||
{
|
||||
uint8_t *dest_p = s1;
|
||||
const uint8_t *src_p = s2;
|
||||
|
||||
if ( dest_p < src_p )
|
||||
if (dest_p < src_p)
|
||||
{ /* from begin to end */
|
||||
for ( size_t index = 0; index < n; index++ )
|
||||
for (size_t index = 0; index < n; index++)
|
||||
{
|
||||
dest_p[ index ] = src_p[ index ];
|
||||
dest_p[ index ] = src_p[ index ];
|
||||
}
|
||||
} else if ( dest_p > src_p )
|
||||
}
|
||||
else if (dest_p > src_p)
|
||||
{ /* from end to begin */
|
||||
for ( size_t index = 1; index <= n; index++ )
|
||||
for (size_t index = 1; index <= n; index++)
|
||||
{
|
||||
dest_p[ n - index ] = src_p[ n - index ];
|
||||
dest_p[ n - index ] = src_p[ n - index ];
|
||||
}
|
||||
}
|
||||
|
||||
return s1;
|
||||
} /* __memmove */
|
||||
|
||||
/** Compare two strings. return an integer less than, equal to, or greater than zero
|
||||
if s1 is found, respectively, to be less than, to match, or be greater than s2. */
|
||||
/** Compare two strings. return an integer less than, equal to, or greater than zero
|
||||
if s1 is found, respectively, to be less than, to match, or be greater than s2. */
|
||||
int
|
||||
__strcmp (const char *s1, const char *s2)
|
||||
{
|
||||
size_t i;
|
||||
if (s1 == NULL)
|
||||
{
|
||||
if (s2 != NULL)
|
||||
{
|
||||
if (s2 != NULL)
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (s2 == NULL)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0; s1[i]; i++)
|
||||
{
|
||||
if (s1[i] > s2[i])
|
||||
{
|
||||
if (s1[i] > s2[i])
|
||||
return 1;
|
||||
else if (s1[i] < s2[i])
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
else if (s1[i] < s2[i])
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (s2[i])
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Compare two strings. return an integer less than, equal to, or greater than zero
|
||||
if the first n character of s1 is found, respectively, to be less than, to match,
|
||||
or be greater than the first n character of s2. */
|
||||
/** Compare two strings. return an integer less than, equal to, or greater than zero
|
||||
if the first n character of s1 is found, respectively, to be less than, to match,
|
||||
or be greater than the first n character of s2. */
|
||||
int
|
||||
__strncmp (const char *s1, const char *s2, size_t n)
|
||||
{
|
||||
size_t i;
|
||||
if (s1 == NULL)
|
||||
{
|
||||
if (s2 != NULL)
|
||||
{
|
||||
if (s2 != NULL)
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (s2 == NULL)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
if (s1[i] > s2[i])
|
||||
{
|
||||
if (s1[i] > s2[i])
|
||||
return 1;
|
||||
else if (s1[i] < s2[i])
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
else if (s1[i] < s2[i])
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Copy a string. At most n bytes of src are copied. Warning: If there is no
|
||||
null byte among the first n bytes of src, the string placed in dest will not be null-terminated.
|
||||
@return a pointer to the destination string dest. */
|
||||
null byte among the first n bytes of src, the string placed in dest will not be null-terminated.
|
||||
@return a pointer to the destination string dest. */
|
||||
char *
|
||||
__strncpy(char *dest, const char *src, size_t n)
|
||||
__strncpy (char *dest, const char *src, size_t n)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
dest[i] = src[i];
|
||||
if (src[i] == '\0')
|
||||
{
|
||||
dest[i] = src[i];
|
||||
if (src[i] == '\0')
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
@ -274,13 +300,16 @@ __strlen (const char *s)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; s[i]; i++)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/** Checks for white-space characters. In the "C" and "POSIX" locales, these are: space,
|
||||
form-feed ('\f'), newline ('\n'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). */
|
||||
int
|
||||
/** Checks for white-space characters. In the "C" and "POSIX" locales, these are: space,
|
||||
form-feed ('\f'), newline ('\n'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). */
|
||||
int
|
||||
__isspace (int c)
|
||||
{
|
||||
switch (c)
|
||||
@ -291,9 +320,13 @@ __isspace (int c)
|
||||
case '\r':
|
||||
case '\t':
|
||||
case '\v':
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -301,7 +334,7 @@ __isspace (int c)
|
||||
int
|
||||
__isupper (int c)
|
||||
{
|
||||
return c >= 'A' && c <= 'Z';
|
||||
return c >= 'A' && c <= 'Z';
|
||||
}
|
||||
|
||||
/** Checks for an lowercase letter. */
|
||||
@ -311,8 +344,8 @@ __islower (int c)
|
||||
return c >= 'a' && c <= 'z';
|
||||
}
|
||||
|
||||
/** Checks for an alphabetic character.
|
||||
In the standard "C" locale, it is equivalent to (isupper(c) || islower(c)). */
|
||||
/** Checks for an alphabetic character.
|
||||
In the standard "C" locale, it is equivalent to (isupper (c) || islower (c)). */
|
||||
int
|
||||
__isalpha (int c)
|
||||
{
|
||||
@ -327,7 +360,7 @@ __isdigit (int c)
|
||||
}
|
||||
|
||||
/** checks for a hexadecimal digits, that is, one of
|
||||
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F. */
|
||||
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F. */
|
||||
int
|
||||
__isxdigit (int c)
|
||||
{
|
||||
|
||||
@ -91,19 +91,19 @@ typedef enum
|
||||
__SEEK_END /**< relative to end of file */
|
||||
} _whence_t;
|
||||
|
||||
extern _FILE* __fopen(const char *, const char *);
|
||||
extern int __fclose(_FILE *);
|
||||
extern int __fseek(_FILE *, long offset, _whence_t);
|
||||
extern long __ftell(_FILE *);
|
||||
extern void __rewind(_FILE *);
|
||||
extern size_t __fread(void *, size_t, size_t, _FILE *);
|
||||
extern size_t __fwrite(const void *, size_t, size_t, _FILE *);
|
||||
extern int __fprintf(_FILE *, const char *, ...);
|
||||
extern _FILE* __fopen (const char *, const char *);
|
||||
extern int __fclose (_FILE *);
|
||||
extern int __fseek (_FILE *, long offset, _whence_t);
|
||||
extern long __ftell (_FILE *);
|
||||
extern void __rewind (_FILE *);
|
||||
extern size_t __fread (void *, size_t, size_t, _FILE *);
|
||||
extern size_t __fwrite (const void *, size_t, size_t, _FILE *);
|
||||
extern int __fprintf (_FILE *, const char *, ...);
|
||||
|
||||
#define DBL_MANT_DIG ( 52)
|
||||
#define DBL_DIG ( 10)
|
||||
#define DBL_MANT_DIG (52)
|
||||
#define DBL_DIG (10)
|
||||
#define DBL_MIN_EXP (-324)
|
||||
#define DBL_MAX_EXP ( 308)
|
||||
#define DBL_MAX_EXP (308)
|
||||
#define HUGE_VAL (1e37f)
|
||||
|
||||
#endif /* JERRY_LIBC_H */
|
||||
|
||||
@ -22,11 +22,11 @@
|
||||
* syscall
|
||||
* mov %rax -> ret
|
||||
*/
|
||||
#define SYSCALL_1( syscall_no, arg1, ret) \
|
||||
__asm volatile ( "syscall" \
|
||||
: "=a" ( ret ) \
|
||||
: "a" (syscall_no), "D" (arg1) \
|
||||
: "rcx", "r11" );
|
||||
#define SYSCALL_1(syscall_no, arg1, ret) \
|
||||
__asm volatile ("syscall" \
|
||||
: "=a" (ret) \
|
||||
: "a" (syscall_no), "D" (arg1) \
|
||||
: "rcx", "r11");
|
||||
|
||||
/*
|
||||
* mov syscall_no -> %rax
|
||||
@ -35,11 +35,11 @@
|
||||
* syscall
|
||||
* mov %rax -> ret
|
||||
*/
|
||||
#define SYSCALL_2( syscall_no, arg1, arg2, ret) \
|
||||
__asm volatile ( "syscall" \
|
||||
: "=a" ( ret ) \
|
||||
: "a" (syscall_no), "D" (arg1), "S" (arg2) \
|
||||
: "rcx", "r11" );
|
||||
#define SYSCALL_2(syscall_no, arg1, arg2, ret) \
|
||||
__asm volatile ("syscall" \
|
||||
: "=a" (ret) \
|
||||
: "a" (syscall_no), "D" (arg1), "S" (arg2) \
|
||||
: "rcx", "r11");
|
||||
|
||||
/*
|
||||
* mov syscall_no -> %rax
|
||||
@ -49,11 +49,11 @@
|
||||
* syscall
|
||||
* mov %rax -> ret
|
||||
*/
|
||||
#define SYSCALL_3( syscall_no, arg1, arg2, arg3, ret) \
|
||||
__asm volatile ( "syscall" \
|
||||
: "=a" ( ret ) \
|
||||
: "a" (syscall_no), "D" (arg1), "S" (arg2), "d" (arg3) \
|
||||
: "rcx", "r11" );
|
||||
#define SYSCALL_3(syscall_no, arg1, arg2, arg3, ret) \
|
||||
__asm volatile ("syscall" \
|
||||
: "=a" (ret) \
|
||||
: "a" (syscall_no), "D" (arg1), "S" (arg2), "d" (arg3) \
|
||||
: "rcx", "r11");
|
||||
|
||||
#define _START \
|
||||
mov (%rsp), %rdi; \
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
#ifndef LINUX_X86_ASM_H
|
||||
#define LINUX_X86_ASM_H
|
||||
|
||||
FIXME( Implement x86 ABI );
|
||||
FIXME(Implement x86 ABI);
|
||||
#error "Not implemented"
|
||||
|
||||
/*
|
||||
@ -25,11 +25,11 @@ FIXME( Implement x86 ABI );
|
||||
* syscall
|
||||
* mov %rax -> ret
|
||||
*/
|
||||
#define SYSCALL_1( syscall_no, arg1, ret) \
|
||||
__asm ( "syscall" \
|
||||
: "=a" ( ret ) \
|
||||
#define SYSCALL_1 (syscall_no, arg1, ret) \
|
||||
__asm ("syscall" \
|
||||
: "=a" (ret) \
|
||||
: "a" (syscall_no), "D" (arg1) \
|
||||
: "rcx", "r11" );
|
||||
: "rcx", "r11");
|
||||
|
||||
/*
|
||||
* mov syscall_no -> %rax
|
||||
@ -38,11 +38,11 @@ FIXME( Implement x86 ABI );
|
||||
* syscall
|
||||
* mov %rax -> ret
|
||||
*/
|
||||
#define SYSCALL_2( syscall_no, arg1, arg2, ret) \
|
||||
__asm ( "syscall" \
|
||||
: "=a" ( ret ) \
|
||||
#define SYSCALL_2 (syscall_no, arg1, arg2, ret) \
|
||||
__asm ("syscall" \
|
||||
: "=a" (ret) \
|
||||
: "a" (syscall_no), "D" (arg1), "S" (arg2) \
|
||||
: "rcx", "r11" );
|
||||
: "rcx", "r11");
|
||||
|
||||
/*
|
||||
* mov syscall_no -> %rax
|
||||
@ -52,11 +52,11 @@ FIXME( Implement x86 ABI );
|
||||
* syscall
|
||||
* mov %rax -> ret
|
||||
*/
|
||||
#define SYSCALL_3( syscall_no, arg1, arg2, arg3, ret) \
|
||||
__asm ( "syscall" \
|
||||
: "=a" ( ret ) \
|
||||
#define SYSCALL_3 (syscall_no, arg1, arg2, arg3, ret) \
|
||||
__asm ("syscall" \
|
||||
: "=a" (ret) \
|
||||
: "a" (syscall_no), "D" (arg1), "S" (arg2), "d" (arg3) \
|
||||
: "rcx", "r11" );
|
||||
: "rcx", "r11");
|
||||
|
||||
#define _START \
|
||||
mov (%rsp), %rdi; \
|
||||
|
||||
@ -20,13 +20,13 @@
|
||||
* Handle failed assertion
|
||||
*/
|
||||
void __noreturn
|
||||
jerry_assert_fail(const char *assertion, /**< assertion condition string */
|
||||
const char *file, /**< file name */
|
||||
const uint32_t line) /** line */
|
||||
jerry_assert_fail (const char *assertion, /**< assertion condition string */
|
||||
const char *file, /**< file name */
|
||||
const uint32_t line) /** line */
|
||||
{
|
||||
__printf("Assertion '%s' failed at %s:%u\n",
|
||||
assertion, file, line);
|
||||
__printf ("Assertion '%s' failed at %s:%u\n",
|
||||
assertion, file, line);
|
||||
|
||||
__exit( -ERR_GENERAL);
|
||||
__exit (-ERR_GENERAL);
|
||||
} /* jerry_assert_fail */
|
||||
|
||||
|
||||
@ -26,11 +26,11 @@
|
||||
|
||||
#ifdef __TARGET_HOST_x64
|
||||
# include "asm_x64.h"
|
||||
#elif defined(__TARGET_HOST_x86)
|
||||
#elif defined (__TARGET_HOST_x86)
|
||||
# include "asm_x86.h"
|
||||
#endif /* !__TARGET_HOST_x64 && TARGET_HOST_x86 */
|
||||
|
||||
FIXME( Rename __unused )
|
||||
FIXME(Rename __unused)
|
||||
#undef __unused
|
||||
|
||||
#include <unistd.h>
|
||||
@ -42,15 +42,15 @@ FIXME( Rename __unused )
|
||||
/**
|
||||
* Exit program with ERR_SYSCALL if syscall_ret_val is negative
|
||||
*/
|
||||
#define LIBC_EXIT_ON_ERROR( syscall_ret_val) \
|
||||
if ( unlikely( ( syscall_ret_val ) < 0 ) ) \
|
||||
{ \
|
||||
__exit( -ERR_SYSCALL); \
|
||||
}
|
||||
#define LIBC_EXIT_ON_ERROR(syscall_ret_val) \
|
||||
if (unlikely ((syscall_ret_val) < 0)) \
|
||||
{ \
|
||||
__exit (-ERR_SYSCALL); \
|
||||
}
|
||||
|
||||
static long int syscall_1( long int syscall_no, long int arg1);
|
||||
static long int syscall_2( long int syscall_no, long int arg1, long int arg2);
|
||||
static long int syscall_3( long int syscall_no, long int arg1, long int arg2, long int arg3);
|
||||
static long int syscall_1 (long int syscall_no, long int arg1);
|
||||
static long int syscall_2 (long int syscall_no, long int arg1, long int arg2);
|
||||
static long int syscall_3 (long int syscall_no, long int arg1, long int arg2, long int arg3);
|
||||
|
||||
/**
|
||||
* System call with one argument.
|
||||
@ -58,15 +58,15 @@ static long int syscall_3( long int syscall_no, long int arg1, long int arg2, lo
|
||||
* @return syscall's return value
|
||||
*/
|
||||
static long int
|
||||
syscall_1( long int syscall_no, /**< syscall number */
|
||||
syscall_1 (long int syscall_no, /**< syscall number */
|
||||
long int arg1) /**< argument */
|
||||
{
|
||||
long int ret;
|
||||
|
||||
SYSCALL_1( syscall_no, arg1, ret);
|
||||
SYSCALL_1 (syscall_no, arg1, ret);
|
||||
|
||||
LIBC_EXIT_ON_ERROR(ret);
|
||||
|
||||
LIBC_EXIT_ON_ERROR( ret );
|
||||
|
||||
return ret;
|
||||
} /* syscall_1 */
|
||||
|
||||
@ -76,16 +76,16 @@ syscall_1( long int syscall_no, /**< syscall number */
|
||||
* @return syscall's return value
|
||||
*/
|
||||
static long int
|
||||
syscall_2( long int syscall_no, /**< syscall number */
|
||||
syscall_2 (long int syscall_no, /**< syscall number */
|
||||
long int arg1, /**< first argument */
|
||||
long int arg2) /**< second argument */
|
||||
{
|
||||
long int ret;
|
||||
|
||||
SYSCALL_2( syscall_no, arg1, arg2, ret);
|
||||
SYSCALL_2 (syscall_no, arg1, arg2, ret);
|
||||
|
||||
LIBC_EXIT_ON_ERROR(ret);
|
||||
|
||||
LIBC_EXIT_ON_ERROR( ret );
|
||||
|
||||
return ret;
|
||||
} /* syscall_2 */
|
||||
|
||||
@ -95,17 +95,17 @@ syscall_2( long int syscall_no, /**< syscall number */
|
||||
* @return syscall's return value
|
||||
*/
|
||||
static long int
|
||||
syscall_3( long int syscall_no, /**< syscall number */
|
||||
syscall_3 (long int syscall_no, /**< syscall number */
|
||||
long int arg1, /**< first argument */
|
||||
long int arg2, /**< second argument */
|
||||
long int arg3) /**< third argument */
|
||||
{
|
||||
long int ret;
|
||||
|
||||
SYSCALL_3( syscall_no, arg1, arg2, arg3, ret);
|
||||
SYSCALL_3 (syscall_no, arg1, arg2, arg3, ret);
|
||||
|
||||
LIBC_EXIT_ON_ERROR(ret);
|
||||
|
||||
LIBC_EXIT_ON_ERROR( ret );
|
||||
|
||||
return ret;
|
||||
} /* syscall_3 */
|
||||
|
||||
@ -113,7 +113,7 @@ syscall_3( long int syscall_no, /**< syscall number */
|
||||
int
|
||||
__putchar (int c)
|
||||
{
|
||||
__fwrite( &c, 1, sizeof(char), LIBC_STDOUT);
|
||||
__fwrite (&c, 1, sizeof (char), LIBC_STDOUT);
|
||||
|
||||
return c;
|
||||
} /* __putchar */
|
||||
@ -124,16 +124,16 @@ __putchar (int c)
|
||||
void __noreturn
|
||||
__exit (int status) /**< status code */
|
||||
{
|
||||
syscall_1( __NR_close, (long int)LIBC_STDIN);
|
||||
syscall_1( __NR_close, (long int)LIBC_STDOUT);
|
||||
syscall_1( __NR_close, (long int)LIBC_STDERR);
|
||||
syscall_1 (__NR_close, (long int)LIBC_STDIN);
|
||||
syscall_1 (__NR_close, (long int)LIBC_STDOUT);
|
||||
syscall_1 (__NR_close, (long int)LIBC_STDERR);
|
||||
|
||||
syscall_1( __NR_exit_group, status);
|
||||
syscall_1 (__NR_exit_group, status);
|
||||
|
||||
while ( true )
|
||||
{
|
||||
/* unreachable */
|
||||
}
|
||||
while (true)
|
||||
{
|
||||
/* unreachable */
|
||||
}
|
||||
} /* __exit */
|
||||
|
||||
/**
|
||||
@ -143,88 +143,96 @@ __exit (int status) /**< status code */
|
||||
* NULL - otherwise
|
||||
*/
|
||||
_FILE*
|
||||
__fopen(const char *path, /**< file path */
|
||||
const char *mode) /**< file open mode */
|
||||
__fopen (const char *path, /**< file path */
|
||||
const char *mode) /**< file open mode */
|
||||
{
|
||||
bool may_read = false,
|
||||
may_write = false,
|
||||
truncate = false,
|
||||
create_if_not_exist = false,
|
||||
position_at_end = false;
|
||||
bool may_read = false;
|
||||
bool may_write = false;
|
||||
bool truncate = false;
|
||||
bool create_if_not_exist = false;
|
||||
bool position_at_end = false;
|
||||
|
||||
JERRY_ASSERT( path != NULL && mode != NULL );
|
||||
JERRY_ASSERT( mode[1] == '+' || mode[1] == '\0' );
|
||||
JERRY_ASSERT(path != NULL && mode != NULL);
|
||||
JERRY_ASSERT(mode[1] == '+' || mode[1] == '\0');
|
||||
|
||||
switch( mode[0] )
|
||||
{
|
||||
switch (mode[0])
|
||||
{
|
||||
case 'r':
|
||||
{
|
||||
may_read = true;
|
||||
may_write = (mode[1] == '+');
|
||||
break;
|
||||
}
|
||||
case 'w':
|
||||
{
|
||||
may_write = true;
|
||||
truncate = true;
|
||||
create_if_not_exist = true;
|
||||
may_read = (mode[1] == '+');
|
||||
break;
|
||||
}
|
||||
case 'a':
|
||||
{
|
||||
may_write = true;
|
||||
position_at_end = true;
|
||||
create_if_not_exist = true;
|
||||
if ( mode[1] == '+' )
|
||||
{
|
||||
JERRY_UNIMPLEMENTED();
|
||||
}
|
||||
if (mode[1] == '+')
|
||||
{
|
||||
JERRY_UNIMPLEMENTED();
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
JERRY_UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
int flags = 0;
|
||||
int access = S_IRUSR | S_IWUSR;
|
||||
if ( may_read && !may_write )
|
||||
{
|
||||
flags = O_RDONLY;
|
||||
}
|
||||
else if ( !may_read && may_write )
|
||||
{
|
||||
flags = O_WRONLY;
|
||||
}
|
||||
if (may_read && !may_write)
|
||||
{
|
||||
flags = O_RDONLY;
|
||||
}
|
||||
else if (!may_read && may_write)
|
||||
{
|
||||
flags = O_WRONLY;
|
||||
}
|
||||
else
|
||||
{
|
||||
JERRY_ASSERT( may_read && may_write );
|
||||
{
|
||||
JERRY_ASSERT(may_read && may_write);
|
||||
|
||||
flags = O_RDWR;
|
||||
}
|
||||
flags = O_RDWR;
|
||||
}
|
||||
|
||||
if ( truncate )
|
||||
{
|
||||
flags |= O_TRUNC;
|
||||
}
|
||||
if (truncate)
|
||||
{
|
||||
flags |= O_TRUNC;
|
||||
}
|
||||
|
||||
if ( create_if_not_exist )
|
||||
{
|
||||
flags |= O_CREAT;
|
||||
}
|
||||
if (create_if_not_exist)
|
||||
{
|
||||
flags |= O_CREAT;
|
||||
}
|
||||
|
||||
if ( position_at_end )
|
||||
{
|
||||
flags |= O_APPEND;
|
||||
}
|
||||
if (position_at_end)
|
||||
{
|
||||
flags |= O_APPEND;
|
||||
}
|
||||
|
||||
long int ret = syscall_3( __NR_open, (long int)path, flags, access);
|
||||
long int ret = syscall_3 (__NR_open, (long int) path, flags, access);
|
||||
|
||||
return (void*)(uintptr_t)(ret);
|
||||
return (void*) (uintptr_t) (ret);
|
||||
} /* __fopen */
|
||||
|
||||
/**
|
||||
* The rewind() function sets the file position indicator
|
||||
* The rewind () function sets the file position indicator
|
||||
* for the stream pointed to by STREAM to the beginning of the file.
|
||||
*/
|
||||
void
|
||||
__rewind (_FILE *stream) /**< stream pointer */
|
||||
{
|
||||
syscall_3( __NR_lseek, (long int)stream, 0, SEEK_SET);
|
||||
syscall_3 (__NR_lseek, (long int) stream, 0, SEEK_SET);
|
||||
} /* __rewind */
|
||||
|
||||
/**
|
||||
@ -234,9 +242,9 @@ __rewind (_FILE *stream) /**< stream pointer */
|
||||
* non-zero value - otherwise.
|
||||
*/
|
||||
int
|
||||
__fclose(_FILE *fp) /**< stream pointer */
|
||||
__fclose (_FILE *fp) /**< stream pointer */
|
||||
{
|
||||
syscall_2( __NR_close, (long int)fp, 0);
|
||||
syscall_2 (__NR_close, (long int)fp, 0);
|
||||
|
||||
return 0;
|
||||
} /* __fclose */
|
||||
@ -245,26 +253,32 @@ __fclose(_FILE *fp) /**< stream pointer */
|
||||
* fseek
|
||||
*/
|
||||
int
|
||||
__fseek(_FILE * fp, /**< stream pointer */
|
||||
long offset, /**< offset */
|
||||
_whence_t whence) /**< specifies position type
|
||||
to add offset to */
|
||||
__fseek (_FILE * fp, /**< stream pointer */
|
||||
long offset, /**< offset */
|
||||
_whence_t whence) /**< specifies position type
|
||||
to add offset to */
|
||||
{
|
||||
int whence_real = SEEK_CUR;
|
||||
switch ( whence )
|
||||
switch (whence)
|
||||
{
|
||||
case __SEEK_SET:
|
||||
{
|
||||
whence_real = SEEK_SET;
|
||||
break;
|
||||
}
|
||||
case __SEEK_CUR:
|
||||
{
|
||||
whence_real = SEEK_CUR;
|
||||
break;
|
||||
}
|
||||
case __SEEK_END:
|
||||
{
|
||||
whence_real = SEEK_END;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
syscall_3( __NR_lseek, (long int)fp, offset, whence_real);
|
||||
syscall_3 (__NR_lseek, (long int)fp, offset, whence_real);
|
||||
|
||||
return 0;
|
||||
} /* __fseek */
|
||||
@ -273,9 +287,9 @@ __fseek(_FILE * fp, /**< stream pointer */
|
||||
* ftell
|
||||
*/
|
||||
long
|
||||
__ftell(_FILE * fp) /**< stream pointer */
|
||||
__ftell (_FILE * fp) /**< stream pointer */
|
||||
{
|
||||
long int ret = syscall_3( __NR_lseek, (long int)fp, 0, SEEK_CUR);
|
||||
long int ret = syscall_3 (__NR_lseek, (long int)fp, 0, SEEK_CUR);
|
||||
|
||||
return ret;
|
||||
} /* __ftell */
|
||||
@ -286,20 +300,24 @@ __ftell(_FILE * fp) /**< stream pointer */
|
||||
* @return number of bytes read
|
||||
*/
|
||||
size_t
|
||||
__fread(void *ptr, /**< address of buffer to read to */
|
||||
size_t size, /**< size of elements to read */
|
||||
size_t nmemb, /**< number of elements to read */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
__fread (void *ptr, /**< address of buffer to read to */
|
||||
size_t size, /**< size of elements to read */
|
||||
size_t nmemb, /**< number of elements to read */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
{
|
||||
long int ret;
|
||||
size_t bytes_read = 0;
|
||||
|
||||
do
|
||||
{
|
||||
ret = syscall_3( __NR_read, (long int)stream, (long int) ((uint8_t*)ptr + bytes_read), (long int) (size * nmemb - bytes_read));
|
||||
{
|
||||
ret = syscall_3 (__NR_read,
|
||||
(long int) stream,
|
||||
(long int) ((uint8_t*) ptr + bytes_read),
|
||||
(long int) (size * nmemb - bytes_read));
|
||||
|
||||
bytes_read += (size_t)ret;
|
||||
} while (bytes_read != size * nmemb && ret != 0);
|
||||
bytes_read += (size_t)ret;
|
||||
}
|
||||
while (bytes_read != size * nmemb && ret != 0);
|
||||
|
||||
return bytes_read;
|
||||
} /* __fread */
|
||||
@ -310,24 +328,28 @@ __fread(void *ptr, /**< address of buffer to read to */
|
||||
* @return number of bytes written
|
||||
*/
|
||||
size_t
|
||||
__fwrite(const void *ptr, /**< data to write */
|
||||
size_t size, /**< size of elements to write */
|
||||
size_t nmemb, /**< number of elements */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
__fwrite (const void *ptr, /**< data to write */
|
||||
size_t size, /**< size of elements to write */
|
||||
size_t nmemb, /**< number of elements */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
{
|
||||
size_t bytes_written = 0;
|
||||
|
||||
do
|
||||
{
|
||||
long int ret = syscall_3( __NR_write, (long int)stream, (long int) ((uint8_t*)ptr + bytes_written), (long int) (size * nmemb - bytes_written));
|
||||
{
|
||||
long int ret = syscall_3 (__NR_write,
|
||||
(long int) stream,
|
||||
(long int) ((uint8_t*) ptr + bytes_written),
|
||||
(long int) (size * nmemb - bytes_written));
|
||||
|
||||
bytes_written += (size_t)ret;
|
||||
} while (bytes_written != size * nmemb);
|
||||
bytes_written += (size_t)ret;
|
||||
}
|
||||
while (bytes_written != size * nmemb);
|
||||
|
||||
return bytes_written;
|
||||
} /* __fwrite */
|
||||
|
||||
#elif defined(LIBC_MUSL)
|
||||
#elif defined (LIBC_MUSL)
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -340,14 +362,14 @@ const _FILE **libc_stderr = (void*)&stderr;
|
||||
int
|
||||
__putchar (int c)
|
||||
{
|
||||
return putchar( c);
|
||||
return putchar (c);
|
||||
} /* __putchar */
|
||||
|
||||
/** exit - cause normal process termination */
|
||||
void __noreturn
|
||||
__exit (int status)
|
||||
{
|
||||
exit( status);
|
||||
exit (status);
|
||||
} /* __exit */
|
||||
|
||||
/**
|
||||
@ -357,14 +379,14 @@ __exit (int status)
|
||||
* NULL - otherwise
|
||||
*/
|
||||
_FILE*
|
||||
__fopen(const char *path, /**< file path */
|
||||
const char *mode) /**< file open mode */
|
||||
__fopen (const char *path, /**< file path */
|
||||
const char *mode) /**< file open mode */
|
||||
{
|
||||
return fopen( path, mode);
|
||||
return fopen (path, mode);
|
||||
} /* __fopen */
|
||||
|
||||
/** The rewind() function sets the file position
|
||||
indicator for the stream pointed to by STREAM to the beginning of the file. */
|
||||
/** The rewind () function sets the file position
|
||||
indicator for the stream pointed to by STREAM to the beginning of the file. */
|
||||
void
|
||||
__rewind (_FILE *stream)
|
||||
{
|
||||
@ -378,44 +400,50 @@ __rewind (_FILE *stream)
|
||||
* non-zero value - otherwise.
|
||||
*/
|
||||
int
|
||||
__fclose(_FILE *fp) /**< stream pointer */
|
||||
__fclose (_FILE *fp) /**< stream pointer */
|
||||
{
|
||||
return fclose( fp);
|
||||
return fclose (fp);
|
||||
} /* __fclose */
|
||||
|
||||
/**
|
||||
* fseek
|
||||
*/
|
||||
int
|
||||
__fseek(_FILE * fp, /**< stream pointer */
|
||||
long offset, /**< offset */
|
||||
_whence_t whence) /**< specifies position type
|
||||
to add offset to */
|
||||
__fseek (_FILE * fp, /**< stream pointer */
|
||||
long offset, /**< offset */
|
||||
_whence_t whence) /**< specifies position type
|
||||
to add offset to */
|
||||
{
|
||||
int whence_real = SEEK_CUR;
|
||||
switch ( whence )
|
||||
switch (whence)
|
||||
{
|
||||
case __SEEK_SET:
|
||||
{
|
||||
whence_real = SEEK_SET;
|
||||
break;
|
||||
}
|
||||
case __SEEK_CUR:
|
||||
{
|
||||
whence_real = SEEK_CUR;
|
||||
break;
|
||||
}
|
||||
case __SEEK_END:
|
||||
{
|
||||
whence_real = SEEK_END;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return fseek( fp, offset, whence_real);
|
||||
return fseek (fp, offset, whence_real);
|
||||
} /* __fseek */
|
||||
|
||||
/**
|
||||
* ftell
|
||||
*/
|
||||
long
|
||||
__ftell(_FILE * fp) /**< stream pointer */
|
||||
__ftell (_FILE * fp) /**< stream pointer */
|
||||
{
|
||||
return ftell( fp);
|
||||
return ftell (fp);
|
||||
} /* __ftell */
|
||||
|
||||
/**
|
||||
@ -424,12 +452,12 @@ __ftell(_FILE * fp) /**< stream pointer */
|
||||
* @return number of bytes read
|
||||
*/
|
||||
size_t
|
||||
__fread(void *ptr, /**< address of buffer to read to */
|
||||
size_t size, /**< size of elements to read */
|
||||
size_t nmemb, /**< number of elements to read */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
__fread (void *ptr, /**< address of buffer to read to */
|
||||
size_t size, /**< size of elements to read */
|
||||
size_t nmemb, /**< number of elements to read */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
{
|
||||
return fread(ptr, size, nmemb, stream);
|
||||
return fread (ptr, size, nmemb, stream);
|
||||
} /* __fread */
|
||||
|
||||
/**
|
||||
@ -438,12 +466,12 @@ __fread(void *ptr, /**< address of buffer to read to */
|
||||
* @return number of bytes written
|
||||
*/
|
||||
size_t
|
||||
__fwrite(const void *ptr, /**< data to write */
|
||||
size_t size, /**< size of elements to write */
|
||||
size_t nmemb, /**< number of elements */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
__fwrite (const void *ptr, /**< data to write */
|
||||
size_t size, /**< size of elements to write */
|
||||
size_t nmemb, /**< number of elements */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
{
|
||||
return fwrite(ptr, size, nmemb, stream);
|
||||
return fwrite (ptr, size, nmemb, stream);
|
||||
} /* __fwrite */
|
||||
|
||||
#else /* !LIBC_RAW && !LIBC_MUSL */
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#ifdef __TARGET_HOST_x64
|
||||
# include "asm_x64.h"
|
||||
#elif defined(__TARGET_HOST_x86)
|
||||
#elif defined (__TARGET_HOST_x86)
|
||||
# include "asm_x86.h"
|
||||
#else /* !__HOST && !__TARGET_HOST_x86 */
|
||||
# error "!__HOST && !__TARGET_HOST_x86"
|
||||
|
||||
@ -20,9 +20,9 @@
|
||||
* Handle failed assertion
|
||||
*/
|
||||
void __noreturn
|
||||
jerry_assert_fail(const char *assertion __unused, /**< assertion condition string */
|
||||
jerry_assert_fail (const char *assertion __unused, /**< assertion condition string */
|
||||
const char *file __unused, /**< file name */
|
||||
const uint32_t line __unused) /** line */
|
||||
{
|
||||
__exit( -ERR_GENERAL);
|
||||
__exit (-ERR_GENERAL);
|
||||
} /* jerry_assert_fail */
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
extern void __noreturn exit(int status);
|
||||
extern void __noreturn exit (int status);
|
||||
|
||||
/** Output of character. Writes the character c, cast to an unsigned char, to stdout. */
|
||||
int
|
||||
@ -38,7 +38,7 @@ __exit (int status __unused)
|
||||
* TODO: Blink LEDs? status -> binary -> LEDs?
|
||||
*/
|
||||
|
||||
while(true);
|
||||
while (true);
|
||||
} /* __exit */
|
||||
|
||||
/**
|
||||
@ -47,11 +47,11 @@ __exit (int status __unused)
|
||||
* @return number of bytes written
|
||||
*/
|
||||
size_t
|
||||
__fwrite(const void *ptr, /**< data to write */
|
||||
__fwrite (const void *ptr, /**< data to write */
|
||||
size_t size, /**< size of elements to write */
|
||||
size_t nmemb, /**< number of elements */
|
||||
_FILE *stream) /**< stream pointer */
|
||||
{
|
||||
JERRY_UNIMPLEMENTED_REF_UNUSED_VARS( ptr, size, nmemb, stream);
|
||||
JERRY_UNIMPLEMENTED_REF_UNUSED_VARS(ptr, size, nmemb, stream);
|
||||
} /* __fwrite */
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user