diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 75852970..feb94932 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -1938,6 +1938,12 @@ upx_uint64_t PackMachBase::getEntryVMA(Mach_command const *ptr) return ptr->cmd; // FIXME must be specialized } +upx_uint64_t PackMachI386::getEntryVMA(Mach_command const *ptr) +{ + Mach_thread_command const *tc = (Mach_thread_command const *)ptr; + return tc->state.eip; +} + upx_uint64_t PackMachAMD64::getEntryVMA(Mach_command const *ptr) { Mach_thread_command const *tc = (Mach_thread_command const *)ptr; diff --git a/src/p_mach.h b/src/p_mach.h index edd43150..674ad7a8 100644 --- a/src/p_mach.h +++ b/src/p_mach.h @@ -875,6 +875,7 @@ protected: virtual Linker* newLinker() const; virtual void buildLoader(const Filter *ft); virtual void addStubEntrySections(Filter const *); + virtual upx_uint64_t getEntryVMA(Mach_command const *); __packed_struct(Mach_thread_command) LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */