====== command qXfer ====== **Format:** ‘qXfer:object:read:annex:offset,length’ or ‘qXfer:object:write:annex:offset:data…’ or ‘qXfer:object:operation:…’ **Meaning:** (‘qXfer:object:read:annex:offset,length’) Read uninterpreted bytes from the target’s special data area identified by the keyword object. Request length bytes starting at offset bytes into the data. The content and encoding of annex is specific to object; it can supply additional details about what data to access. Here are the specific requests of this form defined so far. * **‘qXfer:auxv:read::offset,length’** Access the target’s auxiliary vector. See auxiliary vector. Note annex must be empty. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:btrace:read:annex:offset,length’** Return a description of the current branch trace. See Branch Trace Format. The annex part of the generic ‘qXfer’ packet may have one of the following values: * __all__ Returns all available branch trace. * __new__ Returns all available branch trace if the branch trace changed since the last read request. * __delta__ Returns the new branch trace since the last read request. Adds a new block to the end of the trace that begins at zero and ends at the source location of the first branch in the trace buffer. This extra block is used to stitch traces together. If the trace buffer overflowed, returns an error indicating the overflow. This packet is not probed by default; the remote stub must request it by supplying an appropriate ‘qSupported’ response. * **‘qXfer:btrace-conf:read::offset,length’** Return a description of the current branch trace configuration. See Branch Trace Configuration Format. This packet is not probed by default; the remote stub must request it by supplying an appropriate ‘qSupported’ response. * **‘qXfer:exec-file:read:annex:offset,length’** Return the full absolute name of the file that was executed to create a process running on the remote system. The annex specifies the numeric process ID of the process to query, encoded as a hexadecimal number. If the annex part is empty the remote stub should return the filename corresponding to the currently executing process. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:features:read:annex:offset,length’** Access the target description. The annex specifies which XML document to access. The main description is always loaded from the ‘target.xml’ annex. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:libraries:read:annex:offset,length’** Access the target’s list of loaded libraries. See Library List Format. The annex part of the generic ‘qXfer’ packet must be empty. Targets which maintain a list of libraries in the program’s memory do not need to implement this packet; it is designed for platforms where the operating system manages the list of loaded libraries. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:libraries-svr4:read:annex:offset,length’** Access the target’s list of loaded libraries when the target is an SVR4 platform. See Library List Format for SVR4 Targets. The annex part of the generic ‘qXfer’ packet must be empty unless the remote stub indicated it supports the augmented form of this packet by supplying an appropriate ‘qSupported’ response. This packet is optional for better performance on SVR4 targets. GDB uses memory read packets to read the SVR4 library list otherwise. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. If the remote stub indicates it supports the augmented form of this packet then the annex part of the generic ‘qXfer’ packet may contain a semicolon-separated list of ‘name=value’ arguments. The currently supported arguments are: * __start=address__ A hexadecimal number specifying the address of the ‘struct link_map’ to start reading the library list from. If unset or zero then the first ‘struct link_map’ in the library list will be chosen as the starting point. * __prev=address__ A hexadecimal number specifying the address of the ‘struct link_map’ immediately preceding the ‘struct link_map’ specified by the ‘start’ argument. If unset or zero then the remote stub will expect that no ‘struct link_map’ exists prior to the starting point. * __lmid=lmid__ A hexadecimal number specifying a namespace identifier. This is currently only used together with ‘start’ to provide the namespace identifier back to GDB in the response. GDB will only provide values that were previously reported to it. If unset, the response will include ‘lmid="0x0"’. Arguments that are not understood by the remote stub will be silently ignored. * **‘qXfer:memory-map:read::offset,length’** Access the target’s memory-map. The annex part of the generic ‘qXfer’ packet must be empty. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:sdata:read::offset,length’** Read contents of the extra collected static tracepoint marker information. The annex part of the generic ‘qXfer’ packet must be empty (see qXfer read). See Tracepoint Action Lists. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:siginfo:read::offset,length’** Read contents of the extra signal information on the target system. The annex part of the generic ‘qXfer’ packet must be empty. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:threads:read::offset,length’** Access the list of threads on target. See Thread List Format. The annex part of the generic ‘qXfer’ command must be empty. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:traceframe-info:read::offset,length’** Return a description of the current traceframe’s contents. See Traceframe Info Format. The annex part of the generic ‘qXfer’ command must be empty. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:uib:read:pc:offset,length’** Return the unwind information block for pc. This packet is used on OpenVMS/ia64 to ask the kernel unwind information. This packet is not probed by default. * **‘qXfer:fdpic:read:annex:offset,length’** Read contents of loadmaps on the target system. The annex, either ‘exec’ or ‘interp’, specifies which loadmap, executable loadmap or interpreter loadmap to read. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’ response. * **‘qXfer:osdata:read::offset,length’** Access the target’s operating system information. See Operating System Information. __**(‘qXfer:object:write:annex:offset:data…’)**__ Write uninterpreted bytes into the target’s special data area identified by the keyword object, starting at offset bytes into the data. The binary-encoded data (see Binary Data) to be written is given by data…. The content and encoding of annex is specific to object; it can supply additional details about what data to access. Here are the specific requests of this form defined so far: * **‘qXfer:siginfo:write::offset:data…’** Write data to the extra signal information on the target system. The annex part of the generic ‘qXfer’ packet must be empty. This packet is not probed by default; the remote stub must request it, by supplying an appropriate ‘qSupported’. __**(‘qXfer:object:operation:…’)**__ Requests of this form may be added in the future. When a stub does not recognize the object keyword, or its support for object does not recognize the operation keyword, the stub must respond with an empty packet. **Reply:** __**(‘qXfer:object:read:annex:offset,length’)**__ m dataData data (binary) has been read from the target. There may be more data at a higher address (although it is permitted to return ‘m’ even for the last valid block of data, as long as at least one byte of data was read). It is possible for data to have fewer bytes than the length in the request. l dataData data (binary) has been read from the target. There is no more data to be read. It is possible for data to have fewer bytes than the length in the request. ‘l’ The offset in the request is at the end of the data. There is no more data to be read. __**(‘qXfer:object:write:annex:offset:data…’)**__ nn nn (hex encoded) is the number of bytes written. This may be fewer bytes than supplied in the request.