summaryrefslogtreecommitdiff
path: root/bfd/mach-o.c
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2011-09-21 10:10:10 +0000
committerTristan Gingold <gingold@adacore.com>2011-09-21 10:10:10 +0000
commitda0381d881de2b5ccb80fc0306e5100f8efcb839 (patch)
treea4410f966a2c3620979a1666c758b6b26a60089c /bfd/mach-o.c
parent98310550d7693f376961dd827d76c5b4521cd509 (diff)
downloadbinutils-redhat-da0381d881de2b5ccb80fc0306e5100f8efcb839.tar.gz
2011-09-21 Tristan Gingold <gingold@adacore.com>
* mach-o.c (bfd_mach_o_convert_section_name_to_bfd): Add comment. Deals with size limited strings. (bfd_mach_o_build_commands): Initialize more fields.
Diffstat (limited to 'bfd/mach-o.c')
-rw-r--r--bfd/mach-o.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index efc58f59a6..91f0306f5e 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -183,6 +183,9 @@ bfd_mach_o_normalize_section_name (const char *segname, const char *sectname,
}
}
+/* Convert Mach-O section name to BFD. Try to use standard names, otherwise
+ forge a new name. SEGNAME and SECTNAME are 16 bytes strings. */
+
static void
bfd_mach_o_convert_section_name_to_bfd
(bfd *abfd, const char *segname, const char *sectname,
@@ -199,7 +202,7 @@ bfd_mach_o_convert_section_name_to_bfd
if (*name)
return;
- len = strlen (segname) + 1 + strlen (sectname) + 1;
+ len = 16 + 1 + 16 + 1;
/* Put "LC_SEGMENT." prefix if the segment name is weird (ie doesn't start
with an underscore. */
@@ -214,7 +217,7 @@ bfd_mach_o_convert_section_name_to_bfd
res = bfd_alloc (abfd, len);
if (res == NULL)
return;
- snprintf (res, len, "%s%s.%s", pfx, segname, sectname);
+ snprintf (res, len, "%s%.16s.%.16s", pfx, segname, sectname);
*name = res;
*flags = SEC_NO_FLAGS;
}
@@ -1406,6 +1409,8 @@ bfd_mach_o_build_commands (bfd *abfd)
| BFD_MACH_O_PROT_EXECUTE;
seg->initprot = seg->maxprot;
seg->flags = 0;
+ seg->sect_head = NULL;
+ seg->sect_tail = NULL;
/* Create Mach-O sections. */
target_index = 0;