2010-05-24 Tristan Gingold <gingold@adacore.com>
- * vms-alpha.c (struct vms_private_data_struct): Add section_max
- field.
- (_bfd_vms_slurp_egsd): Put PSC into the sections array.
- (vms_new_section_hook): Do not put section in the sections
- array.
+ * vms-alpha.c (add_symbol_entry): New function extrated from ...
+ (add_symbol): ... adjusted.
2010-05-24 Tristan Gingold <gingold@adacore.com>
return section_flags[i].vflags_always;
}
-/* Input routines. */
+/* Add SYM to the symbol table of ABFD.
+ Return FALSE in case of error. */
-static struct vms_symbol_entry *
-add_symbol (bfd *abfd, const unsigned char *ascic)
+static bfd_boolean
+add_symbol_entry (bfd *abfd, struct vms_symbol_entry *sym)
{
- struct vms_symbol_entry *entry;
- int len;
-
- len = *ascic++;
- entry = (struct vms_symbol_entry *)bfd_zalloc (abfd, sizeof (*entry) + len);
- if (entry == NULL)
- return NULL;
- entry->namelen = len;
- memcpy (entry->name, ascic, len);
- entry->name[len] = 0;
- entry->owner = abfd;
-
if (PRIV (gsd_sym_count) >= PRIV (max_sym_count))
{
if (PRIV (max_sym_count) == 0)
(PRIV (max_sym_count) * sizeof (struct vms_symbol_entry *)));
}
if (PRIV (syms) == NULL)
- return NULL;
+ return FALSE;
}
- PRIV (syms)[PRIV (gsd_sym_count)++] = entry;
+ PRIV (syms)[PRIV (gsd_sym_count)++] = sym;
+ return TRUE;
+}
+
+/* Create a symbol whose name is ASCIC and add it to ABFD.
+ Return NULL in case of error. */
+
+static struct vms_symbol_entry *
+add_symbol (bfd *abfd, const unsigned char *ascic)
+{
+ struct vms_symbol_entry *entry;
+ int len;
+
+ len = *ascic++;
+ entry = (struct vms_symbol_entry *)bfd_zalloc (abfd, sizeof (*entry) + len);
+ if (entry == NULL)
+ return NULL;
+ entry->namelen = len;
+ memcpy (entry->name, ascic, len);
+ entry->name[len] = 0;
+ entry->owner = abfd;
+
+ if (!add_symbol_entry (abfd, entry))
+ return NULL;
return entry;
}