summaryrefslogtreecommitdiff
path: root/core/src/xmake/binutils/mslib
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-12 00:45:57 +0800
committerruki <[email protected]>2025-12-12 09:00:45 +0800
commiteeb70e956f65c2dd4581ead1581dfa7c8e64ed00 (patch)
treecc100e55f11af35053cd6829e823511acd603540 /core/src/xmake/binutils/mslib
parentbf35be31ee869cf75a9a32e52069867326e23cda (diff)
fix some codes
Diffstat (limited to 'core/src/xmake/binutils/mslib')
-rw-r--r--core/src/xmake/binutils/mslib/extractlib.c10
-rw-r--r--core/src/xmake/binutils/mslib/readsyms.c32
2 files changed, 21 insertions, 21 deletions
diff --git a/core/src/xmake/binutils/mslib/extractlib.c b/core/src/xmake/binutils/mslib/extractlib.c
index e6569ac3e..1be374355 100644
--- a/core/src/xmake/binutils/mslib/extractlib.c
+++ b/core/src/xmake/binutils/mslib/extractlib.c
@@ -148,10 +148,9 @@ tb_bool_t xm_binutils_mslib_extract(tb_stream_ref_t istream, tb_char_t const *ou
}
if (is_longname_table) {
- if (longnames) tb_free(longnames);
- longnames = (tb_char_t*)tb_malloc_bytes((tb_size_t)member_size + 1);
- if (!longnames || !tb_stream_bread(istream, (tb_byte_t*)longnames, (tb_size_t)member_size)) {
- ok = tb_false;
+ longnames = (tb_char_t*)tb_ralloc(longnames, (tb_size_t)member_size + 1);
+ if (!longnames || !tb_stream_bread(istream, (tb_byte_t*)longnames, (tb_size_t)member_size)) {
+ ok = tb_false;
break;
}
longnames[member_size] = '\0';
@@ -159,7 +158,7 @@ tb_bool_t xm_binutils_mslib_extract(tb_stream_ref_t istream, tb_char_t const *ou
// align
if (member_size % 2) {
- if (!tb_stream_skip(istream, 1)) {
+ if (!tb_stream_skip(istream, 1)) {
ok = tb_false;
break;
}
@@ -179,6 +178,7 @@ tb_bool_t xm_binutils_mslib_extract(tb_stream_ref_t istream, tb_char_t const *ou
ok = tb_false;
break;
}
+
// align
if (member_size % 2) {
if (!tb_stream_skip(istream, 1)) {
diff --git a/core/src/xmake/binutils/mslib/readsyms.c b/core/src/xmake/binutils/mslib/readsyms.c
index 50d7aa416..6eb847bf6 100644
--- a/core/src/xmake/binutils/mslib/readsyms.c
+++ b/core/src/xmake/binutils/mslib/readsyms.c
@@ -43,7 +43,7 @@ extern tb_bool_t xm_binutils_macho_read_symbols(tb_stream_ref_t istream, tb_hize
static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream, tb_hize_t member_size, lua_State* lua, int map_idx) {
// try to parse as Second Linker Member (LE)
tb_hize_t start_pos = tb_stream_offset(istream);
-
+
// read number of members
tb_uint32_t num_members = 0;
if (!tb_stream_bread_u32_le(istream, &num_members)) return tb_false;
@@ -51,7 +51,7 @@ static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream
// sanity check
if (num_members == 0 || num_members > 65536 || num_members * 4 >= member_size) {
tb_stream_seek(istream, start_pos);
- return tb_false;
+ return tb_false;
}
// read offsets
@@ -60,7 +60,7 @@ static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream
tb_stream_seek(istream, start_pos);
return tb_false;
}
-
+
tb_size_t i;
for (i = 0; i < num_members; i++) {
if (!tb_stream_bread_u32_le(istream, &offsets[i])) {
@@ -77,8 +77,8 @@ static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream
tb_stream_seek(istream, start_pos);
return tb_false;
}
-
- if (num_symbols == 0 || num_symbols > 1000000) {
+
+ if (num_symbols == 0 || num_symbols > 1000000) {
tb_free(offsets);
tb_stream_seek(istream, start_pos);
return tb_false;
@@ -104,7 +104,7 @@ static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream
// read string table
tb_hize_t current = tb_stream_offset(istream);
tb_hize_t string_table_size = member_size - (current - start_pos);
-
+
tb_char_t* string_table = (tb_char_t*)tb_malloc_bytes((tb_size_t)string_table_size);
if (!string_table) {
tb_free(indices);
@@ -124,10 +124,10 @@ static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream
// populate map
tb_char_t* p = string_table;
tb_char_t* end = string_table + string_table_size;
-
+
for (i = 0; i < num_symbols; i++) {
if (p >= end) break;
-
+
tb_char_t* sym_name = p;
tb_size_t sym_len = tb_strlen(sym_name);
p += sym_len + 1;
@@ -135,7 +135,7 @@ static tb_bool_t xm_binutils_mslib_parse_archive_symbols(tb_stream_ref_t istream
tb_uint16_t idx = indices[i];
if (idx > 0 && idx <= num_members) {
tb_uint32_t offset = offsets[idx - 1];
-
+
lua_pushinteger(lua, offset);
lua_rawget(lua, map_idx);
if (lua_isnil(lua, -1)) {
@@ -231,8 +231,7 @@ tb_bool_t xm_binutils_mslib_read_symbols(tb_stream_ref_t istream, tb_hize_t base
}
if (is_longname_table) {
- if (longnames) tb_free(longnames);
- longnames = (tb_char_t*)tb_malloc_bytes((tb_size_t)member_size + 1);
+ longnames = (tb_char_t*)tb_ralloc(longnames, (tb_size_t)member_size + 1);
if (!longnames || !tb_stream_bread(istream, (tb_byte_t*)longnames, (tb_size_t)member_size)) {
ok = tb_false;
break;
@@ -242,7 +241,7 @@ tb_bool_t xm_binutils_mslib_read_symbols(tb_stream_ref_t istream, tb_hize_t base
// align
if (member_size % 2) {
- if (!tb_stream_skip(istream, 1)) {
+ if (!tb_stream_skip(istream, 1)) {
ok = tb_false;
break;
}
@@ -262,6 +261,7 @@ tb_bool_t xm_binutils_mslib_read_symbols(tb_stream_ref_t istream, tb_hize_t base
ok = tb_false;
break;
}
+
// align
if (member_size % 2) {
if (!tb_stream_skip(istream, 1)) {
@@ -294,7 +294,7 @@ tb_bool_t xm_binutils_mslib_read_symbols(tb_stream_ref_t istream, tb_hize_t base
// save current position
tb_hize_t current_pos = tb_stream_offset(istream);
tb_hize_t header_offset = current_pos - sizeof(xm_mslib_header_t);
-
+
// detect format
tb_int_t format = xm_binutils_detect_format(istream);
if (format != XM_BINUTILS_FORMAT_UNKNOWN && format != XM_BINUTILS_FORMAT_AR) {
@@ -343,11 +343,11 @@ tb_bool_t xm_binutils_mslib_read_symbols(tb_stream_ref_t istream, tb_hize_t base
lua_pushstring(lua, "name");
lua_pushstring(lua, name);
lua_settable(lua, -3);
-
+
lua_pushstring(lua, "type");
lua_pushstring(lua, "T");
lua_settable(lua, -3);
-
+
lua_rawseti(lua, -3, i);
}
lua_pop(lua, 1); // pop name
@@ -382,7 +382,7 @@ tb_bool_t xm_binutils_mslib_read_symbols(tb_stream_ref_t istream, tb_hize_t base
break;
}
}
-
+
// align to 2-byte boundary
if (member_size % 2) {
if (!tb_stream_skip(istream, 1)) {