bsp,am,integrate-am-apps: fix linking error for microbench
* do not change the name of symbol in libraries * run microbench, but trigger segmentation fault
This commit is contained in:
parent
839ab63edf
commit
f08882db2c
1 changed files with 24 additions and 5 deletions
|
@ -5,12 +5,21 @@ from pathlib import Path
|
||||||
|
|
||||||
AM_HOME = Path(os.environ["AM_HOME"])
|
AM_HOME = Path(os.environ["AM_HOME"])
|
||||||
AM_KERNELS_HOME = (AM_HOME / ".." / "am-kernels").resolve()
|
AM_KERNELS_HOME = (AM_HOME / ".." / "am-kernels").resolve()
|
||||||
app_dir_list = AM_KERNELS_HOME / "kernels" / "hello"
|
|
||||||
ARCH = "native"
|
ARCH = "native"
|
||||||
Path("build").mkdir(exist_ok=True)
|
Path("build").mkdir(exist_ok=True)
|
||||||
am_app_mk_fp = open("am-apps.mk", "w")
|
am_app_mk_fp = open("am-apps.mk", "w")
|
||||||
am_app_c_fp = open("build/am-apps.c" , "w")
|
am_app_c_fp = open("build/am-apps.c" , "w")
|
||||||
lib_sym = []
|
lib_sym = [
|
||||||
|
"memset", "memcpy", "memmove", "memcmp",
|
||||||
|
"strlen", "strcat", "strcpy", "strncpy", "strcmp", "strncmp",
|
||||||
|
"srand", "rand", "malloc", "free", "abs", "atoi",
|
||||||
|
"printf", "sprintf", "snprintf", "vsprintf", "vsnprintf",
|
||||||
|
]
|
||||||
|
am_init_sym = [ "trm_init", "ioe_init", "cte_init", "vme_init", "mpe_init" ]
|
||||||
|
app_dir_list = [
|
||||||
|
AM_KERNELS_HOME / "kernels" / "hello",
|
||||||
|
AM_KERNELS_HOME / "benchmarks" / "microbench",
|
||||||
|
]
|
||||||
|
|
||||||
def read_lib_symbols(lib):
|
def read_lib_symbols(lib):
|
||||||
libfile = AM_HOME / lib / "build" / f"{lib}-{ARCH}.a"
|
libfile = AM_HOME / lib / "build" / f"{lib}-{ARCH}.a"
|
||||||
|
@ -31,7 +40,10 @@ def integrate(app_dir):
|
||||||
redefine_sym_file = "redefine_sym.txt"
|
redefine_sym_file = "redefine_sym.txt"
|
||||||
redefine_sym_fp = open(redefine_sym_file, "w")
|
redefine_sym_fp = open(redefine_sym_file, "w")
|
||||||
for f in lib_sym:
|
for f in lib_sym:
|
||||||
redefine_sym_fp.write(f"__am_{app_name}_{f} {f}\n")
|
if f in am_init_sym:
|
||||||
|
redefine_sym_fp.write(f"__am_{app_name}_{f} __dummy_{f}\n")
|
||||||
|
else:
|
||||||
|
redefine_sym_fp.write(f"__am_{app_name}_{f} {f}\n")
|
||||||
redefine_sym_fp.close()
|
redefine_sym_fp.close()
|
||||||
for obj in objs:
|
for obj in objs:
|
||||||
os.system(f"objcopy --prefix-symbols=__am_{app_name}_ {str(obj)}")
|
os.system(f"objcopy --prefix-symbols=__am_{app_name}_ {str(obj)}")
|
||||||
|
@ -48,7 +60,14 @@ read_lib_symbols("am")
|
||||||
read_lib_symbols("klib")
|
read_lib_symbols("klib")
|
||||||
|
|
||||||
am_app_mk_fp.write("SRCS += build/am-apps.c\n")
|
am_app_mk_fp.write("SRCS += build/am-apps.c\n")
|
||||||
am_app_c_fp.write("#include <rtthread.h>\n")
|
am_app_c_fp.write("""#include <am.h>
|
||||||
integrate(app_dir_list)
|
#include <rtthread.h>
|
||||||
|
bool __dummy_ioe_init() { return true; }
|
||||||
|
bool __dummy_cte_init(Context *(*handler)(Event ev, Context *ctx)) { return true; }
|
||||||
|
bool __dummy_vme_init(void *(*pgalloc)(int), void (*pgfree)(void *)) { return true; }
|
||||||
|
bool __dummy_mpe_init(void (*entry)()) { return true; }
|
||||||
|
""")
|
||||||
|
for app in app_dir_list:
|
||||||
|
integrate(app)
|
||||||
am_app_mk_fp.close()
|
am_app_mk_fp.close()
|
||||||
am_app_c_fp.close()
|
am_app_c_fp.close()
|
||||||
|
|
Loading…
Add table
Reference in a new issue