summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-07 12:19:22 +0800
committerruki <[email protected]>2025-12-07 17:15:59 +0800
commit282349621e4e7c02fa3cb7a6df2d523fbba3c9d7 (patch)
tree22ab80762e4630384ddbe719d083ce39942da9c8
parent774c5110ef60f2878d3a2f503c7a55db4943a1cb (diff)
add file zeroend support
-rw-r--r--core/src/xmake/utils/bin2macho.c2
-rw-r--r--tests/projects/other/bin2obj/xmake.lua2
-rw-r--r--xmake/rules/utils/bin2obj/xmake.lua4
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()