• Jinoh Kang's avatar
    winedbg: Cache GDB qXfer command result for chunked fetching. · f18c0db3
    Jinoh Kang authored
    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: 's avatarJinoh Kang <jinoh.kang.kr@gmail.com>
    Signed-off-by: 's avatarRémi Bernon <rbernon@codeweavers.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    f18c0db3
Name
Last commit
Last update
dlls Loading commit data...
documentation Loading commit data...
fonts Loading commit data...
include Loading commit data...
libs Loading commit data...
loader Loading commit data...
nls Loading commit data...
po Loading commit data...
programs Loading commit data...
server Loading commit data...
tools Loading commit data...
.editorconfig Loading commit data...
.mailmap Loading commit data...
ANNOUNCE Loading commit data...
AUTHORS Loading commit data...
COPYING.LIB Loading commit data...
LICENSE Loading commit data...
LICENSE.OLD Loading commit data...
MAINTAINERS Loading commit data...
README Loading commit data...
VERSION Loading commit data...
aclocal.m4 Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...