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.
This commit is contained in:
parent
5fe88cfb86
commit
c734eb83b8
|
@ -1,3 +1,11 @@
|
||||||
|
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.
|
||||||
|
|
||||||
2010-05-24 Tristan Gingold <gingold@adacore.com>
|
2010-05-24 Tristan Gingold <gingold@adacore.com>
|
||||||
|
|
||||||
* vms-alpha.c (_bfd_vms_slurp_egsd): Fix indentation.
|
* vms-alpha.c (_bfd_vms_slurp_egsd): Fix indentation.
|
||||||
|
|
|
@ -271,8 +271,11 @@ struct vms_private_data_struct
|
||||||
|
|
||||||
struct hdr_struct hdr_data; /* data from HDR/EMH record */
|
struct hdr_struct hdr_data; /* data from HDR/EMH record */
|
||||||
struct eom_struct eom_data; /* data from EOM/EEOM record */
|
struct eom_struct eom_data; /* data from EOM/EEOM record */
|
||||||
unsigned int section_count; /* # of sections in following array */
|
|
||||||
asection **sections; /* array of GSD/EGSD sections */
|
/* Array of GSD sections to get the correspond BFD one. */
|
||||||
|
unsigned int section_max; /* Size of the sections array. */
|
||||||
|
unsigned int section_count; /* Number of GSD sections. */
|
||||||
|
asection **sections;
|
||||||
|
|
||||||
/* Array of raw symbols. */
|
/* Array of raw symbols. */
|
||||||
struct vms_symbol_entry **syms;
|
struct vms_symbol_entry **syms;
|
||||||
|
@ -1143,6 +1146,23 @@ _bfd_vms_slurp_egsd (bfd *abfd)
|
||||||
section->vma = (bfd_vma)base_addr;
|
section->vma = (bfd_vma)base_addr;
|
||||||
base_addr += section->size;
|
base_addr += section->size;
|
||||||
section->filepos = (unsigned int)-1;
|
section->filepos = (unsigned int)-1;
|
||||||
|
|
||||||
|
/* Append it to the section array. */
|
||||||
|
if (PRIV (section_count) >= PRIV (section_max))
|
||||||
|
{
|
||||||
|
if (PRIV (section_max) == 0)
|
||||||
|
PRIV (section_max) = 16;
|
||||||
|
else
|
||||||
|
PRIV (section_max) *= 2;
|
||||||
|
PRIV (sections) = bfd_realloc_or_free
|
||||||
|
(PRIV (sections), PRIV (section_max) * sizeof (asection *));
|
||||||
|
if (PRIV (sections) == NULL)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRIV (sections)[PRIV (section_count)] = section;
|
||||||
|
PRIV (section_count)++;
|
||||||
|
|
||||||
#if VMS_DEBUG
|
#if VMS_DEBUG
|
||||||
vms_debug (4, "EGSD P-section %d (%s, flags %04x) ",
|
vms_debug (4, "EGSD P-section %d (%s, flags %04x) ",
|
||||||
section->index, name, old_flags);
|
section->index, name, old_flags);
|
||||||
|
@ -8827,28 +8847,11 @@ vms_new_section_hook (bfd * abfd, asection *section)
|
||||||
{
|
{
|
||||||
bfd_size_type amt;
|
bfd_size_type amt;
|
||||||
|
|
||||||
/* Count hasn't been incremented yet. */
|
vms_debug2 ((1, "vms_new_section_hook (%p, [%d]%s)\n",
|
||||||
unsigned int section_count = abfd->section_count + 1;
|
abfd, section->index, section->name));
|
||||||
|
|
||||||
vms_debug2 ((1, "vms_new_section_hook (%p, [%d]%s), count %d\n",
|
|
||||||
abfd, section->index, section->name, section_count));
|
|
||||||
|
|
||||||
bfd_set_section_alignment (abfd, section, 0);
|
bfd_set_section_alignment (abfd, section, 0);
|
||||||
|
|
||||||
if (section_count > PRIV (section_count))
|
|
||||||
{
|
|
||||||
amt = section_count;
|
|
||||||
amt *= sizeof (asection *);
|
|
||||||
PRIV (sections) = bfd_realloc_or_free (PRIV (sections), amt);
|
|
||||||
if (PRIV (sections) == NULL)
|
|
||||||
return FALSE;
|
|
||||||
PRIV (section_count) = section_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
vms_debug2 ((6, "section_count: %d\n", PRIV (section_count)));
|
|
||||||
|
|
||||||
PRIV (sections)[section->index] = section;
|
|
||||||
|
|
||||||
vms_debug2 ((7, "%d: %s\n", section->index, section->name));
|
vms_debug2 ((7, "%d: %s\n", section->index, section->name));
|
||||||
|
|
||||||
amt = sizeof (struct vms_section_data_struct);
|
amt = sizeof (struct vms_section_data_struct);
|
||||||
|
|
Loading…
Reference in New Issue