Propagate pagezero_vmsize; fix overlay_offset.
modified: p_mach.cpp
This commit is contained in:
+4
-1
@@ -558,7 +558,7 @@ template <class T>
|
|||||||
void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
||||||
{
|
{
|
||||||
// offset of p_info in compressed file
|
// offset of p_info in compressed file
|
||||||
overlay_offset = secTEXT.addr + sizeof(linfo);
|
overlay_offset = secTEXT.offset + sizeof(linfo);
|
||||||
super::pack4(fo, ft);
|
super::pack4(fo, ft);
|
||||||
|
|
||||||
if (Mach_header::MH_EXECUTE == my_filetype) {
|
if (Mach_header::MH_EXECUTE == my_filetype) {
|
||||||
@@ -612,6 +612,9 @@ void PackMachBase<T>::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
|||||||
case Mach_command::LC_SEGMENT: // fall through
|
case Mach_command::LC_SEGMENT: // fall through
|
||||||
case Mach_command::LC_SEGMENT_64: {
|
case Mach_command::LC_SEGMENT_64: {
|
||||||
Mach_segment_command *const segptr = (Mach_segment_command *)lcp;
|
Mach_segment_command *const segptr = (Mach_segment_command *)lcp;
|
||||||
|
if (!strcmp("__PAGEZERO", segptr->segname)) {
|
||||||
|
segptr->vmsize = pagezero_vmsize;
|
||||||
|
}
|
||||||
if (!strcmp("__TEXT", segptr->segname)) {
|
if (!strcmp("__TEXT", segptr->segname)) {
|
||||||
sectxt = (Mach_section_command *)(1+ segptr);
|
sectxt = (Mach_section_command *)(1+ segptr);
|
||||||
txt_addr = sectxt->addr;
|
txt_addr = sectxt->addr;
|
||||||
|
|||||||
Reference in New Issue
Block a user