bfd_get_full_section_contents memory leak, plus
H.J. Lu
hjl.tools@gmail.com
Sun Oct 21 03:29:00 GMT 2012
More information about the Binutils mailing list
Sun Oct 21 03:29:00 GMT 2012
- Previous message (by thread): bfd_get_full_section_contents memory leak, plus
- Next message (by thread): bfd_get_full_section_contents memory leak, plus
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Oct 20, 2012 at 7:45 PM, Alan Modra <amodra@gmail.com> wrote: > On Sat, Oct 20, 2012 at 05:30:12PM -0700, H.J. Lu wrote: >> On Sat, Oct 20, 2012 at 5:26 PM, H.J. Lu <hjl.tools@gmail.com> wrote: >> > On Sat, Oct 20, 2012 at 5:21 PM, H.J. Lu <hjl.tools@gmail.com> wrote: >> >> On Sat, Oct 20, 2012 at 3:17 PM, H.J. Lu <hjl.tools@gmail.com> wrote: >> >>> It breaks objdump. I checked in this tectase to show the >> >>> error. > >> diff --git a/bfd/compress.c b/bfd/compress.c >> index 294bfd3..0502f80 100644 >> --- a/bfd/compress.c >> +++ b/bfd/compress.c >> @@ -166,6 +166,11 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr >> sec, bfd_byte **ptr) >> bfd_byte *compressed_buffer; >> #endif >> >> + if ((sec->flags & SEC_IN_MEMORY) != 0 >> + && p != NULL >> + && p == sec->contents) >> + return TRUE; >> + >> if (abfd->direction != write_direction && sec->rawsize != 0) >> sz = sec->rawsize; >> else > > I think I prefer to put the extra hack where objdump is twiddling > things behind BFD's back. I also can't see why sec->size needs to be > set. What do you think? > > * objdump.c (load_specific_debug_section): Update compress_status > along with setting sec->contents. No need to set sec->size. > > Index: binutils/objdump.c > =================================================================== > RCS file: /cvs/src/src/binutils/objdump.c,v > retrieving revision 1.197 > diff -u -p -r1.197 objdump.c > --- binutils/objdump.c 18 Oct 2012 17:42:24 -0000 1.197 > +++ binutils/objdump.c 21 Oct 2012 02:41:05 -0000 > @@ -2276,9 +2276,10 @@ load_specific_debug_section (enum dwarf_ > decompressed), so we store a pointer to the data in > the bfd_section, and tell it that the contents are > already in memory. */ > + if (sec->compress_status == DECOMPRESS_SECTION_SIZED) > + sec->compress_status = COMPRESS_SECTION_DONE; > sec->contents = section->start; > sec->flags |= SEC_IN_MEMORY; > - sec->size = section->size; > > ret = bfd_simple_get_relocated_section_contents (abfd, > sec, I agree that we don't need to set size in objdump. On the other hand, can we move checking and setting compress_status to compress.c to make compressing code more robust? Thanks. -- H.J.
- Previous message (by thread): bfd_get_full_section_contents memory leak, plus
- Next message (by thread): bfd_get_full_section_contents memory leak, plus
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list