Optimize get_current_target in AOT loader for more archs (#347)

This commit is contained in:
Karl Fessel 2020-08-13 09:13:45 +02:00 committed by GitHub
parent 21efe12505
commit 874cc951c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 22 deletions

View File

@ -27,22 +27,32 @@ get_target_symbol_map(uint32 *sym_num)
return target_sym_map;
}
#define BUILD_TARGET_AARCH64_DEFAULT "aarch64v8"
void
get_current_target(char *target_buf, uint32 target_buf_size)
{
char *build_target = BUILD_TARGET;
char *p = target_buf, *p_end;
snprintf(target_buf, target_buf_size, "%s", build_target);
p_end = p + strlen(target_buf);
while (p < p_end) {
if (*p >= 'A' && *p <= 'Z')
*p++ += 'a' - 'A';
else
p++;
const char * s = BUILD_TARGET;
size_t s_size = sizeof(BUILD_TARGET);
char *d = target_buf;
/* Set to "aarch64v8" by default if sub version isn't specified */
if (strcmp(s, "AARACH64") == 0) {
s = BUILD_TARGET_AARCH64_DEFAULT;
s_size = sizeof(BUILD_TARGET_AARCH64_DEFAULT);
}
if (!strcmp(target_buf, "aarch64"))
snprintf(target_buf, target_buf_size, "aarch64v8");
if(target_buf_size < s_size){
s_size = target_buf_size;
}
while (--s_size) {
if (*s >= 'A' && *s <= 'Z')
*d++ = *s++ + 'a' - 'A';
else
*d++ = *s++ ;
}
/* Ensure the string is null byte ('\0') terminated */
*d = '\0';
}
#undef BUILD_TARGET_AARCH64_DEFAULT
static uint32
get_plt_item_size()

View File

@ -118,22 +118,32 @@ get_target_symbol_map(uint32 *sym_num)
return target_sym_map;
}
#define BUILD_TARGET_ARM_DEFAULT "armv4"
void
get_current_target(char *target_buf, uint32 target_buf_size)
{
char *build_target = BUILD_TARGET;
char *p = target_buf, *p_end;
snprintf(target_buf, target_buf_size, "%s", build_target);
p_end = p + strlen(target_buf);
while (p < p_end) {
if (*p >= 'A' && *p <= 'Z')
*p++ += 'a' - 'A';
else
p++;
const char * s = BUILD_TARGET;
size_t s_size = sizeof(BUILD_TARGET);
char *d = target_buf;
/* Set to "armv4" by default if sub version isn't specified */
if (strcmp(s, "ARM") == 0) {
s = BUILD_TARGET_ARM_DEFAULT;
s_size = sizeof(BUILD_TARGET_ARM_DEFAULT);
}
if (!strcmp(target_buf, "arm"))
snprintf(target_buf, target_buf_size, "armv4");
if(target_buf_size < s_size){
s_size = target_buf_size;
}
while (--s_size) {
if (*s >= 'A' && *s <= 'Z')
*d++ = *s++ + 'a' - 'A';
else
*d++ = *s++ ;
}
/* Ensure the string is null byte ('\0') terminated */
*d = '\0';
}
#undef BUILD_TARGET_ARM_DEFAULT
uint32
get_plt_item_size()