Sweden-Number/programs
Jinoh Kang f18c0db314 winedbg: Cache GDB qXfer command result for chunked fetching.
GDB does not retrieve the result of a qXfer command at once; instead, it
issues a series of requests to obtain the result one "chunk" at a time,
and concatenates those chunks internally.  Each request contains offset
and length variables that specify which portion of the result shall be
retrieved.

Today, Winedbg handles this by generating the entire result data each
time a request is received and slicing out the requested range for the
response.  This is not only inefficient due to repeated computation,
but also prone to race condition since the result may change between
successive chunk requests due to the dynamic nature of some commands
such as "libraries" and "threads."

Fix this by cacheing the result into a buffer at the first request, and
use the buffer to serve successive chunk requests.  The cache is
invalidated when the remote requests a different object, or the debugger
reaches the end of the result cache buffer.

Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-23 21:02:13 +01:00
..
arp makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
aspnet_regiis makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
attrib attrib: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:00:16 +02:00
cabarc makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
cacls makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
chcp.com makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
clock makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
cmd cmd: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:00:27 +02:00
conhost conhost: Only use the maximum character width if a double-byte character set is in use. 2021-11-23 13:38:23 +01:00
control makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
cscript makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
dism makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
dplaysvr makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
dpnsvr makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
dpvsetup makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
dxdiag makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
eject makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
expand expand: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:00:40 +02:00
explorer explorer: Set lib name for null driver. 2021-11-10 18:57:27 +01:00
extrac32 makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
fc makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
find makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
findstr makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
fsutil fsutil: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:00:46 +02:00
hh makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
hostname hostname: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:00:55 +02:00
icacls makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
icinfo icinfo: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:01:02 +02:00
iexplore makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
ipconfig ipconfig: Print primary DNS suffix. 2021-11-09 22:02:55 +01:00
lodctr makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
mofcomp makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
mshta makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
msidb makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
msiexec msiexec: Append .msi extension to file name if file is not found. 2021-11-08 10:49:26 +01:00
msinfo32 makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
net net: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:01:16 +02:00
netsh makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
netstat netstat: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:01:22 +02:00
ngen makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
notepad makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
oleview makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
ping makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
plugplay makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
powershell makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
presentationfontcache makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
progman makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
reg reg: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:01:29 +02:00
regasm makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
regedit regedit: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:01:38 +02:00
regini makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
regsvcs makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
regsvr32 regsvr32: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:01:45 +02:00
robocopy robocopy: Add stub. 2021-10-18 21:26:10 +02:00
rpcss makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
rundll.exe16 makefiles: Always build 16-bit modules with msvcrt. 2020-04-02 11:09:19 +02:00
rundll32 makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
sc makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
schtasks makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
sdbinst makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
secedit makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
servicemodelreg makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
services services: Terminate all service processes on shutdown. 2021-11-12 22:42:51 +01:00
shutdown makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
spoolsv makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
start makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
subst makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
svchost makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
systeminfo makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
taskkill taskkill: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:02:04 +02:00
tasklist makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
taskmgr makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
termsv makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
uninstaller uninstaller: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:02:12 +02:00
unlodctr makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
view makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
wevtutil makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
where makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
whoami makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
wineboot makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winebrowser winebrowser: Build with msvcrt. 2021-09-27 17:40:14 +02:00
winecfg winecfg: Add the command line options to the man page. 2021-11-17 17:59:26 +01:00
wineconsole makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winedbg winedbg: Cache GDB qXfer command result for chunked fetching. 2021-11-23 21:02:13 +01:00
winedevice makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winefile winefile: Set size before calling RegQueryValueExW(). 2021-10-20 11:22:30 +02:00
winemenubuilder winemenubuilder: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:02:26 +02:00
winemine makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winemsibuilder makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winepath makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winetest winetest: Don't truncate oversize reports before sending them. 2021-10-28 18:25:16 +02:00
winevdm Revert "winevdm: Enable visual styles.". 2021-10-18 10:47:56 +02:00
winhelp.exe16 makefiles: Always build 16-bit modules with msvcrt. 2020-04-02 11:09:19 +02:00
winhlp32 makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winmgmt makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
winoldap.mod16 makefiles: Always build 16-bit modules with msvcrt. 2020-04-02 11:09:19 +02:00
winver makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
wmic wmic: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:03:00 +02:00
wmplayer makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
wordpad makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
write makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
wscript makefiles: Directly generate resources also for non-registered typelibs. 2021-11-16 10:22:51 +01:00
wuauserv makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
wusa makefiles: Make -mno-cygwin the default. 2021-09-20 22:45:48 +02:00
xcopy xcopy: Use the standard va_list instead of __ms_va_list. 2021-10-25 11:03:06 +02:00