diff options
| author | ruki <[email protected]> | 2025-12-07 12:19:22 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-12-07 17:15:59 +0800 |
| commit | 282349621e4e7c02fa3cb7a6df2d523fbba3c9d7 (patch) | |
| tree | 22ab80762e4630384ddbe719d083ce39942da9c8 | |
| parent | 774c5110ef60f2878d3a2f503c7a55db4943a1cb (diff) | |
add file zeroend support
| -rw-r--r-- | core/src/xmake/utils/bin2macho.c | 2 | ||||
| -rw-r--r-- | tests/projects/other/bin2obj/xmake.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/utils/bin2obj/xmake.lua | 4 |
3 files changed, 5 insertions, 3 deletions
diff --git a/core/src/xmake/utils/bin2macho.c b/core/src/xmake/utils/bin2macho.c index c0798fa02..07c6fc347 100644 --- a/core/src/xmake/utils/bin2macho.c +++ b/core/src/xmake/utils/bin2macho.c @@ -534,7 +534,7 @@ static tb_bool_t xm_utils_bin2macho_dump_64(tb_stream_ref_t istream, tb_stream_bwrit(ostream, &null, 1); // align string table to 8 bytes - padding = strtab_size - (4 + start_len + 1 + end_len + 1); + padding = strtab_size - (4 + (tb_uint32_t)start_len + 1 + (tb_uint32_t)end_len + 1); if (padding > 0) { tb_byte_t zero = 0; while (padding-- > 0) { diff --git a/tests/projects/other/bin2obj/xmake.lua b/tests/projects/other/bin2obj/xmake.lua index e20a329e1..3f00aebf9 100644 --- a/tests/projects/other/bin2obj/xmake.lua +++ b/tests/projects/other/bin2obj/xmake.lua @@ -4,5 +4,5 @@ target("test") set_kind("binary") add_rules("utils.bin2obj", {extensions = {".bin", ".png"}}) add_files("src/*.c") - add_files("src/*.bin") + add_files("src/data.bin", {zeroend = true}) add_files("src/*.png") diff --git a/xmake/rules/utils/bin2obj/xmake.lua b/xmake/rules/utils/bin2obj/xmake.lua index 53ceb6a51..d35e50606 100644 --- a/xmake/rules/utils/bin2obj/xmake.lua +++ b/xmake/rules/utils/bin2obj/xmake.lua @@ -48,7 +48,9 @@ rule("utils.bin2obj") local symbol_prefix = target:extraconf("rules", "utils.bin2obj", "symbol_prefix") or "_binary_" -- get zeroend (default: false) - local zeroend = target:extraconf("rules", "utils.bin2obj", "zeroend") or false + -- check file-level config first, then rule-level config + local fileconfig = target:fileconfig(sourcefile_bin) + local zeroend = (fileconfig and fileconfig.zeroend) or target:extraconf("rules", "utils.bin2obj", "zeroend") or false -- get architecture local arch = target:arch() |
