[PATCH] libwine: Use getsegmentdata(3) on Mac OS to find the end of the __TEXT segment.
Ken Thomases
ken at codeweavers.com
Wed Aug 1 15:42:52 CDT 2018
On Aug 1, 2018, at 3:20 PM, Chip Davis <cdavis at codeweavers.com> wrote:
>
> @@ -425,7 +430,15 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr )
> delta = (const BYTE *)nt_descr - addr;
> code_start = page_size;
> data_start = delta & ~page_mask;
> +#ifdef __APPLE__
> + /* Need the mach_header, not the PE header, to give to getsegmentdata(3) */
> + dladdr(addr, &dli);
> + code_end = getsegmentdata(dli.dli_fbase, "__DATA", &data_size) - addr;
> + data_end = (code_end + data_size + page_mask) & ~page_mask;
> +#else
> + code_end = delta & ~page_mask;
Perhaps just:
code_end = data_start;
here, to avoid a bit of duplication and make the non-Apple behavior crystal clear.
> data_end = (nt->OptionalHeader.SizeOfImage + delta + page_mask) & ~page_mask;
> +#endif
>
> fixup_rva_ptrs( &nt->OptionalHeader.AddressOfEntryPoint, addr, 1 );
>
More information about the wine-devel
mailing list