Commit 63388ece authored by Vitaly Lipatov's avatar Vitaly Lipatov

commit 20.0.1 upon wine-5.0

parent 4d11c3eb
......@@ -8765,7 +8765,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if xcodebuild -version | egrep -qs 'Xcode 9(\D|$)' ; then
preloader_needs_mmacosx_version_min=yes
fi
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7c400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7c400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist,-segaddr,WINE_4GB_RESERVE,0x100000000"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-no_new_main -e _main" >&5
$as_echo_n "checking whether the compiler supports -Wl,-no_new_main -e _main... " >&6; }
if ${ac_cv_cflags__Wl__no_new_main__e__main+:} false; then :
......
......@@ -805,7 +805,7 @@ case $host_os in
if xcodebuild -version | egrep -qs 'Xcode 9(\D|$)' ; then
preloader_needs_mmacosx_version_min=yes
fi
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7c400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7c400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist,-segaddr,WINE_4GB_RESERVE,0x100000000"
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main],
[WINEPRELOADER_LDFLAGS="-Wl,-no_new_main $WINEPRELOADER_LDFLAGS"
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main -nostartfiles -nodefaultlibs],,
......
......@@ -152,7 +152,7 @@ BOOL WINAPI CRYPT_AsnEncodePubKeyInfoNoNull(DWORD dwCertEncodingType,
*/
HCRYPTPROV WINAPI I_CryptGetDefaultCryptProv(ALG_ID);
HINSTANCE hInstance DECLSPEC_HIDDEN;
extern HINSTANCE hInstance DECLSPEC_HIDDEN;
void crypt_oid_init(void) DECLSPEC_HIDDEN;
void crypt_oid_free(void) DECLSPEC_HIDDEN;
......
......@@ -19,9 +19,9 @@
@ stdcall GetTimestampForLoadedLibrary(long)
@ stdcall ImageDirectoryEntryToData(ptr long long ptr)
@ stdcall ImageDirectoryEntryToDataEx(ptr long long ptr ptr)
@ stdcall ImageNtHeader(ptr) ntdll.RtlImageNtHeader
@ stdcall ImageRvaToSection(ptr ptr long) ntdll.RtlImageRvaToSection
@ stdcall ImageRvaToVa(ptr ptr long ptr) ntdll.RtlImageRvaToVa
@ stdcall -import ImageNtHeader(ptr) RtlImageNtHeader
@ stdcall -import ImageRvaToSection(ptr ptr long) RtlImageRvaToSection
@ stdcall -import ImageRvaToVa(ptr ptr long ptr) RtlImageRvaToVa
@ stdcall ImagehlpApiVersion()
@ stdcall ImagehlpApiVersionEx(ptr)
@ stdcall MakeSureDirectoryPathExists(str)
......
......@@ -1773,10 +1773,9 @@ static BOOL elf_search_loader(struct process* pcs, struct elf_info* elf_info)
if (!pcs->is_64bit)
{
PEB32 *peb32 = (PEB32 *)pbi.PebBaseAddress;
DWORD base32;
if (!ReadProcessMemory( pcs->handle, &peb32->Reserved[0], &base32,
if (!ReadProcessMemory( pcs->handle, (char *)pbi.PebBaseAddress + 0x460 /* CloudFileFlags */, &base32,
sizeof(base32), NULL ))
return FALSE;
......@@ -1784,7 +1783,7 @@ static BOOL elf_search_loader(struct process* pcs, struct elf_info* elf_info)
}
else
{
if (!ReadProcessMemory( pcs->handle, &pbi.PebBaseAddress->Reserved[0],
if (!ReadProcessMemory( pcs->handle, &pbi.PebBaseAddress->CloudFileFlags,
&base, sizeof(base), NULL ))
return FALSE;
}
......
......@@ -1384,19 +1384,18 @@ static ULONG_HOSTPTR get_dyld_image_info_address(struct process* pcs)
{
/* Read dyld image info address from PEB */
if (pcs->is_64bit)
ret = ReadProcessMemory(pcs->handle, &pbi.PebBaseAddress->Reserved[0],
ret = ReadProcessMemory(pcs->handle, &pbi.PebBaseAddress->CloudFileFlags,
&dyld_image_info_address, sizeof(dyld_image_info_address), NULL);
else if (pcs->is_32on64)
{
PEB32 *peb32 = (PEB32 *)pbi.PebBaseAddress;
ret = ReadProcessMemory(pcs->handle, &peb32->Reserved[0], &dyld_image_info_address,
ret = ReadProcessMemory(pcs->handle, (char *)pbi.PebBaseAddress + 0x460 /* CloudFileFlags */, &dyld_image_info_address,
sizeof(dyld_image_info_address), NULL);
}
else
{
PEB32 *peb32 = (PEB32 *)pbi.PebBaseAddress;
ULONG addr32;
ret = ReadProcessMemory(pcs->handle, &peb32->Reserved[0], &addr32,
ret = ReadProcessMemory(pcs->handle, (char *)pbi.PebBaseAddress + 0x460 /* CloudFileFlags */, &addr32,
sizeof(addr32), NULL);
dyld_image_info_address = addr32;
}
......
......@@ -100,7 +100,9 @@ struct tagActiveDS
struct jpeg_decompress_struct jd;
struct jpeg_error_mgr jerr;
#endif
} activeDS DECLSPEC_HIDDEN;
};
extern struct tagActiveDS activeDS DECLSPEC_HIDDEN;
/* Helper functions */
extern TW_UINT16 GPHOTO2_SaneCapability (pTW_CAPABILITY pCapability, TW_UINT16 action) DECLSPEC_HIDDEN;
......
......@@ -35,6 +35,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(twain);
DSMENTRYPROC GPHOTO2_dsmentry;
struct tagActiveDS activeDS;
#ifdef HAVE_GPHOTO2
static char* GPHOTO2_StrDup(const char* str)
{
......
......@@ -843,7 +843,7 @@ static HRESULT BindFunction_call(script_ctx_t *ctx, FunctionInstance *func, IDis
call_argc = function->argc + argc;
if(call_argc) {
call_args = heap_alloc(function->argc * sizeof(*function->args));
call_args = heap_alloc(call_argc * sizeof(*call_args));
if(!call_args)
return E_OUTOFMEMORY;
......
......@@ -287,7 +287,7 @@ BOOL WINAPI GetBinaryTypeA( LPCSTR lpApplicationName, LPDWORD lpBinaryType )
* Success: A pointer to the symbol in the process address space.
* Failure: NULL. Use GetLastError() to determine the cause.
*/
FARPROC get_proc_address( HMODULE hModule, LPCSTR function )
FARPROC WINAPI get_proc_address( HMODULE hModule, LPCSTR function )
{
FARPROC fp;
......@@ -317,7 +317,7 @@ FARPROC get_proc_address( HMODULE hModule, LPCSTR function )
* these registers if the function takes floating point parameters.
* This wrapper saves xmm0 - 3 to the stack.
*/
extern FARPROC get_proc_address_wrapper( HMODULE module, LPCSTR function );
extern FARPROC WINAPI get_proc_address_wrapper( HMODULE module, LPCSTR function );
__ASM_GLOBAL_FUNC( get_proc_address_wrapper,
"pushq %rbp\n\t"
......@@ -327,18 +327,18 @@ __ASM_GLOBAL_FUNC( get_proc_address_wrapper,
"movq %rsp,%rbp\n\t"
__ASM_SEH(".seh_setframe %rbp,0\n\t")
__ASM_CFI(".cfi_def_cfa_register %rbp\n\t")
"subq $0x40,%rsp\n\t"
__ASM_SEH(".seh_stackalloc 0x40\n\t")
__ASM_SEH(".seh_endprologue\n\t")
"movaps %xmm0,-0x10(%rbp)\n\t"
"movaps %xmm1,-0x20(%rbp)\n\t"
"movaps %xmm2,-0x30(%rbp)\n\t"
"movaps %xmm3,-0x40(%rbp)\n\t"
"subq $0x60,%rsp\n\t"
"andq $~15,%rsp\n\t"
"movaps %xmm0,0x20(%rsp)\n\t"
"movaps %xmm1,0x30(%rsp)\n\t"
"movaps %xmm2,0x40(%rsp)\n\t"
"movaps %xmm3,0x50(%rsp)\n\t"
"call " __ASM_NAME("get_proc_address") "\n\t"
"movaps -0x40(%rbp), %xmm3\n\t"
"movaps -0x30(%rbp), %xmm2\n\t"
"movaps -0x20(%rbp), %xmm1\n\t"
"movaps -0x10(%rbp), %xmm0\n\t"
"movaps 0x50(%rsp), %xmm3\n\t"
"movaps 0x40(%rsp), %xmm2\n\t"
"movaps 0x30(%rsp), %xmm1\n\t"
"movaps 0x20(%rsp), %xmm0\n\t"
"leaq 0(%rbp),%rsp\n\t"
__ASM_CFI(".cfi_def_cfa_register %rsp\n\t")
"popq %rbp\n\t"
......@@ -347,7 +347,7 @@ __ASM_GLOBAL_FUNC( get_proc_address_wrapper,
"ret" )
#else /* __x86_64__ && !__i386_on_x86_64__ */
static inline FARPROC get_proc_address_wrapper( HMODULE module, LPCSTR function )
static inline FARPROC WINAPI get_proc_address_wrapper( HMODULE module, LPCSTR function )
{
return get_proc_address( module, function );
}
......
......@@ -109,9 +109,9 @@ static BOOL fetch_module( DWORD process, DWORD flags, LDR_MODULE** ldr_mod, ULON
while (curr != head)
{
if (!*num)
*ldr_mod = HeapAlloc( GetProcessHeap(), 0, sizeof(LDR_MODULE) );
*ldr_mod = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LDR_MODULE) );
else
*ldr_mod = HeapReAlloc( GetProcessHeap(), 0, *ldr_mod,
*ldr_mod = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, *ldr_mod,
(*num + 1) * sizeof(LDR_MODULE) );
if (!*ldr_mod) break;
if (!ReadProcessMemory( hProcess,
......
......@@ -25,6 +25,7 @@
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <unistd.h>
#ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
#endif
......@@ -150,7 +151,8 @@ static void appeared_callback( DADiskRef disk, void * HOSTPTR context )
else
if (guid_ptr) add_volume( device, device, mount_point, DEVICE_HARDDISK_VOL, guid_ptr );
if ((fd = open( device, O_RDONLY )) >= 0)
if (!access( device, R_OK ) &&
(fd = open( device, O_RDONLY )) >= 0)
{
dk_scsi_identify_t dsi;
......
......@@ -1101,6 +1101,10 @@ static HRESULT builtin_propput(DispatchEx *This, func_info_t *func, DISPPARAMS *
}
if(!func->put_vtbl_off) {
if(dispex_compat_mode(This) >= COMPAT_MODE_IE9) {
WARN("No setter\n");
return S_OK;
}
FIXME("No setter\n");
return E_FAIL;
}
......
......@@ -69,7 +69,7 @@
@ stub KiRaiseUserExceptionDispatcher
@ stub KiUserApcDispatcher
@ stub KiUserCallbackDispatcher
@ stub KiUserExceptionDispatcher
@ stdcall -norelay -arch=win64 KiUserExceptionDispatcher(ptr ptr)
# @ stub LdrAccessOutOfProcessResource
@ stdcall LdrAccessResource(long ptr ptr ptr)
@ stdcall LdrAddDllDirectory(ptr ptr)
......
......@@ -286,16 +286,33 @@ static size_t signal_stack_size;
typedef void (*raise_func)( EXCEPTION_RECORD *rec, CONTEXT *context );
typedef struct _CONTEXT_CHUNK
{
LONG Offset;
ULONG Length;
} CONTEXT_CHUNK, *PCONTEXT_CHUNK;
typedef struct _CONTEXT_EX
{
CONTEXT_CHUNK All;
CONTEXT_CHUNK Legacy;
CONTEXT_CHUNK XState;
#ifdef _WIN64
ULONG64 align;
#endif
} CONTEXT_EX, *PCONTEXT_EX;
/* stack layout when calling an exception raise function */
struct stack_layout
{
CONTEXT context;
CONTEXT_EX context_ex;
EXCEPTION_RECORD rec;
ULONG64 rsi;
ULONG64 rdi;
ULONG64 rbp;
ULONG64 rip;
ULONG64 red_zone[16];
ULONG64 align;
};
typedef int (*wine_signal_handler)(unsigned int sig);
......@@ -2616,23 +2633,47 @@ NTSTATUS WINAPI NtRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL
*
* Generic raise function for exceptions that don't need special treatment.
*/
static void raise_generic_exception( EXCEPTION_RECORD *rec, CONTEXT *context )
void WINAPI raise_generic_exception( EXCEPTION_RECORD *rec, CONTEXT *context )
{
NTSTATUS status = raise_exception( rec, context, TRUE );
raise_status( status, rec );
}
void KiUserExceptionDispatcher(void);
/*******************************************************************
* KiUserExceptionDispatcher (NTDLL.@)
*/
__ASM_GLOBAL_FUNC( KiUserExceptionDispatcher,
"mov 0x98(%rsp),%rcx\n\t" /* context->Rsp */
"mov 0xf8(%rsp),%rdx\n\t" /* context->Rip */
"mov %rdx,-0x8(%rcx)\n\t"
"mov %rbp,-0x10(%rcx)\n\t"
"mov %rdi,-0x18(%rcx)\n\t"
"mov %rsi,-0x20(%rcx)\n\t"
"lea -0x20(%rcx),%rbp\n\t"
"mov %rsp,%rdx\n\t" /* context */
"lea 0x4f0(%rsp),%rcx\n\t" /* rec */
__ASM_SEH(".seh_pushreg %rbp\n\t")
__ASM_SEH(".seh_pushreg %rdi\n\t")
__ASM_SEH(".seh_pushreg %rsi\n\t")
__ASM_SEH(".seh_setframe %rbp,0\n\t")
__ASM_SEH(".seh_endprologue\n\t")
__ASM_CFI(".cfi_signal_frame\n\t")
__ASM_CFI(".cfi_adjust_cfa_offset 0x20\n\t")
__ASM_CFI(".cfi_def_cfa %rbp,0x20\n\t")
__ASM_CFI(".cfi_rel_offset %rip,0x18\n\t")
__ASM_CFI(".cfi_rel_offset %rbp,0x10\n\t")
__ASM_CFI(".cfi_rel_offset %rdi,0x8\n\t")
__ASM_CFI(".cfi_rel_offset %rsi,0\n\t")
"call " __ASM_NAME("raise_generic_exception") "\n\t"
"int3")
extern void CDECL raise_func_trampoline( void *dispatcher );
extern void raise_func_trampoline( EXCEPTION_RECORD *rec, CONTEXT *context, raise_func func );
__ASM_GLOBAL_FUNC( raise_func_trampoline,
__ASM_CFI(".cfi_signal_frame\n\t")
__ASM_CFI(".cfi_def_cfa %rbp,160\n\t") /* red zone + rip + rbp + rdi + rsi */
__ASM_CFI(".cfi_rel_offset %rip,24\n\t")
__ASM_CFI(".cfi_rel_offset %rbp,16\n\t")
__ASM_CFI(".cfi_rel_offset %rdi,8\n\t")
__ASM_CFI(".cfi_rel_offset %rsi,0\n\t")
"call *%rdx\n\t"
"int $3")
"jmpq *%r8\n\t")
/***********************************************************************
* setup_exception
......@@ -2714,7 +2755,6 @@ static struct stack_layout *setup_exception( ucontext_t *sigcontext )
static void setup_raise_exception( ucontext_t *sigcontext, struct stack_layout *stack )
{
ULONG64 *rsp_ptr;
NTSTATUS status;
if (stack->rec.ExceptionCode == EXCEPTION_SINGLE_STEP)
......@@ -2742,19 +2782,11 @@ static void setup_raise_exception( ucontext_t *sigcontext, struct stack_layout *
return;
}
/* store return address and %rbp without aligning, so that the offset is fixed */
rsp_ptr = (ULONG64 *)RSP_sig(sigcontext) - 16;
*(--rsp_ptr) = stack->context.Rip;
*(--rsp_ptr) = stack->context.Rbp;
*(--rsp_ptr) = stack->context.Rdi;
*(--rsp_ptr) = stack->context.Rsi;
/* now modify the sigcontext to return to the raise function */
RIP_sig(sigcontext) = (ULONG_PTR)raise_func_trampoline;
RDI_sig(sigcontext) = (ULONG_PTR)&stack->rec;
RSI_sig(sigcontext) = (ULONG_PTR)&stack->context;
RDX_sig(sigcontext) = (ULONG_PTR)raise_generic_exception;
RBP_sig(sigcontext) = (ULONG_PTR)rsp_ptr;
R8_sig(sigcontext) = (ULONG_PTR)KiUserExceptionDispatcher;
RSP_sig(sigcontext) = (ULONG_PTR)stack;
/* clear single-step, direction, and align check flag */
EFL_sig(sigcontext) &= ~(0x100|0x400|0x40000);
......
......@@ -339,7 +339,7 @@ TEB *thread_init(void)
InitializeListHead( &ldr.InLoadOrderModuleList );
InitializeListHead( &ldr.InMemoryOrderModuleList );
InitializeListHead( &ldr.InInitializationOrderModuleList );
*(ULONG_HOSTPTR *)peb->Reserved = get_image_addr();
*(ULONG_HOSTPTR *)&peb->CloudFileFlags = get_image_addr();
#if defined(__APPLE__) && defined(__x86_64__) && !defined(__i386_on_x86_64__)
*((DWORD*)((char*)user_shared_data_external + 0x1000)) = (DWORD)__wine_syscall_dispatcher;
......
......@@ -36,7 +36,7 @@
#include "twain.h"
#ifdef SONAME_LIBSANE
#define MAKE_FUNCPTR(f) typeof(f) * p##f DECLSPEC_HIDDEN;
#define MAKE_FUNCPTR(f) extern typeof(f) * p##f DECLSPEC_HIDDEN;
MAKE_FUNCPTR(sane_init)
MAKE_FUNCPTR(sane_exit)
MAKE_FUNCPTR(sane_get_devices)
......@@ -84,7 +84,9 @@ struct tagActiveDS
TW_FIX32 defaultXResolution;
BOOL YResolutionSet;
TW_FIX32 defaultYResolution;
} activeDS DECLSPEC_HIDDEN;
};
extern struct tagActiveDS activeDS DECLSPEC_HIDDEN;
/* Helper functions */
extern TW_UINT16 SANE_SaneCapability (pTW_CAPABILITY pCapability, TW_UINT16 action) DECLSPEC_HIDDEN;
......
......@@ -31,6 +31,25 @@
WINE_DEFAULT_DEBUG_CHANNEL(twain);
DSMENTRYPROC SANE_dsmentry;
struct tagActiveDS activeDS;
#ifdef SONAME_LIBSANE
#define MAKE_FUNCPTR(f) typeof(f) * p##f;
MAKE_FUNCPTR(sane_init)
MAKE_FUNCPTR(sane_exit)
MAKE_FUNCPTR(sane_get_devices)
MAKE_FUNCPTR(sane_open)
MAKE_FUNCPTR(sane_close)
MAKE_FUNCPTR(sane_get_option_descriptor)
MAKE_FUNCPTR(sane_control_option)
MAKE_FUNCPTR(sane_get_parameters)
MAKE_FUNCPTR(sane_start)
MAKE_FUNCPTR(sane_read)
MAKE_FUNCPTR(sane_cancel)
MAKE_FUNCPTR(sane_set_io_mode)
MAKE_FUNCPTR(sane_get_select_fd)
MAKE_FUNCPTR(sane_strstatus)
#undef MAKE_FUNCPTR
#endif
#ifdef SONAME_LIBSANE
......
......@@ -190,8 +190,8 @@ void SECUR32_arc4Cleanup(arc4_info *a4i) DECLSPEC_HIDDEN;
#define NTLMSSP_NEGOTIATE_56 0x80000000
SecPkgInfoW *ntlm_package_infoW DECLSPEC_HIDDEN;
SecPkgInfoA *ntlm_package_infoA DECLSPEC_HIDDEN;
extern SecPkgInfoW *ntlm_package_infoW DECLSPEC_HIDDEN;
extern SecPkgInfoA *ntlm_package_infoA DECLSPEC_HIDDEN;
/* schannel internal interface */
typedef struct schan_imp_session_opaque *schan_imp_session;
......
......@@ -722,6 +722,15 @@ static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRe
pbBuffer[cbStride*y+4*x+3] = 0xff;
}
return S_OK;
case format_32bppRGBA:
if (prc)
{
HRESULT res;
res = IWICBitmapSource_CopyPixels(This->source, prc, cbStride, cbBufferSize, pbBuffer);
if (FAILED(res)) return res;
reverse_bgr8(4, pbBuffer, prc->Width, prc->Height, cbStride);
}
return S_OK;
case format_32bppBGRA:
if (prc)
return IWICBitmapSource_CopyPixels(This->source, prc, cbStride, cbBufferSize, pbBuffer);
......
......@@ -56,5 +56,5 @@ DEVICE_OBJECT* find_device_by_uid(DWORD uid) DECLSPEC_HIDDEN;
DWORD check_bus_option(const UNICODE_STRING *option, DWORD default_value) DECLSPEC_HIDDEN;
BOOL is_xbox_gamepad(WORD vid, WORD pid) DECLSPEC_HIDDEN;
HANDLE driver_key DECLSPEC_HIDDEN;
DEVICE_OBJECT *bus_pdo DECLSPEC_HIDDEN;
extern HANDLE driver_key DECLSPEC_HIDDEN;
extern DEVICE_OBJECT *bus_pdo DECLSPEC_HIDDEN;
......@@ -104,8 +104,6 @@ static CFRunLoopRef run_loop;
static HANDLE run_loop_handle;
static const WCHAR busidW[] = {'X','B','O','X',0};
#include "initguid.h"
DEFINE_GUID(DEVCLASS, 0x2381EBD6,0x852A,0x464D,0x95,0x2D,0xF8,0x4D,0x08,0x35,0xDE,0xBA);
struct platform_private {
io_object_t object;
......@@ -578,7 +576,7 @@ static void process_IOService_Device(io_object_t object)
if (is_xbox_gamepad(vid,pid))
{
device = bus_create_hid_device(busidW, vid, pid, -1, 1, uid, serial_string,
device = bus_create_hid_device(busidW, vid, pid, 0, 1, uid, serial_string,
1, &xbox_vtbl, sizeof(struct platform_private));
}
else
......@@ -606,7 +604,7 @@ static void process_IOService_Device(io_object_t object)
(*dev)->Release(dev);
}
else
IoInvalidateDeviceRelations(device, BusRelations);
IoInvalidateDeviceRelations(bus_pdo, BusRelations);
}
}
......@@ -631,6 +629,7 @@ static void handle_IOServiceTerminatedCallback(void * HOSTPTR refcon, io_iterato
if (device)
{
cleanupDevice(device);
bus_unlink_hid_device(device);
bus_remove_hid_device(device);
}
IOObjectRelease(object);
......
......@@ -13,4 +13,6 @@ C_SRCS = \
OBJC_SRCS = \
authorization.m
coremidi_EXTRADEFS = $(HOSTSTACK_CFLAGS)
midi_EXTRADEFS = $(HOSTSTACK_CFLAGS)
mmdevdrv_EXTRADEFS = $(HOSTSTACK_CFLAGS)
......@@ -23,6 +23,8 @@
#include <CoreFoundation/CoreFoundation.h>
#include "wine/hostptraddrspace_enter.h"
#ifdef WINE_DEFINITIONS
/*
* Due to CoreMIDI headers conflict redefine some types for Wine
......@@ -81,4 +83,6 @@ extern void MIDIOut_Send(MIDIPortRef port, MIDIEndpointRef dest, UInt8 *buffer,
/* midi.c */
void MIDIIn_SendMessage(MIDIMessage msg);
#include "wine/hostptraddrspace_exit.h"
#endif
......@@ -8567,8 +8567,11 @@ static GLuint find_glsl_fragment_shader(const struct wined3d_context_gl *context
{
unsigned int coord;
coord = shader_find_free_input_register(&shader->reg_maps, context_gl->c.d3d_info->limits.ffp_blend_stages - 1);
/* Store off by one, the code checks against zero */
((struct glsl_shader_private *)shader->backend_data)->clipplane_emulation = coord + 1;
if (coord != ~0u)
{
/* Store off by one, the code checks against zero */
((struct glsl_shader_private *)shader->backend_data)->clipplane_emulation = coord + 1;
}
}
}
shader_data = shader->backend_data;
......
......@@ -1865,9 +1865,13 @@ static void shader_cleanup_reg_maps(struct wined3d_shader_reg_maps *reg_maps)
unsigned int shader_find_free_input_register(const struct wined3d_shader_reg_maps *reg_maps, unsigned int max)
{
DWORD map = 1u << max;
map |= map - 1;
map &= reg_maps->shader_version.major < 3 ? ~reg_maps->texcoord : ~reg_maps->input_registers;
if (!map)
return ~0u;
return wined3d_log2i(map);
}
......
......@@ -928,6 +928,8 @@ better:
size_t width = CGDisplayModeGetWidth(best_display_mode);
size_t height = CGDisplayModeGetHeight(best_display_mode);
macdrv_init_display_devices(TRUE);
if (best_is_original && retina_enabled)
{
width *= 2;
......@@ -937,8 +939,6 @@ better:
SendMessageW(GetDesktopWindow(), WM_MACDRV_UPDATE_DESKTOP_RECT, mode_bpp,
MAKELPARAM(width, height));
ret = DISP_CHANGE_SUCCESSFUL;
macdrv_init_display_devices(TRUE);
}
else
{
......
......@@ -2458,11 +2458,11 @@ void macdrv_window_got_focus(HWND hwnd, const macdrv_event *event)
if (can_activate_window(top) && !(style & WS_MINIMIZE))
{
/* simulate a mouse click on the caption to find out
/* simulate a mouse click on the menu to find out
* whether the window wants to be activated */
LRESULT ma = SendMessageW(top, WM_MOUSEACTIVATE,
(WPARAM)top,
MAKELONG(HTCAPTION,WM_LBUTTONDOWN));
MAKELONG(HTMENU, WM_LBUTTONDOWN));
if (ma != MA_NOACTIVATEANDEAT && ma != MA_NOACTIVATE)
{
TRACE("setting foreground window to %p\n", top);
......
......@@ -288,7 +288,8 @@ typedef struct _PEB
PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 024/048 */
ULONG EnvironmentUpdateCount; /* 028/050 */
PVOID KernelCallbackTable; /* 02c/058 */
ULONG Reserved[2]; /* 030/060 */
ULONG Reserved; /* 030/060 */
ULONG AtlThunkSListPtr32; /* 034/064 */
PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */
ULONG TlsExpansionCounter; /* 03c/070 */
PRTL_BITMAP TlsBitmap; /* 040/078 */
......@@ -341,6 +342,24 @@ typedef struct _PEB
LIST_ENTRY FlsListHead; /* 210/328 */
PRTL_BITMAP FlsBitmap; /* 218/338 */
ULONG FlsBitmapBits[4]; /* 21c/340 */
ULONG FlsHighIndex; /* 22c/350 */
PVOID WerRegistrationData; /* 230/358 */
PVOID WerShipAssertPtr; /* 234/360 */
PVOID pUnused; /* 238/368 */
PVOID pImageHeaderHash; /* 23c/370 */
ULONG TracingFlags; /* 240/378 */
ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 248/380 */
ULONG TppWorkerpListLock; /* 250/388 */
LIST_ENTRY TppWorkerpList; /* 254/390 */
PVOID WaitOnAddressHashTable [0x80]; /* 25c/3a0 */
PVOID TelemetryCoverageHeader; /* 45c/7a0 */
ULONG CloudFileFlags; /* 460/7a8 */
ULONG CloudFileDiagFlags; /* 464/7ac */
CHAR PlaceholderCompatibilityMode; /* 468/7b0 */
CHAR PlaceholderCompatibilityModeReserved[7]; /* 469/7b1 */
PVOID LeapSecondData; /* 470/7b8 */
ULONG LeapSecondFlags; /* 474/7c0 */
ULONG NtGlobalFlag2; /* 478/7c4 */
} PEB, *PPEB;
......
......@@ -54,6 +54,17 @@
#include "wine/asm.h"
#include "main.h"
/* Rosetta on Apple Silicon allocates memory starting at 0x100000000 (the 4GB line)
* before the preloader runs, which prevents any nonrelocatable EXEs with that
* base address from running.
*
* This empty linker section forces Rosetta's allocations (currently ~132 MB)
* to start at 0x114000000, and they should end below 0x120000000.
*/
#if defined(__x86_64__)
__asm__(".zerofill WINE_4GB_RESERVE,WINE_4GB_RESERVE,___wine_4gb_reserve,0x14000000");
#endif
#ifndef LC_MAIN
#define LC_MAIN 0x80000028
struct entry_point_command
......@@ -79,6 +90,7 @@ static struct wine_preload_info preload_info[] =
{ (void *)0x000000010000, 0x00100000 }, /* DOS area */
{ (void *)0x000000110000, 0x67ef0000 }, /* low memory area */
{ (void *)0x00007ff00000, 0x000f0000 }, /* shared user data */
{ (void *)0x000100000000, 0x14000000 }, /* WINE_4GB_RESERVE section */
{ (void *)0x7ffd00000000, 0x01ff0000 }, /* top-down allocations + virtual heap */
#endif /* __i386__ */
{ 0, 0 }, /* PE exe range set with WINEPRELOADRESERVE */
......@@ -430,6 +442,10 @@ static int preloader_overlaps_range( const void *start, const void *end )
struct target_segment_command *seg = (struct target_segment_command*)cmd;
const void *seg_start = (const void*)(seg->vmaddr + slide);
const void *seg_end = (const char*)seg_start + seg->vmsize;
static const char reserved_segname[] = "WINE_4GB_RESERVE";
if (!wld_strncmp( seg->segname, reserved_segname, sizeof(reserved_segname)-1 ))
continue;
if (end > seg_start && start <= seg_end)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment