forked from Imagelibrary/binutils-gdb
Share code on to_xfer_partial for tfile and ctf target
In the to_xfer_partial implementations of ctf and tfile, the code on reading from read-only sections is duplicated. This patch moves it to a separate function exec_read_partial_read_only. gdb: 2014-02-23 Yao Qi <yao@codesourcery.com> * ctf.c (ctf_xfer_partial): Move code to ... * exec.c (exec_read_partial_read_only): ... it. New function. * tracefile-tfile.c (tfile_xfer_partial): Likewise. * tracefile.c: Include "exec.h". * exec.h (exec_read_partial_read_only): Declare.
This commit is contained in:
42
gdb/ctf.c
42
gdb/ctf.c
@@ -1467,47 +1467,7 @@ ctf_xfer_partial (struct target_ops *ops, enum target_object object,
|
||||
bt_iter_set_pos (bt_ctf_get_iter (ctf_iter), pos);
|
||||
}
|
||||
|
||||
/* It's unduly pedantic to refuse to look at the executable for
|
||||
read-only pieces; so do the equivalent of readonly regions aka
|
||||
QTro packet. */
|
||||
if (exec_bfd != NULL)
|
||||
{
|
||||
asection *s;
|
||||
bfd_size_type size;
|
||||
bfd_vma vma;
|
||||
|
||||
for (s = exec_bfd->sections; s; s = s->next)
|
||||
{
|
||||
if ((s->flags & SEC_LOAD) == 0
|
||||
|| (s->flags & SEC_READONLY) == 0)
|
||||
continue;
|
||||
|
||||
vma = s->vma;
|
||||
size = bfd_get_section_size (s);
|
||||
if (vma <= offset && offset < (vma + size))
|
||||
{
|
||||
ULONGEST amt;
|
||||
|
||||
amt = (vma + size) - offset;
|
||||
if (amt > len)
|
||||
amt = len;
|
||||
|
||||
amt = bfd_get_section_contents (exec_bfd, s,
|
||||
readbuf, offset - vma, amt);
|
||||
|
||||
if (amt == 0)
|
||||
return TARGET_XFER_EOF;
|
||||
else
|
||||
{
|
||||
*xfered_len = amt;
|
||||
return TARGET_XFER_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Indicate failure to find the requested memory block. */
|
||||
return TARGET_XFER_E_IO;
|
||||
return exec_read_partial_read_only (readbuf, offset, len, xfered_len);
|
||||
}
|
||||
|
||||
/* This is the implementation of target_ops method
|
||||
|
||||
Reference in New Issue
Block a user