From 0e154cc75941102e8324daee4b55f4826af2c0a9 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Sat, 25 Mar 2017 20:22:04 -0700 Subject: [PATCH] Hint when need DT_INIT for shared library https://github.com/upx/upx/issues/74 modified: p_lx_elf.cpp --- src/p_lx_elf.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index 97a4c2bb..5e870250 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -1600,7 +1600,7 @@ bool PackLinuxElf32::canPack() goto proceed; // But proper packing depends on checking xct_va. } else - infoWarning("no DT_INIT or JNI_OnLoad: %s", fi->getName()); + throwCantPack("need DT_INIT; try \"void _init(void){}\""); abandon: return false; proceed: ; @@ -1792,6 +1792,8 @@ PackLinuxElf64ppcle::canPack() xct_off = elf_get_offset_from_address(xct_va); goto proceed; // But proper packing depends on checking xct_va. } + else + throwCantPack("need DT_INIT; try \"void _init(void){}\""); abandon: return false; proceed: ; @@ -1984,6 +1986,8 @@ PackLinuxElf64amd::canPack() xct_off = elf_get_offset_from_address(xct_va); goto proceed; // But proper packing depends on checking xct_va. } + else + throwCantPack("need DT_INIT; try \"void _init(void){}\""); abandon: return false; proceed: ;