Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
f64d2688
Commit
f64d2688
authored
Dec 01, 2017
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Move suspending a thread on startup into attach_dlls().
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
c3dd077d
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
11 additions
and
14 deletions
+11
-14
loader.c
dlls/ntdll/loader.c
+5
-3
ntdll_misc.h
dlls/ntdll/ntdll_misc.h
+1
-1
signal_arm.c
dlls/ntdll/signal_arm.c
+1
-2
signal_arm64.c
dlls/ntdll/signal_arm64.c
+1
-2
signal_i386.c
dlls/ntdll/signal_i386.c
+1
-2
signal_powerpc.c
dlls/ntdll/signal_powerpc.c
+1
-2
signal_x86_64.c
dlls/ntdll/signal_x86_64.c
+1
-2
No files found.
dlls/ntdll/loader.c
View file @
f64d2688
...
...
@@ -2990,12 +2990,14 @@ PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule)
* Attach to all the loaded dlls.
* If this is the first time, perform the full process initialization.
*/
NTSTATUS
attach_dlls
(
void
*
reserve
d
)
NTSTATUS
attach_dlls
(
CONTEXT
*
context
,
BOOL
suspen
d
)
{
NTSTATUS
status
;
WINE_MODREF
*
wm
;
LPCWSTR
load_path
=
NtCurrentTeb
()
->
Peb
->
ProcessParameters
->
DllPath
.
Buffer
;
if
(
suspend
)
wait_suspend
(
context
);
pthread_sigmask
(
SIG_UNBLOCK
,
&
server_block_set
,
NULL
);
if
(
process_detaching
)
return
STATUS_SUCCESS
;
...
...
@@ -3029,7 +3031,7 @@ NTSTATUS attach_dlls( void *reserved )
debugstr_w
(
NtCurrentTeb
()
->
Peb
->
ProcessParameters
->
ImagePathName
.
Buffer
),
status
);
NtTerminateProcess
(
GetCurrentProcess
(),
status
);
}
if
((
status
=
process_attach
(
wm
,
reserved
))
!=
STATUS_SUCCESS
)
if
((
status
=
process_attach
(
wm
,
context
))
!=
STATUS_SUCCESS
)
{
if
(
last_failed_modref
)
ERR
(
"%s failed to initialize, aborting
\n
"
,
...
...
@@ -3038,7 +3040,7 @@ NTSTATUS attach_dlls( void *reserved )
debugstr_w
(
NtCurrentTeb
()
->
Peb
->
ProcessParameters
->
ImagePathName
.
Buffer
),
status
);
NtTerminateProcess
(
GetCurrentProcess
(),
status
);
}
attach_implicitly_loaded_dlls
(
reserved
);
attach_implicitly_loaded_dlls
(
context
);
virtual_release_address_space
();
}
else
...
...
dlls/ntdll/ntdll_misc.h
View file @
f64d2688
...
...
@@ -105,7 +105,7 @@ extern NTSTATUS validate_open_object_attributes( const OBJECT_ATTRIBUTES *attr )
/* module handling */
extern
LIST_ENTRY
tls_links
DECLSPEC_HIDDEN
;
extern
NTSTATUS
attach_dlls
(
void
*
unuse
d
)
DECLSPEC_HIDDEN
;
extern
NTSTATUS
attach_dlls
(
CONTEXT
*
context
,
BOOL
suspen
d
)
DECLSPEC_HIDDEN
;
extern
FARPROC
RELAY_GetProcAddress
(
HMODULE
module
,
const
IMAGE_EXPORT_DIRECTORY
*
exports
,
DWORD
exp_size
,
FARPROC
proc
,
DWORD
ordinal
,
const
WCHAR
*
user
)
DECLSPEC_HIDDEN
;
extern
FARPROC
SNOOP_GetProcAddress
(
HMODULE
hmod
,
const
IMAGE_EXPORT_DIRECTORY
*
exports
,
DWORD
exp_size
,
...
...
dlls/ntdll/signal_arm.c
View file @
f64d2688
...
...
@@ -1230,8 +1230,7 @@ static void thread_startup( void *param )
context
.
Sp
=
(
DWORD
)
NtCurrentTeb
()
->
Tib
.
StackBase
;
context
.
Pc
=
(
DWORD
)
call_thread_entry_point
;
if
(
info
->
suspend
)
wait_suspend
(
&
context
);
attach_dlls
(
&
context
);
attach_dlls
(
&
context
,
info
->
suspend
);
set_cpu_context
(
&
context
);
}
...
...
dlls/ntdll/signal_arm64.c
View file @
f64d2688
...
...
@@ -973,8 +973,7 @@ static void thread_startup( void *param )
context
.
Sp
=
(
DWORD_PTR
)
NtCurrentTeb
()
->
Tib
.
StackBase
;
context
.
Pc
=
(
DWORD_PTR
)
call_thread_entry_point
;
if
(
info
->
suspend
)
wait_suspend
(
&
context
);
attach_dlls
(
&
context
);
attach_dlls
(
&
context
,
info
->
suspend
);
call_thread_entry_point
(
(
LPTHREAD_START_ROUTINE
)
context
.
X0
,
(
void
*
)
context
.
X1
);
}
...
...
dlls/ntdll/signal_i386.c
View file @
f64d2688
...
...
@@ -2984,8 +2984,7 @@ void DECLSPEC_HIDDEN call_process_func( LPTHREAD_START_ROUTINE entry, void *arg
*/
void
DECLSPEC_HIDDEN
thread_startup
(
CONTEXT
*
context
,
BOOL
suspend
)
{
if
(
suspend
)
wait_suspend
(
context
);
attach_dlls
(
context
);
attach_dlls
(
context
,
suspend
);
virtual_clear_thread_stack
();
set_cpu_context
(
context
);
}
...
...
dlls/ntdll/signal_powerpc.c
View file @
f64d2688
...
...
@@ -1175,8 +1175,7 @@ static void thread_startup( void *param )
context
.
Gpr4
=
(
DWORD
)
info
->
arg
;
context
.
Iar
=
(
DWORD
)
call_thread_entry_point
;
if
(
info
->
suspend
)
wait_suspend
(
&
context
);
attach_dlls
(
&
context
);
attach_dlls
(
&
context
,
info
->
suspend
);
call_thread_entry_point
(
(
LPTHREAD_START_ROUTINE
)
context
.
Gpr3
,
(
void
*
)
context
.
Gpr4
);
}
...
...
dlls/ntdll/signal_x86_64.c
View file @
f64d2688
...
...
@@ -4145,8 +4145,7 @@ __ASM_GLOBAL_FUNC( call_thread_exit_func,
*/
void
DECLSPEC_HIDDEN
thread_startup
(
CONTEXT
*
context
,
BOOL
suspend
)
{
if
(
suspend
)
wait_suspend
(
context
);
attach_dlls
(
context
);
attach_dlls
(
context
,
suspend
);
virtual_clear_thread_stack
();
set_cpu_context
(
context
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment