winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
January 2009
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
3 participants
1348 discussions
Start a n
N
ew thread
Alexandre Julliard : user32: Convert wvsprintfA/ W to use an MS ABI vararg list for x86_64.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: fb7acdcb283edeae36e243ec024d6bf4f4db8098 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=fb7acdcb283edeae36e243ec0…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Dec 31 20:46:08 2008 +0100 user32: Convert wvsprintfA/W to use an MS ABI vararg list for x86_64. --- dlls/kernel32/string.c | 10 +++++----- dlls/user32/wsprintf.c | 20 ++++++++++---------- include/windef.h | 12 ++++++++++++ include/winuser.h | 4 ++-- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/dlls/kernel32/string.c b/dlls/kernel32/string.c index ecac281..1f606fd 100644 --- a/dlls/kernel32/string.c +++ b/dlls/kernel32/string.c @@ -36,7 +36,7 @@ static INT (WINAPI *pLoadStringA)(HINSTANCE, UINT, LPSTR, INT); -static INT (WINAPI *pwvsprintfA)(LPSTR, LPCSTR, va_list); +static INT (WINAPI *pwvsprintfA)(LPSTR, LPCSTR, __ms_va_list); /*********************************************************************** @@ -118,7 +118,7 @@ INT WINAPI k32LoadStringA(HINSTANCE instance, UINT resource_id, /*********************************************************************** * k32wvsprintfA (KERNEL32.16) */ -INT WINAPI k32wvsprintfA(LPSTR buffer, LPCSTR spec, va_list args) +INT WINAPI k32wvsprintfA(LPSTR buffer, LPCSTR spec, __ms_va_list args) { if(!pwvsprintfA) pwvsprintfA = user32_proc_address("wvsprintfA"); return (*pwvsprintfA)(buffer, spec, args); @@ -130,12 +130,12 @@ INT WINAPI k32wvsprintfA(LPSTR buffer, LPCSTR spec, va_list args) */ INT WINAPIV k32wsprintfA(LPSTR buffer, LPCSTR spec, ...) { - va_list args; + __ms_va_list args; INT res; - va_start(args, spec); + __ms_va_start(args, spec); res = k32wvsprintfA(buffer, spec, args); - va_end(args); + __ms_va_end(args); return res; } diff --git a/dlls/user32/wsprintf.c b/dlls/user32/wsprintf.c index 7f98bee..6cb4912 100644 --- a/dlls/user32/wsprintf.c +++ b/dlls/user32/wsprintf.c @@ -385,7 +385,7 @@ static INT16 wvsnprintf16( LPSTR buffer, UINT16 maxlen, LPCSTR spec, VA_LIST16 a /*********************************************************************** * wvsnprintfA (internal) */ -static INT wvsnprintfA( LPSTR buffer, UINT maxlen, LPCSTR spec, va_list args ) +static INT wvsnprintfA( LPSTR buffer, UINT maxlen, LPCSTR spec, __ms_va_list args ) { WPRINTF_FORMAT format; LPSTR p = buffer; @@ -488,7 +488,7 @@ static INT wvsnprintfA( LPSTR buffer, UINT maxlen, LPCSTR spec, va_list args ) /*********************************************************************** * wvsnprintfW (internal) */ -static INT wvsnprintfW( LPWSTR buffer, UINT maxlen, LPCWSTR spec, va_list args ) +static INT wvsnprintfW( LPWSTR buffer, UINT maxlen, LPCWSTR spec, __ms_va_list args ) { WPRINTF_FORMAT format; LPWSTR p = buffer; @@ -603,7 +603,7 @@ INT16 WINAPI wvsprintf16( LPSTR buffer, LPCSTR spec, VA_LIST16 args ) /*********************************************************************** * wvsprintfA (USER32.@) */ -INT WINAPI wvsprintfA( LPSTR buffer, LPCSTR spec, va_list args ) +INT WINAPI wvsprintfA( LPSTR buffer, LPCSTR spec, __ms_va_list args ) { INT res = wvsnprintfA( buffer, 1024, spec, args ); return ( res == -1 ) ? 1024 : res; @@ -613,7 +613,7 @@ INT WINAPI wvsprintfA( LPSTR buffer, LPCSTR spec, va_list args ) /*********************************************************************** * wvsprintfW (USER32.@) */ -INT WINAPI wvsprintfW( LPWSTR buffer, LPCWSTR spec, va_list args ) +INT WINAPI wvsprintfW( LPWSTR buffer, LPCWSTR spec, __ms_va_list args ) { INT res = wvsnprintfW( buffer, 1024, spec, args ); return ( res == -1 ) ? 1024 : res; @@ -637,12 +637,12 @@ INT16 WINAPIV wsprintf16( LPSTR buffer, LPCSTR spec, VA_LIST16 valist ) */ INT WINAPIV wsprintfA( LPSTR buffer, LPCSTR spec, ... ) { - va_list valist; + __ms_va_list valist; INT res; - va_start( valist, spec ); + __ms_va_start( valist, spec ); res = wvsnprintfA( buffer, 1024, spec, valist ); - va_end( valist ); + __ms_va_end( valist ); return ( res == -1 ) ? 1024 : res; } @@ -652,11 +652,11 @@ INT WINAPIV wsprintfA( LPSTR buffer, LPCSTR spec, ... ) */ INT WINAPIV wsprintfW( LPWSTR buffer, LPCWSTR spec, ... ) { - va_list valist; + __ms_va_list valist; INT res; - va_start( valist, spec ); + __ms_va_start( valist, spec ); res = wvsnprintfW( buffer, 1024, spec, valist ); - va_end( valist ); + __ms_va_end( valist ); return ( res == -1 ) ? 1024 : res; } diff --git a/include/windef.h b/include/windef.h index 3c9de7a..825255b 100644 --- a/include/windef.h +++ b/include/windef.h @@ -84,6 +84,18 @@ extern "C" { # endif #endif /* __cdecl */ +#ifndef __ms_va_list +# if defined(__x86_64__) && defined (__GNUC__) +# define __ms_va_list __builtin_ms_va_list +# define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg) +# define __ms_va_end(list) __builtin_ms_va_end(list) +# else +# define __ms_va_list va_list +# define __ms_va_start(list,arg) va_start(list,arg) +# define __ms_va_end(list) va_end(list) +# endif +#endif + #ifdef __WINESRC__ #define __ONLY_IN_WINELIB(x) do_not_use_this_in_wine #else diff --git a/include/winuser.h b/include/winuser.h index 8382a07..fd91d92 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -5068,8 +5068,8 @@ WINUSERAPI VOID WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,ULONG_PTR); WINUSERAPI INT WINAPIV wsprintfA(LPSTR,LPCSTR,...); WINUSERAPI INT WINAPIV wsprintfW(LPWSTR,LPCWSTR,...); #define wsprintf WINELIB_NAME_AW(wsprintf) -WINUSERAPI INT WINAPI wvsprintfA(LPSTR,LPCSTR,va_list); -WINUSERAPI INT WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list); +WINUSERAPI INT WINAPI wvsprintfA(LPSTR,LPCSTR,__ms_va_list); +WINUSERAPI INT WINAPI wvsprintfW(LPWSTR,LPCWSTR,__ms_va_list); #define wvsprintf WINELIB_NAME_AW(wvsprintf) /* Undocumented functions */
1
0
0
0
Alexandre Julliard : cmd: Don't include time.h before winsock. h to avoid conflicts.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: aa6f1c730a6e476c36accac678fe85caf2127d44 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=aa6f1c730a6e476c36accac67…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Dec 31 20:05:33 2008 +0100 cmd: Don't include time.h before winsock.h to avoid conflicts. --- programs/cmd/wcmdmain.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 954f5a3..b135a16 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -26,7 +26,6 @@ */ #include "config.h" -#include <time.h> #include "wcmd.h" #include "wine/debug.h"
1
0
0
0
Alexandre Julliard : server: Reorganize some requests to avoid padding, and make remaining padding explicit.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: 8c8c665a3ca8ee957dfa0818e3f19768dfffac82 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8c8c665a3ca8ee957dfa0818e…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Dec 31 15:14:29 2008 +0100 server: Reorganize some requests to avoid padding, and make remaining padding explicit. --- include/wine/server_protocol.h | 22 ++++++++++++---------- server/protocol.def | 20 +++++++++++--------- server/queue.c | 1 + server/trace.c | 22 +++++++++++++--------- tools/make_requests | 1 + 5 files changed, 38 insertions(+), 28 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=8c8c665a3ca8ee957dfa0…
1
0
0
0
Alexandre Julliard : server: Make atom_t an unsigned int to avoid padding issues.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: 0c914e475d0b6cc773c17e88d101a4d17bf932a0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0c914e475d0b6cc773c17e88d…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Dec 30 23:17:52 2008 +0100 server: Make atom_t an unsigned int to avoid padding issues. --- dlls/user32/class.c | 2 +- include/wine/server_protocol.h | 8 ++++---- server/protocol.def | 6 +++--- tools/make_requests | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dlls/user32/class.c b/dlls/user32/class.c index 51e6faf..e94cd2b 100644 --- a/dlls/user32/class.c +++ b/dlls/user32/class.c @@ -135,7 +135,7 @@ static BOOL set_server_info( HWND hwnd, INT offset, LONG_PTR newval, UINT size ) { case GCW_ATOM: req->flags = SET_CLASS_ATOM; - req->atom = newval; + req->atom = LOWORD(newval); case GCL_STYLE: req->flags = SET_CLASS_STYLE; req->style = newval; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 8c958ed..727d22c 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -17,7 +17,7 @@ typedef unsigned int obj_handle_t; typedef unsigned int user_handle_t; -typedef unsigned short atom_t; +typedef unsigned int atom_t; typedef unsigned int process_id_t; typedef unsigned int thread_id_t; typedef unsigned int data_size_t; @@ -148,7 +148,7 @@ typedef __int64 timeout_t; typedef struct { atom_t atom; - short string; + int string; lparam_t data; } property_data_t; @@ -2857,7 +2857,7 @@ struct get_window_info_reply process_id_t pid; thread_id_t tid; atom_t atom; - short int is_unicode; + int is_unicode; }; @@ -5061,6 +5061,6 @@ union generic_reply struct set_window_layered_info_reply set_window_layered_info_reply; }; -#define SERVER_PROTOCOL_VERSION 376 +#define SERVER_PROTOCOL_VERSION 377 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/protocol.def b/server/protocol.def index 996d790..e14aefe 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -33,7 +33,7 @@ typedef unsigned int obj_handle_t; typedef unsigned int user_handle_t; -typedef unsigned short atom_t; +typedef unsigned int atom_t; typedef unsigned int process_id_t; typedef unsigned int thread_id_t; typedef unsigned int data_size_t; @@ -164,7 +164,7 @@ typedef __int64 timeout_t; typedef struct { atom_t atom; /* property atom */ - short string; /* was atom a string originally? */ + int string; /* was atom a string originally? */ lparam_t data; /* data stored in property */ } property_data_t; @@ -2106,7 +2106,7 @@ enum message_type process_id_t pid; /* process owning the window */ thread_id_t tid; /* thread owning the window */ atom_t atom; /* class atom */ - short int is_unicode; /* ANSI or unicode */ + int is_unicode; /* ANSI or unicode */ @END diff --git a/tools/make_requests b/tools/make_requests index 90203ae..31301ce 100755 --- a/tools/make_requests +++ b/tools/make_requests @@ -31,7 +31,7 @@ my %formats = "unsigned int" => [ 4, 4, "%08x" ], "data_size_t" => [ 4, 4, "%u" ], "obj_handle_t" => [ 4, 4, "%04x" ], - "atom_t" => [ 2, 2, "%04x" ], + "atom_t" => [ 4, 4, "%04x" ], "user_handle_t" => [ 4, 4, "%08x" ], "process_id_t" => [ 4, 4, "%04x" ], "thread_id_t" => [ 4, 4, "%04x" ],
1
0
0
0
Alexandre Julliard : server: Make TEB and PEB client_ptr_t instead of void pointers.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: fa8643805b9ffd07185939f2e673c3fb8dea9bbd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=fa8643805b9ffd07185939f2e…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Dec 30 23:02:33 2008 +0100 server: Make TEB and PEB client_ptr_t instead of void pointers. --- dlls/kernel32/debugger.c | 4 ++-- dlls/ntdll/process.c | 2 +- dlls/ntdll/server.c | 4 ++-- dlls/ntdll/thread.c | 2 +- include/wine/server_protocol.h | 18 +++++++++--------- server/process.c | 4 ++-- server/process.h | 2 +- server/protocol.def | 16 ++++++++-------- server/thread.c | 10 +++++----- server/thread.h | 2 +- server/trace.c | 34 ++++++++++++++++++++++------------ tools/make_requests | 1 - 12 files changed, 54 insertions(+), 45 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=fa8643805b9ffd0718593…
1
0
0
0
Alexandre Julliard : server: Make thread entry points client_ptr_t instead of void pointers.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: c6c335d70e1495c03821e6227ef715dcb71594b7 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c6c335d70e1495c03821e6227…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Dec 30 22:56:15 2008 +0100 server: Make thread entry points client_ptr_t instead of void pointers. --- dlls/kernel32/debugger.c | 4 +- dlls/ntdll/server.c | 4 +- include/wine/server_protocol.h | 13 +++++------ server/debugger.c | 44 ++++++++++++++++++++------------------- server/object.h | 4 +- server/process.c | 2 +- server/protocol.def | 11 ++++----- server/thread.c | 2 +- server/trace.c | 25 ++++++++++++++-------- 9 files changed, 58 insertions(+), 51 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=c6c335d70e1495c03821e…
1
0
0
0
Alexandre Julliard : server: Move ldt_copy to the init_process_done request and make it a client_ptr_t.
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: 2cf868c0be353362e94186442f23d210beccdae7 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2cf868c0be353362e94186442…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Dec 30 22:47:48 2008 +0100 server: Move ldt_copy to the init_process_done request and make it a client_ptr_t. --- dlls/ntdll/server.c | 10 ++++++---- include/wine/server_protocol.h | 5 +++-- server/mach.c | 5 ++--- server/process.c | 4 +++- server/process.h | 2 +- server/procfs.c | 11 ++++++++--- server/protocol.def | 3 ++- server/ptrace.c | 4 ++-- server/thread.c | 3 +-- server/trace.c | 5 ++++- 10 files changed, 32 insertions(+), 20 deletions(-) diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index 04d9c21..95bba73 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -993,9 +993,12 @@ NTSTATUS server_init_process_done(void) /* Signal the parent process to continue */ SERVER_START_REQ( init_process_done ) { - req->module = wine_server_client_ptr( peb->ImageBaseAddress ); - req->entry = (char *)peb->ImageBaseAddress + nt->OptionalHeader.AddressOfEntryPoint; - req->gui = (nt->OptionalHeader.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_CUI); + req->module = wine_server_client_ptr( peb->ImageBaseAddress ); +#ifdef __i386__ + req->ldt_copy = wine_server_client_ptr( &wine_ldt_copy ); +#endif + req->entry = (char *)peb->ImageBaseAddress + nt->OptionalHeader.AddressOfEntryPoint; + req->gui = (nt->OptionalHeader.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_CUI); status = wine_server_call( req ); } SERVER_END_REQ; @@ -1048,7 +1051,6 @@ size_t server_init_thread( int unix_pid, int unix_tid, void *entry_point ) req->teb = NtCurrentTeb(); req->peb = NtCurrentTeb()->Peb; req->entry = entry_point; - req->ldt_copy = &wine_ldt_copy; req->reply_fd = reply_pipe[1]; req->wait_fd = ntdll_get_thread_data()->wait_fd[1]; req->debug_level = (TRACE_ON(server) != 0); diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 1b34cf3..1a8f0de 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -542,6 +542,7 @@ struct init_process_done_request struct request_header __header; int gui; mod_handle_t module; + client_ptr_t ldt_copy; void* entry; }; struct init_process_done_reply @@ -560,7 +561,7 @@ struct init_thread_request void* teb; void* peb; void* entry; - void* ldt_copy; + int unused; int reply_fd; int wait_fd; }; @@ -5061,6 +5062,6 @@ union generic_reply struct set_window_layered_info_reply set_window_layered_info_reply; }; -#define SERVER_PROTOCOL_VERSION 373 +#define SERVER_PROTOCOL_VERSION 374 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/mach.c b/server/mach.c index 05652ab..fcc87a3 100644 --- a/server/mach.c +++ b/server/mach.c @@ -446,9 +446,8 @@ void get_selector_entry( struct thread *thread, int entry, unsigned int *base, if ((ret = task_suspend( process_port )) == KERN_SUCCESS) { - void *ptr = process->ldt_copy; - vm_offset_t offset = (unsigned long)ptr % page_size; - vm_address_t aligned_address = (vm_address_t)((char *)ptr - offset); + vm_offset_t offset = process->ldt_copy % page_size; + vm_address_t aligned_address = (vm_address_t)(process->ldt_copy - offset); vm_size_t aligned_size = (total_size + offset + page_size - 1) / page_size * page_size; ret = vm_read( process_port, aligned_address, aligned_size, &data, &bytes_read ); diff --git a/server/process.c b/server/process.c index 208fb7d..a0c66ab 100644 --- a/server/process.c +++ b/server/process.c @@ -332,7 +332,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit process->idle_event = NULL; process->queue = NULL; process->peb = NULL; - process->ldt_copy = NULL; + process->ldt_copy = 0; process->winstation = 0; process->desktop = 0; process->token = NULL; @@ -1018,6 +1018,8 @@ DECL_HANDLER(init_process_done) list_remove( &dll->entry ); list_add_head( &process->dlls, &dll->entry ); + process->ldt_copy = req->ldt_copy; + generate_startup_debug_events( process, req->entry ); set_process_startup_state( process, STARTUP_DONE ); diff --git a/server/process.h b/server/process.h index c8313ff..5d3b456 100644 --- a/server/process.h +++ b/server/process.h @@ -80,7 +80,7 @@ struct process struct token *token; /* security token associated with this process */ struct list dlls; /* list of loaded dlls */ void *peb; /* PEB address in client address space */ - void *ldt_copy; /* pointer to LDT copy in client addr space */ + client_ptr_t ldt_copy; /* pointer to LDT copy in client addr space */ unsigned int trace_data; /* opaque data used by the process tracing mechanism */ }; diff --git a/server/procfs.c b/server/procfs.c index 8c789c5..28777d8 100644 --- a/server/procfs.c +++ b/server/procfs.c @@ -174,10 +174,15 @@ void get_selector_entry( struct thread *thread, int entry, unsigned int *base, unsigned int *limit, unsigned char *flags ) { ssize_t ret; - off_t pos = (off_t)thread->process->ldt_copy; - int fd = open_proc_as( thread->process, O_RDONLY ); + off_t pos = thread->process->ldt_copy; + int fd; - if (fd == -1) return; + if (!pos) + { + set_error( STATUS_ACCESS_DENIED ); + return 0; + } + if ((fd = open_proc_as( thread->process, O_RDONLY )) == -1) return; ret = pread( fd, base, sizeof(*base), pos + entry*sizeof(int) ); if (ret != sizeof(*base)) goto error; diff --git a/server/protocol.def b/server/protocol.def index 83fc7b8..e5c9676 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -536,6 +536,7 @@ typedef union @REQ(init_process_done) int gui; /* is it a GUI process? */ mod_handle_t module; /* main module base address */ + client_ptr_t ldt_copy; /* address of LDT copy (in thread address space) */ void* entry; /* process entry point */ @END @@ -548,7 +549,7 @@ typedef union void* teb; /* TEB of new thread (in thread address space) */ void* peb; /* address of PEB (in thread address space) */ void* entry; /* thread entry point (in thread address space) */ - void* ldt_copy; /* address of LDT copy (in thread address space) */ + int unused; /* was: ldt_copy */ int reply_fd; /* fd for reply pipe */ int wait_fd; /* fd for blocking calls pipe */ @REPLY diff --git a/server/ptrace.c b/server/ptrace.c index accaf4d..b446de9 100644 --- a/server/ptrace.c +++ b/server/ptrace.c @@ -505,10 +505,10 @@ void get_selector_entry( struct thread *thread, int entry, unsigned int *base, if (suspend_for_ptrace( thread )) { unsigned char flags_buf[4]; - int *addr = (int *)thread->process->ldt_copy + entry; + int *addr = (int *)(unsigned long)thread->process->ldt_copy + entry; if (read_thread_int( thread, addr, (int *)base ) == -1) goto done; if (read_thread_int( thread, addr + 8192, (int *)limit ) == -1) goto done; - addr = (int *)thread->process->ldt_copy + 2*8192 + (entry >> 2); + addr = (int *)(unsigned long)thread->process->ldt_copy + 2*8192 + (entry >> 2); if (read_thread_int( thread, addr, (int *)flags_buf ) == -1) goto done; *flags = flags_buf[entry & 3]; done: diff --git a/server/thread.c b/server/thread.c index bc4e9e9..675deda 100644 --- a/server/thread.c +++ b/server/thread.c @@ -1032,7 +1032,7 @@ DECL_HANDLER(init_thread) if (!(current->wait_fd = create_anonymous_fd( &thread_fd_ops, wait_fd, ¤t->obj, 0 ))) return; - if (!is_valid_address(req->teb) || !is_valid_address(req->peb) || !is_valid_address(req->ldt_copy)) + if (!is_valid_address(req->teb) || !is_valid_address(req->peb)) { set_error( STATUS_INVALID_PARAMETER ); return; @@ -1046,7 +1046,6 @@ DECL_HANDLER(init_thread) { process->unix_pid = current->unix_pid; process->peb = req->peb; - process->ldt_copy = req->ldt_copy; reply->info_size = init_process( current ); } else diff --git a/server/trace.c b/server/trace.c index b4ea418..db67b2a 100644 --- a/server/trace.c +++ b/server/trace.c @@ -971,6 +971,9 @@ static void dump_init_process_done_request( const struct init_process_done_reque fprintf( stderr, " module=" ); dump_uint64( &req->module ); fprintf( stderr, "," ); + fprintf( stderr, " ldt_copy=" ); + dump_uint64( &req->ldt_copy ); + fprintf( stderr, "," ); fprintf( stderr, " entry=%p", req->entry ); } @@ -982,7 +985,7 @@ static void dump_init_thread_request( const struct init_thread_request *req ) fprintf( stderr, " teb=%p,", req->teb ); fprintf( stderr, " peb=%p,", req->peb ); fprintf( stderr, " entry=%p,", req->entry ); - fprintf( stderr, " ldt_copy=%p,", req->ldt_copy ); + fprintf( stderr, " unused=%d,", req->unused ); fprintf( stderr, " reply_fd=%d,", req->reply_fd ); fprintf( stderr, " wait_fd=%d", req->wait_fd ); }
1
0
0
0
Alexandre Julliard : server: Send the version with the initial fd so that it can be checked before sending the first request .
by Alexandre Julliard
02 Jan '09
02 Jan '09
Module: wine Branch: master Commit: 1d2d0d562243fd0f57f780ac0f1fc90799200577 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1d2d0d562243fd0f57f780ac0…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Dec 30 22:37:25 2008 +0100 server: Send the version with the initial fd so that it can be checked before sending the first request. --- dlls/ntdll/server.c | 21 ++++++++++----------- server/process.c | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index 8345a93..04d9c21 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -934,7 +934,7 @@ static void send_server_task_port(void) */ void server_init_process(void) { - obj_handle_t dummy_handle; + obj_handle_t version; const char *env_socket = getenv( "WINESERVERSOCKET" ); if (env_socket) @@ -958,8 +958,15 @@ void server_init_process(void) pthread_functions.sigprocmask( SIG_BLOCK, &server_block_set, NULL ); /* receive the first thread request fd on the main socket */ - ntdll_get_thread_data()->request_fd = receive_fd( &dummy_handle ); + ntdll_get_thread_data()->request_fd = receive_fd( &version ); + if (version != SERVER_PROTOCOL_VERSION) + server_protocol_error( "version mismatch %d/%d.\n" + "Your %s binary was not upgraded correctly,\n" + "or you have an older one somewhere in your PATH.\n" + "Or maybe the wrong wineserver is still running?\n", + version, SERVER_PROTOCOL_VERSION, + (version > SERVER_PROTOCOL_VERSION) ? "wine" : "wineserver" ); #ifdef __APPLE__ send_server_task_port(); #endif @@ -1004,7 +1011,7 @@ NTSTATUS server_init_process_done(void) */ size_t server_init_thread( int unix_pid, int unix_tid, void *entry_point ) { - int version, ret; + int ret; int reply_pipe[2]; struct sigaction sig_act; size_t info_size; @@ -1049,18 +1056,10 @@ size_t server_init_thread( int unix_pid, int unix_tid, void *entry_point ) NtCurrentTeb()->ClientId.UniqueProcess = ULongToHandle(reply->pid); NtCurrentTeb()->ClientId.UniqueThread = ULongToHandle(reply->tid); info_size = reply->info_size; - version = reply->version; server_start_time = reply->server_start; } SERVER_END_REQ; if (ret) server_protocol_error( "init_thread failed with status %x\n", ret ); - if (version != SERVER_PROTOCOL_VERSION) - server_protocol_error( "version mismatch %d/%d.\n" - "Your %s binary was not upgraded correctly,\n" - "or you have an older one somewhere in your PATH.\n" - "Or maybe the wrong wineserver is still running?\n", - version, SERVER_PROTOCOL_VERSION, - (version > SERVER_PROTOCOL_VERSION) ? "wine" : "wineserver" ); return info_size; } diff --git a/server/process.c b/server/process.c index c2936c5..208fb7d 100644 --- a/server/process.c +++ b/server/process.c @@ -377,7 +377,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit file_set_error(); goto error; } - if (send_client_fd( process, request_pipe[1], 0 ) == -1) + if (send_client_fd( process, request_pipe[1], SERVER_PROTOCOL_VERSION ) == -1) { close( request_pipe[0] ); close( request_pipe[1] );
1
0
0
0
← Newer
1
...
132
133
134
135
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Results per page:
10
25
50
100
200