diff options
| author | ruki <[email protected]> | 2025-12-07 17:47:01 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-12-07 17:47:01 +0800 |
| commit | f4cd87b0135d84932f186bc068a5232912ee43b9 (patch) | |
| tree | 1e1bba0e8a5160cc4a9cd8f5de0bdef15ea2ba64 /core | |
| parent | 35aeaac3f956f26f188ebab40c443b64d2cb2f95 (diff) | |
update bin2c
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/xmake/binutils/bin2c.c (renamed from core/src/xmake/utils/bin2c.c) | 28 | ||||
| -rw-r--r-- | core/src/xmake/binutils/bin2coff.c (renamed from core/src/xmake/utils/bin2coff.c) | 34 | ||||
| -rw-r--r-- | core/src/xmake/binutils/bin2elf.c (renamed from core/src/xmake/utils/bin2elf.c) | 26 | ||||
| -rw-r--r-- | core/src/xmake/binutils/bin2macho.c (renamed from core/src/xmake/utils/bin2macho.c) | 62 | ||||
| -rw-r--r-- | core/src/xmake/binutils/prefix.h (renamed from core/src/xmake/utils/prefix.h) | 7 | ||||
| -rw-r--r-- | core/src/xmake/engine.c | 26 | ||||
| -rwxr-xr-x | core/src/xmake/xmake.sh | 2 |
7 files changed, 92 insertions, 93 deletions
diff --git a/core/src/xmake/utils/bin2c.c b/core/src/xmake/binutils/bin2c.c index a1ca2a25d..b5054c55f 100644 --- a/core/src/xmake/utils/bin2c.c +++ b/core/src/xmake/binutils/bin2c.c @@ -43,21 +43,21 @@ */ // optimized hex conversion table -static tb_char_t const *xm_utils_bin2c_digits = "0123456789ABCDEF"; +static tb_char_t const *xm_binutils_bin2c_digits = "0123456789ABCDEF"; // inline hex conversion for better performance -static __tb_inline__ tb_void_t xm_utils_bin2c_write_hex(tb_char_t *str, tb_byte_t value) { +static __tb_inline__ tb_void_t xm_binutils_bin2c_write_hex(tb_char_t *str, tb_byte_t value) { str[0] = ' '; str[1] = '0'; str[2] = 'x'; - str[3] = xm_utils_bin2c_digits[(value >> 4) & 15]; - str[4] = xm_utils_bin2c_digits[value & 15]; + str[3] = xm_binutils_bin2c_digits[(value >> 4) & 15]; + str[4] = xm_binutils_bin2c_digits[value & 15]; } -static tb_bool_t xm_utils_bin2c_dump(tb_stream_ref_t istream, - tb_stream_ref_t ostream, - tb_int_t linewidth, - tb_bool_t nozeroend) { +static tb_bool_t xm_binutils_bin2c_dump(tb_stream_ref_t istream, + tb_stream_ref_t ostream, + tb_int_t linewidth, + tb_bool_t nozeroend) { tb_bool_t first = tb_true; tb_bool_t zero_pending = tb_false; @@ -81,9 +81,7 @@ static tb_bool_t xm_utils_bin2c_dump(tb_stream_ref_t istream, } else { tb_hong_t left = tb_stream_left(istream); tb_size_t to_read = (tb_size_t)tb_min(left, (tb_hong_t)XM_BIN2C_DATA_SIZE); - if (!to_read) { - break; - } + tb_check_break(to_read); if (!tb_stream_bread(istream, data, to_read)) { break; @@ -138,7 +136,7 @@ static tb_bool_t xm_utils_bin2c_dump(tb_stream_ref_t istream, } // write hex value (inline for performance) - xm_utils_bin2c_write_hex(line + linesize, data[data_pos]); + xm_binutils_bin2c_write_hex(line + linesize, data[data_pos]); linesize += 5; bytes_in_line++; data_pos++; @@ -162,9 +160,9 @@ static tb_bool_t xm_utils_bin2c_dump(tb_stream_ref_t istream, /* generate c/c++ code from the binary file * - * local ok, errors = utils.bin2c(binaryfile, outputfile, linewidth, nozeroend) + * local ok, errors = binutils.bin2c(binaryfile, outputfile, linewidth, nozeroend) */ -tb_int_t xm_utils_bin2c(lua_State *lua) { +tb_int_t xm_binutils_bin2c(lua_State *lua) { tb_assert_and_check_return_val(lua, 0); // get the binaryfile @@ -199,7 +197,7 @@ tb_int_t xm_utils_bin2c(lua_State *lua) { break; } - if (!xm_utils_bin2c_dump(istream, ostream, linewidth, nozeroend)) { + if (!xm_binutils_bin2c_dump(istream, ostream, linewidth, nozeroend)) { lua_pushboolean(lua, tb_false); lua_pushfstring(lua, "bin2c: dump data failed"); break; diff --git a/core/src/xmake/utils/bin2coff.c b/core/src/xmake/binutils/bin2coff.c index 976f18202..686b89fac 100644 --- a/core/src/xmake/utils/bin2coff.c +++ b/core/src/xmake/binutils/bin2coff.c @@ -103,7 +103,7 @@ typedef struct __xm_coff_symbol_tail_t { /* ////////////////////////////////////////////////////////////////////////////////////// * private implementation */ -static tb_uint16_t xm_utils_bin2coff_get_machine(tb_char_t const *arch) { +static tb_uint16_t xm_binutils_bin2coff_get_machine(tb_char_t const *arch) { if (!arch) { return XM_COFF_MACHINE_I386; } @@ -119,7 +119,7 @@ static tb_uint16_t xm_utils_bin2coff_get_machine(tb_char_t const *arch) { return XM_COFF_MACHINE_I386; } -static tb_void_t xm_utils_bin2coff_write_string(tb_stream_ref_t ostream, tb_char_t const *str, tb_size_t len) { +static tb_void_t xm_binutils_bin2coff_write_string(tb_stream_ref_t ostream, tb_char_t const *str, tb_size_t len) { tb_assert_and_check_return(ostream && str); if (len == 0) { len = tb_strlen(str); @@ -127,7 +127,7 @@ static tb_void_t xm_utils_bin2coff_write_string(tb_stream_ref_t ostream, tb_char tb_stream_bwrit(ostream, (tb_byte_t const *)str, len); } -static tb_void_t xm_utils_bin2coff_write_padding(tb_stream_ref_t ostream, tb_size_t count) { +static tb_void_t xm_binutils_bin2coff_write_padding(tb_stream_ref_t ostream, tb_size_t count) { tb_assert_and_check_return(ostream); tb_byte_t zero = 0; while (count-- > 0) { @@ -135,14 +135,14 @@ static tb_void_t xm_utils_bin2coff_write_padding(tb_stream_ref_t ostream, tb_siz } } -static tb_void_t xm_utils_bin2coff_write_symbol_name(tb_stream_ref_t ostream, tb_char_t const *name, tb_uint32_t *strtab_offset) { +static tb_void_t xm_binutils_bin2coff_write_symbol_name(tb_stream_ref_t ostream, tb_char_t const *name, tb_uint32_t *strtab_offset) { tb_assert_and_check_return(ostream && name && strtab_offset); tb_size_t len = tb_strlen(name); if (len <= 8) { // short name: store directly in symbol name field - xm_utils_bin2coff_write_string(ostream, name, len); + xm_binutils_bin2coff_write_string(ostream, name, len); if (len < 8) { - xm_utils_bin2coff_write_padding(ostream, 8 - len); + xm_binutils_bin2coff_write_padding(ostream, 8 - len); } } else { // long name: store offset in string table @@ -153,7 +153,7 @@ static tb_void_t xm_utils_bin2coff_write_symbol_name(tb_stream_ref_t ostream, tb } } -static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, +static tb_bool_t xm_binutils_bin2coff_dump(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_char_t const *symbol_prefix, tb_char_t const *arch, @@ -223,7 +223,7 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, // write COFF header xm_coff_header_t header; tb_memset(&header, 0, sizeof(header)); - header.machine = xm_utils_bin2coff_get_machine(arch); + header.machine = xm_binutils_bin2coff_get_machine(arch); header.nsects = 1; header.time = 0; header.symtabofs = symbol_table_ofs; @@ -252,7 +252,7 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, } // write section data - if (!xm_utils_stream_copy(istream, ostream, filesize)) { + if (!xm_binutils_stream_copy(istream, ostream, filesize)) { return tb_false; } // append null terminator if zeroend is true @@ -266,7 +266,7 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, // align to 4 bytes tb_uint32_t padding = (4 - (section_data_size & 3)) & 3; if (padding > 0) { - xm_utils_bin2coff_write_padding(ostream, padding); + xm_binutils_bin2coff_write_padding(ostream, padding); } // write symbol table @@ -294,7 +294,7 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, // symbol 1: _binary_xxx_start tb_uint32_t strtab_offset = 4; // start after size field - xm_utils_bin2coff_write_symbol_name(ostream, symbol_start, &strtab_offset); + xm_binutils_bin2coff_write_symbol_name(ostream, symbol_start, &strtab_offset); xm_coff_symbol_tail_t sym_start_tail; tb_memset(&sym_start_tail, 0, sizeof(sym_start_tail)); sym_start_tail.value = 0; @@ -305,7 +305,7 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, } // symbol 2: _binary_xxx_end - xm_utils_bin2coff_write_symbol_name(ostream, symbol_end, &strtab_offset); + xm_binutils_bin2coff_write_symbol_name(ostream, symbol_end, &strtab_offset); xm_coff_symbol_tail_t sym_end_tail; tb_memset(&sym_end_tail, 0, sizeof(sym_end_tail)); sym_end_tail.value = datasize; @@ -318,12 +318,12 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, // write string table tb_stream_bwrit(ostream, (tb_byte_t const *)&string_table_size, 4); if (start_len > 8) { - xm_utils_bin2coff_write_string(ostream, symbol_start, start_len); + xm_binutils_bin2coff_write_string(ostream, symbol_start, start_len); tb_byte_t null = 0; tb_stream_bwrit(ostream, &null, 1); } if (end_len > 8) { - xm_utils_bin2coff_write_string(ostream, symbol_end, end_len); + xm_binutils_bin2coff_write_string(ostream, symbol_end, end_len); tb_byte_t null = 0; tb_stream_bwrit(ostream, &null, 1); } @@ -337,9 +337,9 @@ static tb_bool_t xm_utils_bin2coff_dump(tb_stream_ref_t istream, /* generate COFF object file from binary file * - * local ok, errors = utils.bin2coff(binaryfile, outputfile, symbol_prefix, arch, basename) + * local ok, errors = binutils.bin2coff(binaryfile, outputfile, symbol_prefix, arch, basename) */ -tb_int_t xm_utils_bin2coff(lua_State *lua) { +tb_int_t xm_binutils_bin2coff(lua_State *lua) { tb_assert_and_check_return_val(lua, 0); // get the binaryfile @@ -380,7 +380,7 @@ tb_int_t xm_utils_bin2coff(lua_State *lua) { break; } - if (!xm_utils_bin2coff_dump(istream, ostream, symbol_prefix, arch, basename, zeroend)) { + if (!xm_binutils_bin2coff_dump(istream, ostream, symbol_prefix, arch, basename, zeroend)) { lua_pushboolean(lua, tb_false); lua_pushfstring(lua, "bin2coff: dump data failed"); break; diff --git a/core/src/xmake/utils/bin2elf.c b/core/src/xmake/binutils/bin2elf.c index 7fe8e5576..bb2507a34 100644 --- a/core/src/xmake/utils/bin2elf.c +++ b/core/src/xmake/binutils/bin2elf.c @@ -135,7 +135,7 @@ typedef struct __xm_elf64_symbol_t { /* ////////////////////////////////////////////////////////////////////////////////////// * private implementation */ -static tb_uint16_t xm_utils_bin2elf_get_machine(tb_char_t const *arch) { +static tb_uint16_t xm_binutils_bin2elf_get_machine(tb_char_t const *arch) { if (!arch) { return XM_ELF_MACHINE_X86_64; } @@ -153,7 +153,7 @@ static tb_uint16_t xm_utils_bin2elf_get_machine(tb_char_t const *arch) { return XM_ELF_MACHINE_X86_64; } -static tb_bool_t xm_utils_bin2elf_is_64bit(tb_char_t const *arch) { +static tb_bool_t xm_binutils_bin2elf_is_64bit(tb_char_t const *arch) { if (!arch) { return tb_true; } @@ -165,7 +165,7 @@ static tb_bool_t xm_utils_bin2elf_is_64bit(tb_char_t const *arch) { return tb_false; } -static tb_bool_t xm_utils_bin2elf_dump_32(tb_stream_ref_t istream, +static tb_bool_t xm_binutils_bin2elf_dump_32(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_char_t const *symbol_prefix, tb_char_t const *arch, @@ -256,7 +256,7 @@ static tb_bool_t xm_utils_bin2elf_dump_32(tb_stream_ref_t istream, header.e_ident[6] = 1; // EV_CURRENT header.e_ident[7] = 0; // ELFOSABI_SYSV header.e_type = 1; // ET_REL - header.e_machine = xm_utils_bin2elf_get_machine(arch); + header.e_machine = xm_binutils_bin2elf_get_machine(arch); header.e_version = 1; header.e_shoff = section_headers_ofs; header.e_ehsize = header_size; @@ -340,7 +340,7 @@ static tb_bool_t xm_utils_bin2elf_dump_32(tb_stream_ref_t istream, } // write .rodata section data - if (!xm_utils_stream_copy(istream, ostream, filesize)) { + if (!xm_binutils_stream_copy(istream, ostream, filesize)) { return tb_false; } // append null terminator if zeroend is true @@ -469,7 +469,7 @@ static tb_bool_t xm_utils_bin2elf_dump_32(tb_stream_ref_t istream, return tb_true; } -static tb_bool_t xm_utils_bin2elf_dump_64(tb_stream_ref_t istream, +static tb_bool_t xm_binutils_bin2elf_dump_64(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_char_t const *symbol_prefix, tb_char_t const *arch, @@ -560,7 +560,7 @@ static tb_bool_t xm_utils_bin2elf_dump_64(tb_stream_ref_t istream, header.e_ident[6] = 1; // EV_CURRENT header.e_ident[7] = 0; // ELFOSABI_SYSV header.e_type = 1; // ET_REL - header.e_machine = xm_utils_bin2elf_get_machine(arch); + header.e_machine = xm_binutils_bin2elf_get_machine(arch); header.e_version = 1; header.e_shoff = section_headers_ofs; header.e_ehsize = header_size; @@ -644,7 +644,7 @@ static tb_bool_t xm_utils_bin2elf_dump_64(tb_stream_ref_t istream, } // write .rodata section data - if (!xm_utils_stream_copy(istream, ostream, filesize)) { + if (!xm_binutils_stream_copy(istream, ostream, filesize)) { return tb_false; } // append null terminator if zeroend is true @@ -779,9 +779,9 @@ static tb_bool_t xm_utils_bin2elf_dump_64(tb_stream_ref_t istream, /* generate ELF object file from binary file * - * local ok, errors = utils.bin2elf(binaryfile, outputfile, symbol_prefix, arch, basename, zeroend) + * local ok, errors = binutils.bin2elf(binaryfile, outputfile, symbol_prefix, arch, basename, zeroend) */ -tb_int_t xm_utils_bin2elf(lua_State *lua) { +tb_int_t xm_binutils_bin2elf(lua_State *lua) { tb_assert_and_check_return_val(lua, 0); // get the binaryfile @@ -823,15 +823,15 @@ tb_int_t xm_utils_bin2elf(lua_State *lua) { } // choose 32-bit or 64-bit ELF based on architecture - tb_bool_t is_64bit = xm_utils_bin2elf_is_64bit(arch); + tb_bool_t is_64bit = xm_binutils_bin2elf_is_64bit(arch); if (is_64bit) { - if (!xm_utils_bin2elf_dump_64(istream, ostream, symbol_prefix, arch, basename, zeroend)) { + if (!xm_binutils_bin2elf_dump_64(istream, ostream, symbol_prefix, arch, basename, zeroend)) { lua_pushboolean(lua, tb_false); lua_pushfstring(lua, "bin2elf: dump data failed"); break; } } else { - if (!xm_utils_bin2elf_dump_32(istream, ostream, symbol_prefix, arch, basename, zeroend)) { + if (!xm_binutils_bin2elf_dump_32(istream, ostream, symbol_prefix, arch, basename, zeroend)) { lua_pushboolean(lua, tb_false); lua_pushfstring(lua, "bin2elf: dump data failed"); break; diff --git a/core/src/xmake/utils/bin2macho.c b/core/src/xmake/binutils/bin2macho.c index 04733e1b2..5add65d6c 100644 --- a/core/src/xmake/utils/bin2macho.c +++ b/core/src/xmake/binutils/bin2macho.c @@ -191,7 +191,7 @@ typedef struct __xm_macho_nlist_64_t { /* ////////////////////////////////////////////////////////////////////////////////////// * private implementation */ -static tb_uint32_t xm_utils_bin2macho_get_cputype(tb_char_t const *arch) { +static tb_uint32_t xm_binutils_bin2macho_get_cputype(tb_char_t const *arch) { if (!arch) { return XM_MACHO_CPU_TYPE_X86_64; } @@ -207,7 +207,7 @@ static tb_uint32_t xm_utils_bin2macho_get_cputype(tb_char_t const *arch) { return XM_MACHO_CPU_TYPE_X86_64; } -static tb_uint32_t xm_utils_bin2macho_get_cpusubtype(tb_char_t const *arch) { +static tb_uint32_t xm_binutils_bin2macho_get_cpusubtype(tb_char_t const *arch) { if (!arch) { return XM_MACHO_CPU_SUBTYPE_X86_64; } @@ -223,7 +223,7 @@ static tb_uint32_t xm_utils_bin2macho_get_cpusubtype(tb_char_t const *arch) { return XM_MACHO_CPU_SUBTYPE_X86_64; } -static tb_bool_t xm_utils_bin2macho_is_64bit(tb_char_t const *arch) { +static tb_bool_t xm_binutils_bin2macho_is_64bit(tb_char_t const *arch) { if (!arch) { return tb_true; } @@ -239,11 +239,11 @@ static tb_bool_t xm_utils_bin2macho_is_64bit(tb_char_t const *arch) { return tb_true; } -static tb_uint32_t xm_utils_bin2macho_align(tb_uint32_t value, tb_uint32_t align) { +static tb_uint32_t xm_binutils_bin2macho_align(tb_uint32_t value, tb_uint32_t align) { return ((value + align - 1) & ~(align - 1)); } -static tb_uint32_t xm_utils_bin2macho_get_platform(tb_char_t const *platform) { +static tb_uint32_t xm_binutils_bin2macho_get_platform(tb_char_t const *platform) { if (!platform) { return XM_MACHO_PLATFORM_MACOS; } @@ -261,7 +261,7 @@ static tb_uint32_t xm_utils_bin2macho_get_platform(tb_char_t const *platform) { // parse version string (e.g., "10.0" or "18.2") to Mach-O format (0x000a0000) // format: (major << 16) | (minor << 8) | patch -static tb_uint32_t xm_utils_bin2macho_parse_version(tb_char_t const *version_str) { +static tb_uint32_t xm_binutils_bin2macho_parse_version(tb_char_t const *version_str) { if (!version_str || !version_str[0]) { return 0x000a0000; // default: 10.0.0 } @@ -293,7 +293,7 @@ static tb_uint32_t xm_utils_bin2macho_parse_version(tb_char_t const *version_str return (major << 16) | (minor << 8) | patch; } -static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, +static tb_bool_t xm_binutils_bin2macho_dump_64(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_char_t const *symbol_prefix, tb_char_t const *plat, @@ -354,10 +354,10 @@ static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, tb_uint32_t symtab_cmd_size = sizeof(xm_macho_symtab_command_t); tb_uint32_t build_version_cmd_size = sizeof(xm_macho_build_version_command_t); tb_uint32_t segment_cmd_total_size = segment_cmd_size + section_size; - tb_uint32_t data_offset = xm_utils_bin2macho_align(header_size + segment_cmd_total_size + symtab_cmd_size + build_version_cmd_size, 8); + tb_uint32_t data_offset = xm_binutils_bin2macho_align(header_size + segment_cmd_total_size + symtab_cmd_size + build_version_cmd_size, 8); tb_uint32_t data_size = datasize; tb_uint32_t data_end_offset = data_offset + data_size; - tb_uint32_t symtab_offset = xm_utils_bin2macho_align(data_end_offset, 8); + tb_uint32_t symtab_offset = xm_binutils_bin2macho_align(data_end_offset, 8); tb_uint32_t nlist_size = sizeof(xm_macho_nlist_64_t); tb_uint32_t nlist_count = 2; // start, end tb_uint32_t strtab_offset = symtab_offset + nlist_size * nlist_count; @@ -366,14 +366,14 @@ static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, tb_size_t end_len = tb_strlen(symbol_end); strtab_size += (tb_uint32_t)(start_len + 1); strtab_size += (tb_uint32_t)(end_len + 1); - strtab_size = xm_utils_bin2macho_align(strtab_size, 8); + strtab_size = xm_binutils_bin2macho_align(strtab_size, 8); // write Mach-O header xm_macho_header_64_t header; tb_memset(&header, 0, sizeof(header)); header.magic = XM_MACHO_MAGIC_64; - header.cputype = xm_utils_bin2macho_get_cputype(arch); - header.cpusubtype = xm_utils_bin2macho_get_cpusubtype(arch); + header.cputype = xm_binutils_bin2macho_get_cputype(arch); + header.cpusubtype = xm_binutils_bin2macho_get_cpusubtype(arch); header.filetype = XM_MACHO_FILE_TYPE_OBJECT; header.ncmds = 3; // segment + symtab + build_version header.sizeofcmds = segment_cmd_total_size + symtab_cmd_size + build_version_cmd_size; @@ -434,7 +434,7 @@ static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, tb_memset(&build_version, 0, sizeof(build_version)); build_version.cmd = XM_MACHO_LC_BUILD_VERSION; build_version.cmdsize = build_version_cmd_size; - build_version.platform = xm_utils_bin2macho_get_platform(plat); + build_version.platform = xm_binutils_bin2macho_get_platform(plat); build_version.minos = minos; build_version.sdk = sdk; build_version.ntools = 0; @@ -454,7 +454,7 @@ static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, } // write section data - if (!xm_utils_stream_copy(istream, ostream, filesize)) { + if (!xm_binutils_stream_copy(istream, ostream, filesize)) { return tb_false; } // append null terminator if zeroend is true @@ -538,7 +538,7 @@ static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, return tb_true; } -static tb_bool_t xm_utils_bin2macho_dump_32(tb_stream_ref_t istream, +static tb_bool_t xm_binutils_bin2macho_dump_32(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_char_t const *symbol_prefix, tb_char_t const *plat, @@ -599,10 +599,10 @@ static tb_bool_t xm_utils_bin2macho_dump_32(tb_stream_ref_t istream, tb_uint32_t symtab_cmd_size = sizeof(xm_macho_symtab_command_t); tb_uint32_t build_version_cmd_size = sizeof(xm_macho_build_version_command_t); tb_uint32_t segment_cmd_total_size = segment_cmd_size + section_size; - tb_uint32_t data_offset = xm_utils_bin2macho_align(header_size + segment_cmd_total_size + symtab_cmd_size + build_version_cmd_size, 4); + tb_uint32_t data_offset = xm_binutils_bin2macho_align(header_size + segment_cmd_total_size + symtab_cmd_size + build_version_cmd_size, 4); tb_uint32_t data_size = datasize; tb_uint32_t data_end_offset = data_offset + data_size; - tb_uint32_t symtab_offset = xm_utils_bin2macho_align(data_end_offset, 4); + tb_uint32_t symtab_offset = xm_binutils_bin2macho_align(data_end_offset, 4); tb_uint32_t nlist_size = sizeof(xm_macho_nlist_t); tb_uint32_t nlist_count = 2; // start, end tb_uint32_t strtab_offset = symtab_offset + nlist_size * nlist_count; @@ -611,14 +611,14 @@ static tb_bool_t xm_utils_bin2macho_dump_32(tb_stream_ref_t istream, tb_size_t end_len = tb_strlen(symbol_end); strtab_size += (tb_uint32_t)(start_len + 1); strtab_size += (tb_uint32_t)(end_len + 1); - strtab_size = xm_utils_bin2macho_align(strtab_size, 4); + strtab_size = xm_binutils_bin2macho_align(strtab_size, 4); // write Mach-O header xm_macho_header_t header; tb_memset(&header, 0, sizeof(header)); header.magic = XM_MACHO_MAGIC_32; - header.cputype = xm_utils_bin2macho_get_cputype(arch); - header.cpusubtype = xm_utils_bin2macho_get_cpusubtype(arch); + header.cputype = xm_binutils_bin2macho_get_cputype(arch); + header.cpusubtype = xm_binutils_bin2macho_get_cpusubtype(arch); header.filetype = XM_MACHO_FILE_TYPE_OBJECT; header.ncmds = 3; // segment + symtab + build_version header.sizeofcmds = segment_cmd_total_size + symtab_cmd_size + build_version_cmd_size; @@ -681,7 +681,7 @@ static tb_bool_t xm_utils_bin2macho_dump_32(tb_stream_ref_t istream, tb_memset(&build_version, 0, sizeof(build_version)); build_version.cmd = XM_MACHO_LC_BUILD_VERSION; build_version.cmdsize = build_version_cmd_size; - build_version.platform = xm_utils_bin2macho_get_platform(plat); + build_version.platform = xm_binutils_bin2macho_get_platform(plat); build_version.minos = minos; build_version.sdk = sdk; build_version.ntools = 0; @@ -701,7 +701,7 @@ static tb_bool_t xm_utils_bin2macho_dump_32(tb_stream_ref_t istream, } // write section data - if (!xm_utils_stream_copy(istream, ostream, filesize)) { + if (!xm_binutils_stream_copy(istream, ostream, filesize)) { return tb_false; } // append null terminator if zeroend is true @@ -785,7 +785,7 @@ static tb_bool_t xm_utils_bin2macho_dump_32(tb_stream_ref_t istream, return tb_true; } -static tb_bool_t xm_utils_bin2macho_dump(tb_stream_ref_t istream, +static tb_bool_t xm_binutils_bin2macho_dump(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_char_t const *symbol_prefix, tb_char_t const *plat, @@ -794,10 +794,10 @@ static tb_bool_t xm_utils_bin2macho_dump(tb_stream_ref_t istream, tb_uint32_t minos, tb_uint32_t sdk, tb_bool_t zeroend) { - if (xm_utils_bin2macho_is_64bit(arch)) { - return xm_utils_bin2macho_dump_64(istream, ostream, symbol_prefix, plat, arch, basename, minos, sdk, zeroend); + if (xm_binutils_bin2macho_is_64bit(arch)) { + return xm_binutils_bin2macho_dump_64(istream, ostream, symbol_prefix, plat, arch, basename, minos, sdk, zeroend); } else { - return xm_utils_bin2macho_dump_32(istream, ostream, symbol_prefix, plat, arch, basename, minos, sdk, zeroend); + return xm_binutils_bin2macho_dump_32(istream, ostream, symbol_prefix, plat, arch, basename, minos, sdk, zeroend); } } @@ -807,9 +807,9 @@ static tb_bool_t xm_utils_bin2macho_dump(tb_stream_ref_t istream, /* generate Mach-O object file from binary file * - * local ok, errors = utils.bin2macho(binaryfile, outputfile, symbol_prefix, plat, arch, basename) + * local ok, errors = binutils.bin2macho(binaryfile, outputfile, symbol_prefix, plat, arch, basename) */ -tb_int_t xm_utils_bin2macho(lua_State *lua) { +tb_int_t xm_binutils_bin2macho(lua_State *lua) { tb_assert_and_check_return_val(lua, 0); // get the binaryfile @@ -834,11 +834,11 @@ tb_int_t xm_utils_bin2macho(lua_State *lua) { // get minos version string (optional) tb_char_t const *minos_str = lua_isstring(lua, 7) ? lua_tostring(lua, 7) : tb_null; - tb_uint32_t minos = xm_utils_bin2macho_parse_version(minos_str); + tb_uint32_t minos = xm_binutils_bin2macho_parse_version(minos_str); // get sdk version string (optional) tb_char_t const *sdk_str = lua_isstring(lua, 8) ? lua_tostring(lua, 8) : tb_null; - tb_uint32_t sdk = xm_utils_bin2macho_parse_version(sdk_str); + tb_uint32_t sdk = xm_binutils_bin2macho_parse_version(sdk_str); // get zeroend (optional, default: false) tb_bool_t zeroend = lua_toboolean(lua, 9); @@ -861,7 +861,7 @@ tb_int_t xm_utils_bin2macho(lua_State *lua) { break; } - if (!xm_utils_bin2macho_dump(istream, ostream, symbol_prefix, plat, arch, basename, minos, sdk, zeroend)) { + if (!xm_binutils_bin2macho_dump(istream, ostream, symbol_prefix, plat, arch, basename, minos, sdk, zeroend)) { lua_pushboolean(lua, tb_false); lua_pushfstring(lua, "bin2macho: dump data failed"); break; diff --git a/core/src/xmake/utils/prefix.h b/core/src/xmake/binutils/prefix.h index 077b4027f..739e220f7 100644 --- a/core/src/xmake/utils/prefix.h +++ b/core/src/xmake/binutils/prefix.h @@ -18,8 +18,8 @@ * @file prefix.h * */ -#ifndef XM_UTILS_PREFIX_H -#define XM_UTILS_PREFIX_H +#ifndef XM_BINUTILS_PREFIX_H +#define XM_BINUTILS_PREFIX_H /* ////////////////////////////////////////////////////////////////////////////////////// * includes @@ -38,7 +38,7 @@ * * @return tb_true on success, tb_false on failure */ -static __tb_inline__ tb_bool_t xm_utils_stream_copy(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_hize_t size) { +static __tb_inline__ tb_bool_t xm_binutils_stream_copy(tb_stream_ref_t istream, tb_stream_ref_t ostream, tb_hize_t size) { tb_assert_and_check_return_val(istream && ostream && size > 0, tb_false); tb_byte_t data[TB_STREAM_BLOCK_MAXN]; @@ -67,3 +67,4 @@ static __tb_inline__ tb_bool_t xm_utils_stream_copy(tb_stream_ref_t istream, tb_ } #endif + diff --git a/core/src/xmake/engine.c b/core/src/xmake/engine.c index 71a4d4b95..13e8747e0 100644 --- a/core/src/xmake/engine.c +++ b/core/src/xmake/engine.c @@ -334,11 +334,11 @@ tb_int_t xm_tty_term_mode(lua_State *lua); // the package functions tb_int_t xm_package_loadxmi(lua_State *lua); -// the utils functions -tb_int_t xm_utils_bin2c(lua_State *lua); -tb_int_t xm_utils_bin2coff(lua_State *lua); -tb_int_t xm_utils_bin2macho(lua_State *lua); -tb_int_t xm_utils_bin2elf(lua_State *lua); +// the binutils functions +tb_int_t xm_binutils_bin2c(lua_State *lua); +tb_int_t xm_binutils_bin2coff(lua_State *lua); +tb_int_t xm_binutils_bin2macho(lua_State *lua); +tb_int_t xm_binutils_bin2elf(lua_State *lua); #ifdef XM_CONFIG_API_HAVE_CURSES // register curses functions @@ -655,12 +655,12 @@ static luaL_Reg const g_package_functions[] = { { tb_null, tb_null }, }; -// the utils functions -static luaL_Reg const g_utils_functions[] = { - { "bin2c", xm_utils_bin2c }, - { "bin2coff", xm_utils_bin2coff }, - { "bin2macho", xm_utils_bin2macho }, - { "bin2elf", xm_utils_bin2elf }, +// the binutils functions +static luaL_Reg const g_binutils_functions[] = { + { "bin2c", xm_binutils_bin2c }, + { "bin2coff", xm_binutils_bin2coff }, + { "bin2macho", xm_binutils_bin2macho }, + { "bin2elf", xm_binutils_bin2elf }, { tb_null, tb_null }, }; @@ -1561,8 +1561,8 @@ xm_engine_ref_t xm_engine_init(tb_char_t const *name, xm_engine_lni_initalizer_c // bind package functions xm_lua_register(engine->lua, "package", g_package_functions); - // bind utils functions - xm_lua_register(engine->lua, "utils", g_utils_functions); + // bind binutils functions + xm_lua_register(engine->lua, "binutils", g_binutils_functions); // bind thread functions xm_lua_register(engine->lua, "thread", g_thread_functions); diff --git a/core/src/xmake/xmake.sh b/core/src/xmake/xmake.sh index 731d1d783..6cdbb042d 100755 --- a/core/src/xmake/xmake.sh +++ b/core/src/xmake/xmake.sh @@ -71,7 +71,7 @@ target "xmake" add_files "semver/*.c" add_files "string/*.c" add_files "tty/*.c" - add_files "utils/*.c" + add_files "binutils/*.c" add_files "thread/*.c" if is_plat "mingw"; then add_files "winos/*.c" |
