diff options
author | Geoffrey Keating <geoffk@geoffk.org> | 2000-02-19 00:59:26 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@geoffk.org> | 2000-02-19 00:59:26 +0000 |
commit | 5ea1af0d5d96234b6c086f284c2fc66ad58b279b (patch) | |
tree | 4fde10d727be7bd97f75ea4ce33be162b7a0123b /bfd/coffcode.h | |
parent | ff4e7bb239e88a67baed668fd48e25236fee6b93 (diff) | |
download | gdb-5ea1af0d5d96234b6c086f284c2fc66ad58b279b.zip gdb-5ea1af0d5d96234b6c086f284c2fc66ad58b279b.tar.gz gdb-5ea1af0d5d96234b6c086f284c2fc66ad58b279b.tar.bz2 |
* coffcode.h (coff_set_arch_mach_hook): Don't use variable-size
arrays.
(coff_compute_section_file_positions): Use bfd_free to pair
bfd_malloc.
(coff_write_object_contents): Likewise.
* coff-rs6000.c (xcoff_howto_table_16): New variable.
(xcoff_rtype2howto): Handle 16-bit variants of 32-bit relocs.
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r-- | bfd/coffcode.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h index ca1d522..58dd879 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1880,17 +1880,23 @@ coff_set_arch_mach_hook (abfd, filehdr) cputype = 0; else { - bfd_byte buf[bfd_coff_symesz (abfd)]; + bfd_byte *buf; struct internal_syment sym; + buf = (bfd_byte *) bfd_malloc (bfd_coff_symesz (abfd)); if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0 - || bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd) != bfd_coff_symesz (abfd)) - return false; + || (bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd) + != bfd_coff_symesz (abfd))) + { + bfd_free (buf); + return false; + } coff_swap_sym_in (abfd, (PTR) buf, (PTR) &sym); if (sym.n_sclass == C_FILE) cputype = sym.n_type & 0xff; else cputype = 0; + bfd_free (buf); } } @@ -2762,7 +2768,7 @@ coff_compute_section_file_positions (abfd) current->target_index = target_index++; } - free (section_list); + bfd_free (section_list); } #else /* ! COFF_IMAGE_WITH_PE */ { @@ -3696,7 +3702,7 @@ coff_write_object_contents (abfd) coff_swap_filehdr_out (abfd, (PTR) & internal_f, (PTR) buff); amount = bfd_write ((PTR) buff, 1, bfd_coff_filhsz (abfd), abfd); - free (buff); + bfd_free (buff); if (amount != bfd_coff_filhsz (abfd)) return false; @@ -3716,7 +3722,7 @@ coff_write_object_contents (abfd) coff_swap_aouthdr_out (abfd, (PTR) & internal_a, (PTR) buff); amount = bfd_write ((PTR) buff, 1, bfd_coff_aoutsz (abfd), abfd); - free (buff); + bfd_free (buff); if (amount != bfd_coff_aoutsz (abfd)) return false; |