aboutsummaryrefslogtreecommitdiff
path: root/bfd/coffcode.h
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@geoffk.org>2000-02-19 00:59:26 +0000
committerGeoffrey Keating <geoffk@geoffk.org>2000-02-19 00:59:26 +0000
commit5ea1af0d5d96234b6c086f284c2fc66ad58b279b (patch)
tree4fde10d727be7bd97f75ea4ce33be162b7a0123b /bfd/coffcode.h
parentff4e7bb239e88a67baed668fd48e25236fee6b93 (diff)
downloadgdb-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.h18
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;