This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Greetings, Currently GDB allocates memory and does a bfd_read() on dwarf debug sections. This causes GDB to be significantly slower on low-memory machines than it has to be, and I have a patch to fix this by directly mmap()ing the debug sections instead: http://sourceware.org/ml/gdb-patches/2009-05/txt00023.txt In that patch, I do: + caddr_t retbuf = mmap (0, map_length, PROT_READ, MAP_PRIVATE, + fileno ((FILE *)abfd->iostream), + pg_offset); and this cast of abfd->iostream has been flagged as possibly un-kosher. What is the proper way to get access to the underlying file descriptor for a given abfd (if there is one)? If there isn't a way, should there be? I would have used bfd_get_file_window(), but it's only compiled in when --use-mmap was given to bfd/configure. Is there a way to turn that on for GDB? The bfd_get_file_window() performs above cast, after checking for: (abfd->flags & BFD_IN_MEMORY) == 0) and later if (abfd->iostream == NULL && (abfd->iovec == NULL || abfd->iovec->bseek (abfd, offset, SEEK_SET) != 0)) The last 3 conditions can not be true in gdb/dwarf2read.c because we just performed bfd_seek and bfd_bread on abfd. Looks like BFD_IN_MEMORY could be set though. Is it ok to do this: if ((abfd->flags & BFD_IN_MEMORY) == 0) ... in gdb/dwarf2read.c? Thanks, -- Paul Pluzhnikov
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |