Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
78ab8aa4
Commit
78ab8aa4
authored
Sep 11, 2017
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll: Trace views once they are properly initialized.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
8dc8b3e9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
13 deletions
+17
-13
virtual.c
dlls/ntdll/virtual.c
+17
-13
No files found.
dlls/ntdll/virtual.c
View file @
78ab8aa4
...
@@ -312,13 +312,15 @@ static void VIRTUAL_DumpView( struct file_view *view )
...
@@ -312,13 +312,15 @@ static void VIRTUAL_DumpView( struct file_view *view )
TRACE
(
"View: %p - %p"
,
addr
,
addr
+
view
->
size
-
1
);
TRACE
(
"View: %p - %p"
,
addr
,
addr
+
view
->
size
-
1
);
if
(
view
->
protect
&
VPROT_SYSTEM
)
if
(
view
->
protect
&
VPROT_SYSTEM
)
TRACE
(
" (system)
\n
"
);
TRACE
(
" (builtin image)
\n
"
);
else
if
(
view
->
protect
&
VPROT_VALLOC
)
else
if
(
view
->
protect
&
SEC_IMAGE
)
TRACE
(
" (valloc)
\n
"
);
TRACE
(
" (image) %p
\n
"
,
view
->
mapping
);
else
if
(
view
->
mapping
)
else
if
(
view
->
protect
&
SEC_FILE
)
TRACE
(
" %p
\n
"
,
view
->
mapping
);
TRACE
(
" (file) %p
\n
"
,
view
->
mapping
);
else
if
(
view
->
protect
&
(
SEC_RESERVE
|
SEC_COMMIT
))
TRACE
(
" (anonymous) %p
\n
"
,
view
->
mapping
);
else
else
TRACE
(
" (
anonymous
)
\n
"
);
TRACE
(
" (
valloc
)
\n
"
);
for
(
count
=
i
=
1
;
i
<
view
->
size
>>
page_shift
;
i
++
,
count
++
)
for
(
count
=
i
=
1
;
i
<
view
->
size
>>
page_shift
;
i
++
,
count
++
)
{
{
...
@@ -711,7 +713,6 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
...
@@ -711,7 +713,6 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
wine_rb_put
(
&
views_tree
,
view
->
base
,
&
view
->
entry
);
wine_rb_put
(
&
views_tree
,
view
->
base
,
&
view
->
entry
);
*
view_ret
=
view
;
*
view_ret
=
view
;
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
if
(
force_exec_prot
&&
(
unix_prot
&
PROT_READ
)
&&
!
(
unix_prot
&
PROT_EXEC
))
if
(
force_exec_prot
&&
(
unix_prot
&
PROT_READ
)
&&
!
(
unix_prot
&
PROT_EXEC
))
{
{
...
@@ -849,15 +850,11 @@ static BOOL VIRTUAL_SetProt( struct file_view *view, /* [in] Pointer to view */
...
@@ -849,15 +850,11 @@ static BOOL VIRTUAL_SetProt( struct file_view *view, /* [in] Pointer to view */
{
{
int
unix_prot
=
VIRTUAL_GetUnixProt
(
vprot
);
int
unix_prot
=
VIRTUAL_GetUnixProt
(
vprot
);
TRACE
(
"%p-%p %s
\n
"
,
base
,
(
char
*
)
base
+
size
-
1
,
VIRTUAL_GetProtStr
(
vprot
)
);
if
(
view
->
protect
&
VPROT_WRITEWATCH
)
if
(
view
->
protect
&
VPROT_WRITEWATCH
)
{
{
/* each page may need different protections depending on write watch flag */
/* each page may need different protections depending on write watch flag */
set_page_vprot_bits
(
base
,
size
,
vprot
&
~
VPROT_WRITEWATCH
,
~
vprot
&
~
VPROT_WRITEWATCH
);
set_page_vprot_bits
(
base
,
size
,
vprot
&
~
VPROT_WRITEWATCH
,
~
vprot
&
~
VPROT_WRITEWATCH
);
mprotect_range
(
view
,
base
,
size
,
0
,
0
);
mprotect_range
(
view
,
base
,
size
,
0
,
0
);
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
return
TRUE
;
return
TRUE
;
}
}
...
@@ -869,7 +866,6 @@ static BOOL VIRTUAL_SetProt( struct file_view *view, /* [in] Pointer to view */
...
@@ -869,7 +866,6 @@ static BOOL VIRTUAL_SetProt( struct file_view *view, /* [in] Pointer to view */
{
{
set_page_vprot
(
base
,
size
,
vprot
);
set_page_vprot
(
base
,
size
,
vprot
);
mprotect
(
base
,
size
,
unix_prot
);
mprotect
(
base
,
size
,
unix_prot
);
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
return
TRUE
;
return
TRUE
;
}
}
...
@@ -877,7 +873,6 @@ static BOOL VIRTUAL_SetProt( struct file_view *view, /* [in] Pointer to view */
...
@@ -877,7 +873,6 @@ static BOOL VIRTUAL_SetProt( struct file_view *view, /* [in] Pointer to view */
return
FALSE
;
return
FALSE
;
set_page_vprot
(
base
,
size
,
vprot
);
set_page_vprot
(
base
,
size
,
vprot
);
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
return
TRUE
;
return
TRUE
;
}
}
...
@@ -1482,6 +1477,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, char *base, SIZE_T total_siz
...
@@ -1482,6 +1477,7 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, char *base, SIZE_T total_siz
done:
done:
view
->
mapping
=
dup_mapping
;
view
->
mapping
=
dup_mapping
;
view
->
map_protect
=
map_vprot
;
view
->
map_protect
=
map_vprot
;
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
*
addr_ptr
=
ptr
;
*
addr_ptr
=
ptr
;
...
@@ -1651,6 +1647,7 @@ NTSTATUS virtual_create_builtin_view( void *module )
...
@@ -1651,6 +1647,7 @@ NTSTATUS virtual_create_builtin_view( void *module )
if
(
sec
[
i
].
Characteristics
&
IMAGE_SCN_MEM_WRITE
)
flags
|=
VPROT_WRITE
;
if
(
sec
[
i
].
Characteristics
&
IMAGE_SCN_MEM_WRITE
)
flags
|=
VPROT_WRITE
;
set_page_vprot
(
(
char
*
)
base
+
sec
[
i
].
VirtualAddress
,
sec
[
i
].
Misc
.
VirtualSize
,
flags
);
set_page_vprot
(
(
char
*
)
base
+
sec
[
i
].
VirtualAddress
,
sec
[
i
].
Misc
.
VirtualSize
,
flags
);
}
}
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
}
}
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
return
status
;
return
status
;
...
@@ -1692,6 +1689,7 @@ NTSTATUS virtual_alloc_thread_stack( TEB *teb, SIZE_T reserve_size, SIZE_T commi
...
@@ -1692,6 +1689,7 @@ NTSTATUS virtual_alloc_thread_stack( TEB *teb, SIZE_T reserve_size, SIZE_T commi
VIRTUAL_SetProt
(
view
,
view
->
base
,
page_size
,
VPROT_COMMITTED
);
VIRTUAL_SetProt
(
view
,
view
->
base
,
page_size
,
VPROT_COMMITTED
);
VIRTUAL_SetProt
(
view
,
(
char
*
)
view
->
base
+
page_size
,
page_size
,
VIRTUAL_SetProt
(
view
,
(
char
*
)
view
->
base
+
page_size
,
page_size
,
VPROT_READ
|
VPROT_WRITE
|
VPROT_COMMITTED
|
VPROT_GUARD
);
VPROT_READ
|
VPROT_WRITE
|
VPROT_COMMITTED
|
VPROT_GUARD
);
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
/* note: limit is lower than base since the stack grows down */
/* note: limit is lower than base since the stack grows down */
teb
->
DeallocationStack
=
view
->
base
;
teb
->
DeallocationStack
=
view
->
base
;
...
@@ -2119,6 +2117,7 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_
...
@@ -2119,6 +2117,7 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_
status
=
allocate_dos_memory
(
&
view
,
vprot
);
status
=
allocate_dos_memory
(
&
view
,
vprot
);
if
(
status
==
STATUS_SUCCESS
)
if
(
status
==
STATUS_SUCCESS
)
{
{
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
*
ret
=
view
->
base
;
*
ret
=
view
->
base
;
*
size_ptr
=
view
->
size
;
*
size_ptr
=
view
->
size
;
}
}
...
@@ -2180,6 +2179,8 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_
...
@@ -2180,6 +2179,8 @@ NTSTATUS WINAPI NtAllocateVirtualMemory( HANDLE process, PVOID *ret, ULONG zero_
}
}
}
}
if
(
!
status
)
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
if
(
use_locks
)
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
if
(
use_locks
)
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
if
(
status
==
STATUS_SUCCESS
)
if
(
status
==
STATUS_SUCCESS
)
...
@@ -2378,6 +2379,8 @@ NTSTATUS WINAPI NtProtectVirtualMemory( HANDLE process, PVOID *addr_ptr, SIZE_T
...
@@ -2378,6 +2379,8 @@ NTSTATUS WINAPI NtProtectVirtualMemory( HANDLE process, PVOID *addr_ptr, SIZE_T
}
}
else
status
=
STATUS_INVALID_PARAMETER
;
else
status
=
STATUS_INVALID_PARAMETER
;
if
(
!
status
)
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
server_leave_uninterrupted_section
(
&
csVirtual
,
&
sigset
);
if
(
status
==
STATUS_SUCCESS
)
if
(
status
==
STATUS_SUCCESS
)
...
@@ -2891,6 +2894,7 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p
...
@@ -2891,6 +2894,7 @@ NTSTATUS WINAPI NtMapViewOfSection( HANDLE handle, HANDLE process, PVOID *addr_p
view
->
mapping
=
dup_mapping
;
view
->
mapping
=
dup_mapping
;
view
->
map_protect
=
map_vprot
;
view
->
map_protect
=
map_vprot
;
dup_mapping
=
0
;
/* don't close it */
dup_mapping
=
0
;
/* don't close it */
VIRTUAL_DEBUG_DUMP_VIEW
(
view
);
}
}
else
else
{
{
...
...
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