Fix memory corruption on Mach-O systems by suppressing a memory tidy up.
PR target/19435 * mach-o.c (bfd_mach_o_close_and_cleanup): Suppress code to free dsym filename buffer.
This commit is contained in:
parent
0a01d393e6
commit
cf466c2ac5
@ -1,3 +1,9 @@
|
||||
2016-01-25 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR target/19435
|
||||
* mach-o.c (bfd_mach_o_close_and_cleanup): Suppress code to free
|
||||
dsym filename buffer.
|
||||
|
||||
2016-01-24 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* elfxx-mips.c (BZ16_REG_FIELD): Simplify calculation.
|
||||
|
12
bfd/mach-o.c
12
bfd/mach-o.c
@ -5798,14 +5798,26 @@ bfd_mach_o_close_and_cleanup (bfd *abfd)
|
||||
if (mdata->dsym_bfd != NULL)
|
||||
{
|
||||
bfd *fat_bfd = mdata->dsym_bfd->my_archive;
|
||||
#if 0
|
||||
/* FIXME: PR 19435: This calculation to find the memory allocated by
|
||||
bfd_mach_o_follow_dsym for the filename does not always end up
|
||||
selecting the correct pointer. Unfortunately this problem is
|
||||
very hard to reproduce on a non Mach-O native system, so until it
|
||||
can be traced and fixed on such a system, this code will remain
|
||||
commented out. This does mean that there will be a memory leak,
|
||||
but it is small, and happens when we are closing down, so it
|
||||
should not matter too much.
|
||||
char *dsym_filename = (char *)(fat_bfd
|
||||
? fat_bfd->filename
|
||||
: mdata->dsym_bfd->filename);
|
||||
#endif
|
||||
bfd_close (mdata->dsym_bfd);
|
||||
mdata->dsym_bfd = NULL;
|
||||
if (fat_bfd)
|
||||
bfd_close (fat_bfd);
|
||||
#if 0
|
||||
free (dsym_filename);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user