https://bugs.winehq.org/show_bug.cgi?id=49139 Gen Otsuji <otsugen0000(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #67162|dyn->d_un.d_ptr is already |[patch for description|summed base address |FreeBSD]dyn->d_un.d_ptr is | |already summed by base | |address --- Comment #3 from Gen Otsuji <otsugen0000(a)gmail.com> --- Comment on attachment 67162 --> https://bugs.winehq.org/attachment.cgi?id=67162 [patch for FreeBSD]dyn->d_un.d_ptr is already summed by base address
--- dlls/ntdll/loader.c.orig 2020-04-24 20:09:10.000000000 +0000 +++ dlls/ntdll/loader.c 2020-05-10 20:20:28.755105000 +0000 @@ -1344,7 +1344,21 @@ { case 0x60009990: init_array = (void *)((char *)map->l_addr + dyn->d_un.d_val); break; case 0x60009991: init_arraysz = dyn->d_un.d_val; break; - case 0x60009992: init_func = (void *)((char *)map->l_addr + dyn->d_un.d_val); break; + case 0x60009992: + { + char * addr1 = (char *)map->l_addr; + char * addr2 = (char *)dyn->d_un.d_ptr; + // assumption + if(addr1 < addr2) + { + //FIXME("file:%s : base:%p < addr:%p\n", debugstr_w(wm->ldr.BaseDllName.Buffer), addr1, addr2); + //FIXME("file:%s : base:%p < addr:%p\n", map->l_name, addr1, addr2); + init_func = (void *)((char *)dyn->d_un.d_ptr); + } + else + init_func = (void *)((char *)map->l_addr + dyn->d_un.d_val); + break; + } } }
-- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.