mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 21:41:47 +08:00
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:
@ -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>
|
2016-01-24 Maciej W. Rozycki <macro@imgtec.com>
|
||||||
|
|
||||||
* elfxx-mips.c (BZ16_REG_FIELD): Simplify calculation.
|
* 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)
|
if (mdata->dsym_bfd != NULL)
|
||||||
{
|
{
|
||||||
bfd *fat_bfd = mdata->dsym_bfd->my_archive;
|
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
|
char *dsym_filename = (char *)(fat_bfd
|
||||||
? fat_bfd->filename
|
? fat_bfd->filename
|
||||||
: mdata->dsym_bfd->filename);
|
: mdata->dsym_bfd->filename);
|
||||||
|
#endif
|
||||||
bfd_close (mdata->dsym_bfd);
|
bfd_close (mdata->dsym_bfd);
|
||||||
mdata->dsym_bfd = NULL;
|
mdata->dsym_bfd = NULL;
|
||||||
if (fat_bfd)
|
if (fat_bfd)
|
||||||
bfd_close (fat_bfd);
|
bfd_close (fat_bfd);
|
||||||
|
#if 0
|
||||||
free (dsym_filename);
|
free (dsym_filename);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user