Somewhat working
This commit is contained in:
29
efi-port/core/compat/math.h
Normal file
29
efi-port/core/compat/math.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#ifndef COMPAT_MATH_H
|
||||||
|
#define COMPAT_MATH_H
|
||||||
|
|
||||||
|
#define HUGE_VAL (__builtin_huge_val())
|
||||||
|
#define NAN (__builtin_nan(""))
|
||||||
|
#define INFINITY (__builtin_inf())
|
||||||
|
|
||||||
|
double fabs(double x);
|
||||||
|
double floor(double x);
|
||||||
|
double ceil(double x);
|
||||||
|
double fmod(double x, double y);
|
||||||
|
double pow(double x, double y);
|
||||||
|
double sqrt(double x);
|
||||||
|
double sin(double x);
|
||||||
|
double cos(double x);
|
||||||
|
double tan(double x);
|
||||||
|
double asin(double x);
|
||||||
|
double acos(double x);
|
||||||
|
double atan(double x);
|
||||||
|
double atan2(double y, double x);
|
||||||
|
double exp(double x);
|
||||||
|
double log(double x);
|
||||||
|
double log10(double x);
|
||||||
|
double cbrt(double x);
|
||||||
|
double log2(double x);
|
||||||
|
double trunc(double x);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
9
efi-port/core/compat/setjmp.h
Normal file
9
efi-port/core/compat/setjmp.h
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef COMPAT_SETJMP_H
|
||||||
|
#define COMPAT_SETJMP_H
|
||||||
|
|
||||||
|
typedef void *jmp_buf[5];
|
||||||
|
|
||||||
|
#define setjmp(env) __builtin_setjmp(env)
|
||||||
|
#define longjmp(env, val) __builtin_longjmp(env, val)
|
||||||
|
|
||||||
|
#endif
|
||||||
14
efi-port/core/compat/stdarg.h
Normal file
14
efi-port/core/compat/stdarg.h
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#ifndef COMPAT_STDARG_H
|
||||||
|
#define COMPAT_STDARG_H
|
||||||
|
|
||||||
|
#ifndef MDE_CPU_X64
|
||||||
|
#define MDE_CPU_X64
|
||||||
|
#endif
|
||||||
|
#include <Base.h>
|
||||||
|
#include_next <stdarg.h>
|
||||||
|
|
||||||
|
#ifndef va_copy
|
||||||
|
#define va_copy(dest, src) VA_COPY(dest, src)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
31
efi-port/core/compat/stdint.h
Normal file
31
efi-port/core/compat/stdint.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#ifndef COMPAT_STDINT_H
|
||||||
|
#define COMPAT_STDINT_H
|
||||||
|
|
||||||
|
#ifndef MDE_CPU_X64
|
||||||
|
#define MDE_CPU_X64
|
||||||
|
#endif
|
||||||
|
#include <Base.h>
|
||||||
|
#include_next <stdint.h>
|
||||||
|
|
||||||
|
typedef int8_t int_least8_t;
|
||||||
|
typedef uint8_t uint_least8_t;
|
||||||
|
typedef int16_t int_least16_t;
|
||||||
|
typedef uint16_t uint_least16_t;
|
||||||
|
typedef int32_t int_least32_t;
|
||||||
|
typedef uint32_t uint_least32_t;
|
||||||
|
typedef int64_t int_least64_t;
|
||||||
|
typedef uint64_t uint_least64_t;
|
||||||
|
|
||||||
|
typedef int8_t int_fast8_t;
|
||||||
|
typedef uint8_t uint_fast8_t;
|
||||||
|
typedef int16_t int_fast16_t;
|
||||||
|
typedef uint16_t uint_fast16_t;
|
||||||
|
typedef int32_t int_fast32_t;
|
||||||
|
typedef uint32_t uint_fast32_t;
|
||||||
|
typedef int64_t int_fast64_t;
|
||||||
|
typedef uint64_t uint_fast64_t;
|
||||||
|
|
||||||
|
typedef int64_t intmax_t;
|
||||||
|
typedef uint64_t uintmax_t;
|
||||||
|
|
||||||
|
#endif
|
||||||
14
efi-port/core/compat/stdio.h
Normal file
14
efi-port/core/compat/stdio.h
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#ifndef COMPAT_STDIO_H
|
||||||
|
#define COMPAT_STDIO_H
|
||||||
|
|
||||||
|
#ifndef MDE_CPU_X64
|
||||||
|
#define MDE_CPU_X64
|
||||||
|
#endif
|
||||||
|
#include <Base.h>
|
||||||
|
#include_next <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
|
||||||
|
int snprintf(char *str, size_t size, const char *format, ...);
|
||||||
|
|
||||||
|
#endif
|
||||||
13
efi-port/core/compat/time.h
Normal file
13
efi-port/core/compat/time.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#ifndef COMPAT_TIME_H
|
||||||
|
#define COMPAT_TIME_H
|
||||||
|
|
||||||
|
#ifndef MDE_CPU_X64
|
||||||
|
#define MDE_CPU_X64
|
||||||
|
#endif
|
||||||
|
#include <Base.h>
|
||||||
|
#include_next <time.h>
|
||||||
|
|
||||||
|
double difftime(time_t time1, time_t time0);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
12
efi-port/core/compat/windows.h
Normal file
12
efi-port/core/compat/windows.h
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/* Dummy windows.h for Duktape compatibility in EFI */
|
||||||
|
#ifndef WINDOWS_H
|
||||||
|
#define WINDOWS_H
|
||||||
|
|
||||||
|
#ifndef MDE_CPU_X64
|
||||||
|
#define MDE_CPU_X64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Uefi.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
3256
efi-port/core/lib/duktape/src/duk_config.h
Normal file
3256
efi-port/core/lib/duktape/src/duk_config.h
Normal file
File diff suppressed because it is too large
Load Diff
996
efi-port/core/lib/duktape/src/duk_source_meta.json
Normal file
996
efi-port/core/lib/duktape/src/duk_source_meta.json
Normal file
@@ -0,0 +1,996 @@
|
|||||||
|
{
|
||||||
|
"type": "duk_source_meta",
|
||||||
|
"comment": "Metadata for prepared Duktape sources and configuration",
|
||||||
|
"git_commit": "b5d069a96ba0989c444dad8e6f002a0a057b4df0",
|
||||||
|
"git_branch": "master",
|
||||||
|
"git_describe": "v2.5.0-393-gb5d069a9",
|
||||||
|
"duk_version": 29999,
|
||||||
|
"duk_version_string": "2.99.99",
|
||||||
|
"line_map": [
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 159
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_internal.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 164
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_dblunion.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 201
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_fltunion.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 621
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_replacements.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 661
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_jmpbuf.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 691
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_exception.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 716
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_forwdecl.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 748
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_tval.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 881
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_builtins.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 1582
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_internal.h",
|
||||||
|
"original_line": 45,
|
||||||
|
"combined_line": 3156
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 3158
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_strings.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 3954
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_bytecode.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 4130
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_lexer.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 4604
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_compiler.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 5040
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_regexp.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 5273
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heaphdr.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 5362
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_refcount.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 5848
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_internal.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 6897
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hstring.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 7337
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 7536
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hcompfunc.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 8163
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hnatfunc.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 8423
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hboundfunc.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 8468
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hbufobj.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 8511
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hthread.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 8657
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_harray.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 9075
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_henv.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 9187
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hbuffer.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 9243
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hproxy.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 9591
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 9623
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_debugger.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 10385
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_debug.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 10537
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_error.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 10734
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11456
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_noa.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11640
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 185,
|
||||||
|
"combined_line": 11643
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_noabmp.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11645
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 187,
|
||||||
|
"combined_line": 11648
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_m_let_noa.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11652
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 191,
|
||||||
|
"combined_line": 11655
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_m_let_noabmp.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11657
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 193,
|
||||||
|
"combined_line": 11660
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_idp_m_ids_noa.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11664
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 197,
|
||||||
|
"combined_line": 11667
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_idp_m_ids_noabmp.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11669
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 199,
|
||||||
|
"combined_line": 11672
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_caseconv.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11675
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 202,
|
||||||
|
"combined_line": 11679
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_re_canon_lookup.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11682
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 205,
|
||||||
|
"combined_line": 11685
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_re_canon_bitmap.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11689
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode.h",
|
||||||
|
"original_line": 209,
|
||||||
|
"combined_line": 11695
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_json.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11783
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11852
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_numconv.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 11999
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_protos.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12107
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_selftest.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12185
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop.h",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12201
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_internal.h",
|
||||||
|
"original_line": 77,
|
||||||
|
"combined_line": 12298
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 6,
|
||||||
|
"combined_line": 12300
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_noa.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12317
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 23,
|
||||||
|
"combined_line": 12369
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_noabmp.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12373
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 27,
|
||||||
|
"combined_line": 12403
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_m_let_noa.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12409
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 33,
|
||||||
|
"combined_line": 12413
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_ids_m_let_noabmp.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12417
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 37,
|
||||||
|
"combined_line": 12421
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_idp_m_ids_noa.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12427
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 43,
|
||||||
|
"combined_line": 12457
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_idp_m_ids_noabmp.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12461
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 47,
|
||||||
|
"combined_line": 12480
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_caseconv.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12490
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 57,
|
||||||
|
"combined_line": 12595
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_re_canon_lookup.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 12598
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 60,
|
||||||
|
"combined_line": 18426
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_re_canon_bitmap.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 18430
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_tables.c",
|
||||||
|
"original_line": 64,
|
||||||
|
"combined_line": 18446
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_replacements.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 18447
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_debug_macros.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 18529
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_builtins.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 18621
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_error_macros.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 23804
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_support.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 24000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_memrw.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 25219
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_misc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 25367
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_class.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 25532
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_alloc_default.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 25661
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_buffer.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 25693
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_bytecode.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 25766
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_call.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 26546
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_codec.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 27072
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_compile.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 28010
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_debug.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 28185
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_heap.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 28446
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_inspect.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 28655
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_memory.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 28958
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_object.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 29038
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_random.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 30159
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_readable.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 30169
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_stack.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 30525
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_string.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 37426
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_api_time.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 37817
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_array.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 37927
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_boolean.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 39581
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_buffer.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 39650
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_cbor.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 42576
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_date.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 44504
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_date_unix.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 46402
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_date_windows.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 46750
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_duktape.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 46945
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_encoding.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 47095
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_error.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 47646
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_function.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 48046
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_global.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 48500
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_json.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 49221
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_math.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 52561
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_number.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 53052
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_object.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 53316
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_performance.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54033
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_pointer.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54064
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_promise.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54138
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_proxy.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54182
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_reflect.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54233
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_regexp.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54321
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_string.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 54549
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_symbol.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 56036
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_thread.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 56208
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_bi_thrower.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 56532
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_debug_fixedbuffer.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 56541
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_debug_vsnprintf.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 56610
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_debugger.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 57855
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_error_augment.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 60927
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_error_longjmp.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 61528
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_error_misc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 61635
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_error_throw.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 61813
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hbuffer_alloc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 61972
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hbuffer_assert.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 62106
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hbuffer_ops.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 62119
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hbufobj_misc.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 62197
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_alloc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 62319
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_finalize.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 63595
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_hashstring.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 64044
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_markandsweep.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 64165
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_memory.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 65771
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_misc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 66205
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_refcount.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 66392
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_stringcache.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 67364
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heap_stringtable.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 67865
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_heaphdr_assert.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 69108
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_alloc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 69199
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_array.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 69479
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_assert.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 69758
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_lookup.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 69998
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_misc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 70556
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_pc2line.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 71019
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_props.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 71265
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_proxy.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 71721
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hobject_resize.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 71885
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hstring_assert.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 73228
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hstring_misc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 73250
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hthread_alloc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 73479
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hthread_builtins.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 73538
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hthread_misc.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 74438
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_hthread_stacks.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 74535
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_arith.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 74898
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_call.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 75039
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_compiler.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 77862
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_executor.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 86010
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_ops.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 91409
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_prop.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 92848
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_js_var.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 93095
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_lexer.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 94829
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_numconv.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 97281
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_defown.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 99623
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_delete.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 101144
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_enum.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 102280
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_get.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 102538
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_getown.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 104476
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_has.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 105079
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_ownpropkeys.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 105712
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_set.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 106347
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_prop_util.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 109579
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_regexp_compiler.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 109893
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_regexp_executor.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 111194
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_selftest.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 112187
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_tval.c",
|
||||||
|
"original_line": 2,
|
||||||
|
"combined_line": 112934
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_unicode_wtf8.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 113085
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_bitdecoder.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 114166
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_bitencoder.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 114330
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_bufwriter.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 114373
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_cast.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 114659
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_double.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 114831
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_hashbytes.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 115174
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_memory.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 115236
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"original_file": "duk_util_tinyrandom.c",
|
||||||
|
"original_line": 1,
|
||||||
|
"combined_line": 115272
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
115403
efi-port/core/lib/duktape/src/duktape.c
Normal file
115403
efi-port/core/lib/duktape/src/duktape.c
Normal file
File diff suppressed because it is too large
Load Diff
1469
efi-port/core/lib/duktape/src/duktape.h
Normal file
1469
efi-port/core/lib/duktape/src/duktape.h
Normal file
File diff suppressed because it is too large
Load Diff
319
efi-port/core/src/compat.c
Normal file
319
efi-port/core/src/compat.c
Normal file
@@ -0,0 +1,319 @@
|
|||||||
|
#include <Uefi.h>
|
||||||
|
#include <Library/BaseLib.h>
|
||||||
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/MemoryAllocationLib.h>
|
||||||
|
#include <Library/PrintLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
|
||||||
|
// EDK2 CRT Support Header
|
||||||
|
#include <CrtLibSupport.h>
|
||||||
|
|
||||||
|
// Global variables required by CrtLibSupport.h
|
||||||
|
int errno = 0;
|
||||||
|
FILE *stderr = NULL;
|
||||||
|
|
||||||
|
// Better malloc/free with size tracking
|
||||||
|
typedef struct {
|
||||||
|
size_t size;
|
||||||
|
char data[];
|
||||||
|
} AllocHeader;
|
||||||
|
|
||||||
|
void *my_malloc(size_t size) {
|
||||||
|
AllocHeader *hdr;
|
||||||
|
if (gBS->AllocatePool(EfiLoaderData, size + sizeof(AllocHeader), (void**)&hdr) != EFI_SUCCESS) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
hdr->size = size;
|
||||||
|
return hdr->data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void my_free(void *ptr) {
|
||||||
|
if (ptr) {
|
||||||
|
AllocHeader *hdr = (AllocHeader*)((char*)ptr - sizeof(AllocHeader));
|
||||||
|
gBS->FreePool(hdr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void *my_realloc(void *ptr, size_t size) {
|
||||||
|
if (!ptr) return my_malloc(size);
|
||||||
|
if (size == 0) {
|
||||||
|
my_free(ptr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
AllocHeader *old_hdr = (AllocHeader*)((char*)ptr - sizeof(AllocHeader));
|
||||||
|
size_t old_size = old_hdr->size;
|
||||||
|
|
||||||
|
void *new_ptr = my_malloc(size);
|
||||||
|
if (!new_ptr) return NULL;
|
||||||
|
|
||||||
|
CopyMem(new_ptr, ptr, old_size < size ? old_size : size);
|
||||||
|
my_free(ptr);
|
||||||
|
return new_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Redirect standard malloc/free/realloc to our versions
|
||||||
|
#undef malloc
|
||||||
|
#undef free
|
||||||
|
#undef realloc
|
||||||
|
|
||||||
|
void *malloc(size_t size) { return my_malloc(size); }
|
||||||
|
void free(void *ptr) { my_free(ptr); }
|
||||||
|
void *realloc(void *ptr, size_t size) { return my_realloc(ptr, size); }
|
||||||
|
|
||||||
|
void *calloc(size_t nmemb, size_t size) {
|
||||||
|
size_t total = nmemb * size;
|
||||||
|
void *ptr = malloc(total);
|
||||||
|
if (ptr) {
|
||||||
|
SetMem(ptr, total, 0);
|
||||||
|
}
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IO
|
||||||
|
int printf(const char *format, ...) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int vsnprintf(char *str, size_t size, const char *format, va_list ap) {
|
||||||
|
return (int)AsciiVSPrint(str, size, format, ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
int snprintf(char *str, size_t size, const char *format, ...) {
|
||||||
|
VA_LIST Marker;
|
||||||
|
VA_START(Marker, format);
|
||||||
|
UINTN Return = AsciiVSPrint(str, size, format, Marker);
|
||||||
|
VA_END(Marker);
|
||||||
|
return (int)Return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// sprintf is a macro in CrtLibSupport.h, so we don't define it.
|
||||||
|
|
||||||
|
|
||||||
|
// Math
|
||||||
|
// Duktape needs math. EDK2 doesn't provide standard math lib.
|
||||||
|
// We might need to implement simple versions or pull in a math lib.
|
||||||
|
// For now, stubs.
|
||||||
|
double floor(double x) { return (double)(int)x; } // Very wrong for negative/large
|
||||||
|
double ceil(double x) { return (double)(int)x + 1; }
|
||||||
|
double fabs(double x) { return x < 0 ? -x : x; }
|
||||||
|
double pow(double x, double y) { return 0; } // TODO
|
||||||
|
double sqrt(double x) { return 0; }
|
||||||
|
double sin(double x) { return 0; }
|
||||||
|
double cos(double x) { return 0; }
|
||||||
|
double tan(double x) { return 0; }
|
||||||
|
double asin(double x) { return 0; }
|
||||||
|
double acos(double x) { return 0; }
|
||||||
|
double atan(double x) { return 0; }
|
||||||
|
double atan2(double y, double x) { return 0; }
|
||||||
|
double exp(double x) { return 0; }
|
||||||
|
double log(double x) { return 0; }
|
||||||
|
double log10(double x) { return 0; }
|
||||||
|
double fmod(double x, double y) { return 0; }
|
||||||
|
|
||||||
|
// Other
|
||||||
|
void abort(void) {
|
||||||
|
// CpuDeadLoop();
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void exit(int status) {
|
||||||
|
// CpuDeadLoop();
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Global gBS
|
||||||
|
EFI_BOOT_SERVICES *gBS = NULL;
|
||||||
|
int _fltused = 0;
|
||||||
|
|
||||||
|
// Stack probe (needed for MSVC ABI)
|
||||||
|
void __chkstk(void) { return; }
|
||||||
|
|
||||||
|
// Memory functions
|
||||||
|
#undef memset
|
||||||
|
#undef memcpy
|
||||||
|
#undef memcmp
|
||||||
|
|
||||||
|
void *memset(void *s, int c, size_t n) {
|
||||||
|
unsigned char *p = s;
|
||||||
|
while (n--) {
|
||||||
|
*p++ = (unsigned char)c;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *memcpy(void *dest, const void *src, size_t n) {
|
||||||
|
char *d = dest;
|
||||||
|
const char *s = src;
|
||||||
|
while (n--) {
|
||||||
|
*d++ = *s++;
|
||||||
|
}
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
int memcmp(const void *s1, const void *s2, size_t n) {
|
||||||
|
const unsigned char *p1 = s1, *p2 = s2;
|
||||||
|
while (n--) {
|
||||||
|
if (*p1 != *p2) {
|
||||||
|
return *p1 - *p2;
|
||||||
|
}
|
||||||
|
p1++;
|
||||||
|
p2++;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *SetMem(void *Buffer, UINTN Length, UINT8 Value) {
|
||||||
|
return memset(Buffer, Value, Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *CopyMem(void *Destination, const void *Source, UINTN Length) {
|
||||||
|
return memcpy(Destination, Source, Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
INTN CompareMem(const void *Destination, const void *Source, UINTN Length) {
|
||||||
|
return (INTN)memcmp(Destination, Source, Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
// String functions
|
||||||
|
UINTN AsciiStrnLenS(const CHAR8 *String, UINTN MaxSize) {
|
||||||
|
UINTN len = 0;
|
||||||
|
while (len < MaxSize && String[len] != 0) {
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
INTN AsciiStrnCmp(const CHAR8 *FirstString, const CHAR8 *SecondString, UINTN Length) {
|
||||||
|
if (Length == 0) return 0;
|
||||||
|
while (Length > 0 && *FirstString && *SecondString) {
|
||||||
|
if (*FirstString != *SecondString) break;
|
||||||
|
FirstString++;
|
||||||
|
SecondString++;
|
||||||
|
Length--;
|
||||||
|
}
|
||||||
|
if (Length == 0) return 0;
|
||||||
|
return *FirstString - *SecondString;
|
||||||
|
}
|
||||||
|
|
||||||
|
int strcmp(const char *s1, const char *s2) {
|
||||||
|
while (*s1 && (*s1 == *s2)) {
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
}
|
||||||
|
return *(const unsigned char *)s1 - *(const unsigned char *)s2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print functions
|
||||||
|
// Minimal vsnprintf implementation
|
||||||
|
#include <stdarg.h>
|
||||||
|
static void simple_append(char **str, size_t *size, char c) {
|
||||||
|
if (*size > 1) {
|
||||||
|
**str = c;
|
||||||
|
(*str)++;
|
||||||
|
(*size)--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void simple_append_str(char **str, size_t *size, const char *s) {
|
||||||
|
while (*s) {
|
||||||
|
simple_append(str, size, *s++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void simple_append_hex(char **str, size_t *size, UINT64 num) {
|
||||||
|
char buf[17];
|
||||||
|
const char *digits = "0123456789ABCDEF";
|
||||||
|
int i = 0;
|
||||||
|
if (num == 0) {
|
||||||
|
simple_append(str, size, '0');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (num > 0) {
|
||||||
|
buf[i++] = digits[num % 16];
|
||||||
|
num /= 16;
|
||||||
|
}
|
||||||
|
while (i > 0) {
|
||||||
|
simple_append(str, size, buf[--i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void simple_append_dec(char **str, size_t *size, INT64 num) {
|
||||||
|
char buf[21];
|
||||||
|
int i = 0;
|
||||||
|
int neg = 0;
|
||||||
|
if (num < 0) {
|
||||||
|
neg = 1;
|
||||||
|
num = -num;
|
||||||
|
}
|
||||||
|
if (num == 0) {
|
||||||
|
simple_append(str, size, '0');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (num > 0) {
|
||||||
|
buf[i++] = (num % 10) + '0';
|
||||||
|
num /= 10;
|
||||||
|
}
|
||||||
|
if (neg) simple_append(str, size, '-');
|
||||||
|
while (i > 0) {
|
||||||
|
simple_append(str, size, buf[--i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UINTN AsciiVSPrint(CHAR8 *StartOfBuffer, UINTN BufferSize, CONST CHAR8 *FormatString, VA_LIST Marker) {
|
||||||
|
char *str = StartOfBuffer;
|
||||||
|
size_t size = BufferSize;
|
||||||
|
const char *fmt = FormatString;
|
||||||
|
|
||||||
|
while (*fmt) {
|
||||||
|
if (*fmt == '%') {
|
||||||
|
fmt++;
|
||||||
|
if (*fmt == 's') {
|
||||||
|
char *s = VA_ARG(Marker, char*);
|
||||||
|
simple_append_str(&str, &size, s ? s : "(null)");
|
||||||
|
} else if (*fmt == 'd') {
|
||||||
|
int d = VA_ARG(Marker, int);
|
||||||
|
simple_append_dec(&str, &size, d);
|
||||||
|
} else if (*fmt == 'x' || *fmt == 'X') {
|
||||||
|
unsigned int x = VA_ARG(Marker, unsigned int);
|
||||||
|
simple_append_hex(&str, &size, x);
|
||||||
|
} else if (*fmt == 'p') {
|
||||||
|
void *p = VA_ARG(Marker, void*);
|
||||||
|
simple_append_hex(&str, &size, (UINT64)p);
|
||||||
|
} else if (*fmt == '%') {
|
||||||
|
simple_append(&str, &size, '%');
|
||||||
|
} else {
|
||||||
|
simple_append(&str, &size, '%');
|
||||||
|
simple_append(&str, &size, *fmt);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
simple_append(&str, &size, *fmt);
|
||||||
|
}
|
||||||
|
fmt++;
|
||||||
|
}
|
||||||
|
*str = 0;
|
||||||
|
return (UINTN)(str - StartOfBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
UINTN AsciiSPrint(CHAR8 *StartOfBuffer, UINTN BufferSize, CONST CHAR8 *FormatString, ...) {
|
||||||
|
VA_LIST Marker;
|
||||||
|
VA_START(Marker, FormatString);
|
||||||
|
UINTN ret = AsciiVSPrint(StartOfBuffer, BufferSize, FormatString, Marker);
|
||||||
|
VA_END(Marker);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Time functions
|
||||||
|
struct tm *gmtime(const time_t *timep) { return NULL; }
|
||||||
|
time_t mktime(struct tm *tm) { return 0; }
|
||||||
|
int sscanf(const char *str, const char *format, ...) { return 0; }
|
||||||
|
|
||||||
|
time_t time(time_t *tloc) { return 0; }
|
||||||
|
double difftime(time_t time1, time_t time0) { return (double)(time1 - time0); }
|
||||||
|
double cbrt(double x) { return 0; }
|
||||||
|
double log2(double x) { return 0; }
|
||||||
|
double trunc(double x) { return (double)(int)x; }
|
||||||
|
|
||||||
|
|
||||||
|
// Needed for CrtLibSupport headers to work?
|
||||||
|
// They use VA_LIST etc which are in Base.h
|
||||||
@@ -1,6 +1,12 @@
|
|||||||
#include "efi.h"
|
#include "efi.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
int efi_main(void *imageHandle, EfiSystemTable* systemTable) {
|
extern EFI_BOOT_SERVICES *gBS;
|
||||||
return kernel_main(systemTable);
|
|
||||||
|
EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {
|
||||||
|
gBS = SystemTable->BootServices;
|
||||||
|
|
||||||
|
// Initialize standard library (if needed)
|
||||||
|
// ...
|
||||||
|
return kernel_main(SystemTable);
|
||||||
}
|
}
|
||||||
@@ -1,50 +1,13 @@
|
|||||||
#ifndef EFI_H
|
#ifndef EFI_H
|
||||||
#define EFI_H
|
#define EFI_H
|
||||||
|
|
||||||
#include <stdint.h>
|
#ifndef MDE_CPU_X64
|
||||||
|
#define MDE_CPU_X64
|
||||||
|
#endif
|
||||||
|
|
||||||
// Taken from: https://github.com/AndreVallestero/minimal-efi/blob/master/main.c
|
#include <Uefi.h>
|
||||||
typedef struct EfiTableHeader {
|
|
||||||
uint64_t signature;
|
|
||||||
uint32_t revision;
|
|
||||||
uint32_t headerSize;
|
|
||||||
uint32_t crc32;
|
|
||||||
uint32_t reserved;
|
|
||||||
} EfiTableHeader;
|
|
||||||
|
|
||||||
struct EfiSimpleTextOutputProtocol;
|
// Map legacy names if needed, or update main.c
|
||||||
typedef uint64_t (__attribute__((ms_abi)) *EfiTextReset)(struct EfiSimpleTextOutputProtocol* this, uint8_t ExtendedVerification);
|
typedef EFI_SYSTEM_TABLE EfiSystemTable;
|
||||||
typedef uint64_t (__attribute__((ms_abi)) *EfiTextString)(struct EfiSimpleTextOutputProtocol* this, uint16_t* string);
|
|
||||||
typedef uint64_t (__attribute__((ms_abi)) *EfiTextSetAttribute)(struct EfiSimpleTextOutputProtocol* this, uint64_t Attribute);
|
|
||||||
typedef uint64_t (__attribute__((ms_abi)) *EfiTextClearScreen)(struct EfiSimpleTextOutputProtocol* this);
|
|
||||||
|
|
||||||
typedef struct EfiSimpleTextOutputProtocol {
|
|
||||||
EfiTextReset reset;
|
|
||||||
EfiTextString output_string;
|
|
||||||
uint64_t test_string;
|
|
||||||
uint64_t query_mode;
|
|
||||||
uint64_t set_mode;
|
|
||||||
EfiTextSetAttribute set_attribute;
|
|
||||||
EfiTextClearScreen clear_screen;
|
|
||||||
uint64_t set_cursor_position;
|
|
||||||
uint64_t enable_cursor;
|
|
||||||
uint64_t mode;
|
|
||||||
} EfiSimpleTextOutputProtocol;
|
|
||||||
|
|
||||||
typedef struct EfiSystemTable {
|
|
||||||
EfiTableHeader hdr;
|
|
||||||
uint16_t* firmwareVendor;
|
|
||||||
uint32_t firmwareRevision;
|
|
||||||
void* consoleInHandle;
|
|
||||||
uint64_t conIn;
|
|
||||||
void* consoleOutHandle;
|
|
||||||
EfiSimpleTextOutputProtocol* conOut;
|
|
||||||
void* standardErrorHandle;
|
|
||||||
uint64_t stdErr;
|
|
||||||
uint64_t runtimeServices;
|
|
||||||
uint64_t bootServices;
|
|
||||||
uint64_t numberOfTableEntries;
|
|
||||||
uint64_t configurationTable;
|
|
||||||
} EfiSystemTable;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,13 +1,55 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "efi.h"
|
#include "efi.h"
|
||||||
|
#include "duktape.h"
|
||||||
|
|
||||||
|
duk_context *ctx;
|
||||||
|
EFI_SYSTEM_TABLE* systemTable;
|
||||||
|
|
||||||
void halt() {
|
void halt() {
|
||||||
for (;;) {}
|
for (;;) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
int kernel_main(EfiSystemTable* systemTable) {
|
void ascii_to_utf16(const char *ascii, CHAR16 *utf16) {
|
||||||
systemTable->conOut->clear_screen(systemTable->conOut);
|
while (*ascii) {
|
||||||
systemTable->conOut->output_string(systemTable->conOut, L"Hello, World!\n");
|
*utf16++ = (CHAR16)*ascii++;
|
||||||
|
}
|
||||||
|
*utf16 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
duk_ret_t native_log(duk_context *ctx) {
|
||||||
|
CHAR16 buffer[256];
|
||||||
|
ascii_to_utf16(duk_safe_to_string(ctx, 0), buffer);
|
||||||
|
systemTable->ConOut->OutputString(systemTable->ConOut, buffer);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int kernel_main(EFI_SYSTEM_TABLE *st) {
|
||||||
|
systemTable = st;
|
||||||
|
ctx = duk_create_heap_default();
|
||||||
|
|
||||||
|
duk_push_c_function(ctx, native_log, 1);
|
||||||
|
duk_put_global_string(ctx, "$log");
|
||||||
|
|
||||||
|
duk_push_object(ctx);
|
||||||
|
|
||||||
|
duk_push_pointer(ctx, (void *)st);
|
||||||
|
duk_put_prop_string(ctx, -2, "st");
|
||||||
|
|
||||||
|
duk_put_global_string(ctx, "$st");
|
||||||
|
|
||||||
|
duk_push_string(ctx, "$log($st.st.ConOut)");
|
||||||
|
duk_int_t returnCode = duk_peval(ctx);
|
||||||
|
|
||||||
|
if (returnCode != 0)
|
||||||
|
{
|
||||||
|
duk_safe_to_stacktrace(ctx, -1);
|
||||||
|
CHAR16 buffer[256];
|
||||||
|
ascii_to_utf16(duk_safe_to_string(ctx, -1), buffer);
|
||||||
|
systemTable->ConOut->OutputString(systemTable->ConOut, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
duk_pop(ctx);
|
||||||
|
|
||||||
halt();
|
halt();
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
#ifndef MAIN_H
|
#ifndef MAIN_H
|
||||||
#define MAIN_H
|
#define MAIN_H
|
||||||
|
|
||||||
int kernel_main(EfiSystemTable* systemTable);
|
int kernel_main(EFI_SYSTEM_TABLE* systemTable);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
1
efi-port/edk2
Submodule
1
efi-port/edk2
Submodule
Submodule efi-port/edk2 added at aacfbe667e
@@ -1,9 +1,11 @@
|
|||||||
mkdir -p out
|
mkdir -p out
|
||||||
mkdir -p out/core
|
mkdir -p out/core
|
||||||
mkdir -p out/img/EFI/BOOT
|
mkdir -p out/img/EFI/BOOT
|
||||||
|
mkdir -p out/lib
|
||||||
|
|
||||||
|
clang -target x86_64-pc-win32-coff -fno-stack-protector -fshort-wchar -mno-red-zone -Iedk2/MdePkg/Include -Iedk2/MdePkg/Include/X64 -c core/src/efi.c -o out/core/efi.o
|
||||||
|
clang -target x86_64-pc-win32-coff -fno-stack-protector -fshort-wchar -mno-red-zone -Icore/compat -Icore/lib/duktape/src -Iedk2/MdePkg/Include -Iedk2/MdePkg/Include/X64 -Iedk2/CryptoPkg/Library/Include -c core/src/main.c -o out/core/main.o
|
||||||
|
clang -target x86_64-pc-win32-coff -fno-stack-protector -fshort-wchar -mno-red-zone -DDUK_F_GENERIC -U_WIN32 -UWIN32 -U_WIN64 -UWIN64 -Icore/compat -Iedk2/MdePkg/Include -Iedk2/MdePkg/Include/X64 -Iedk2/CryptoPkg/Library/Include -c core/lib/duktape/src/duktape.c -o out/lib/duktape.o
|
||||||
|
clang -target x86_64-pc-win32-coff -fno-stack-protector -fshort-wchar -mno-red-zone -Icore/compat -Iedk2/MdePkg/Include -Iedk2/MdePkg/Include/X64 -Iedk2/CryptoPkg/Library/Include -c core/src/compat.c -o out/core/compat.o
|
||||||
|
|
||||||
clang -target x86_64-pc-win32-coff -fno-stack-protector -fshort-wchar -mno-red-zone -c core/src/efi.c -o out/core/efi.o
|
lld-link -filealign:16 -subsystem:efi_application -nodefaultlib -dll -entry:efi_main out/core/main.o out/core/efi.o out/lib/duktape.o out/core/compat.o -out:out/img/EFI/BOOT/BOOTX64.EFI
|
||||||
clang -target x86_64-pc-win32-coff -fno-stack-protector -fshort-wchar -mno-red-zone -c core/src/main.c -o out/core/main.o
|
|
||||||
|
|
||||||
lld-link -filealign:16 -subsystem:efi_application -nodefaultlib -dll -entry:efi_main out/core/main.o out/core/efi.o -out:out/img/EFI/BOOT/BOOTX64.EFI
|
|
||||||
|
|||||||
@@ -16,4 +16,4 @@ mdir -i out/fat.img -/ ::
|
|||||||
# Create the ISO
|
# Create the ISO
|
||||||
# -e specifies the boot image (the FAT image)
|
# -e specifies the boot image (the FAT image)
|
||||||
# -no-emul-boot is required for UEFI
|
# -no-emul-boot is required for UEFI
|
||||||
xorriso -as mkisofs -R -f -e /fat.img -no-emul-boot -o out/lints.iso out/img out/fat.img
|
xorriso -as mkisofs -R -f -e /fat.img -no-emul-boot -volid LintsEFI -o out/lints.iso out/img out/fat.img
|
||||||
Reference in New Issue
Block a user