bfd/
2010-05-03 Tristan Gingold <gingold@adacore.com> * vms-lib.c (vms_lib_bopen): Fix the size threshold to read selective_search flag. Add comments. * vms-alpha.c (alpha_vms_bfd_final_link): Create the DMT section before output_has_begun is set.
This commit is contained in:
parent
278582cb37
commit
fa23f0f49a
|
@ -1,3 +1,11 @@
|
|||
2010-05-03 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* vms-lib.c (vms_lib_bopen): Fix the size threshold to read
|
||||
selective_search flag.
|
||||
Add comments.
|
||||
* vms-alpha.c (alpha_vms_bfd_final_link): Create the DMT section
|
||||
before output_has_begun is set.
|
||||
|
||||
2010-05-03 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* vms-alpha.c: Add comments.
|
||||
|
@ -11,6 +19,7 @@
|
|||
Write the dmt section.
|
||||
(evax_bfd_print_image): Also print the dst size in hexa. Fix typo.
|
||||
(alpha_vms_read_sections_content): Do not set image_autoextend.
|
||||
(alpha_vms_bfd_final_link): Generate the dst.
|
||||
|
||||
2010-05-03 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
|
|
|
@ -8364,6 +8364,7 @@ alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
bfd_vma base_addr;
|
||||
bfd_vma last_addr;
|
||||
asection *dst;
|
||||
asection *dmt;
|
||||
|
||||
bfd_get_outsymbols (abfd) = NULL;
|
||||
bfd_get_symcount (abfd) = 0;
|
||||
|
@ -8478,6 +8479,21 @@ alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
alpha_vms_link_hash (info)->fixup = fixupsec;
|
||||
alpha_vms_link_hash (info)->base_addr = base_addr;
|
||||
|
||||
/* Create the DMT section, if necessary. */
|
||||
dst = PRIV (dst_section);
|
||||
if (dst != NULL && dst->size == 0)
|
||||
dst = NULL;
|
||||
if (dst != NULL)
|
||||
{
|
||||
dmt = bfd_make_section_anyway_with_flags
|
||||
(info->output_bfd, "$DMT$",
|
||||
SEC_DEBUGGING | SEC_HAS_CONTENTS | SEC_LINKER_CREATED);
|
||||
if (dmt == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
dmt = NULL;
|
||||
|
||||
/* Read all sections from the inputs. */
|
||||
for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
|
||||
{
|
||||
|
@ -8491,7 +8507,8 @@ alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/* Handle all the link order information for the sections. */
|
||||
/* Handle all the link order information for the sections.
|
||||
Note: past this point, it is not possible to create new sections. */
|
||||
for (o = abfd->sections; o != NULL; o = o->next)
|
||||
{
|
||||
for (p = o->map_head.link_order; p != NULL; p = p->next)
|
||||
|
@ -8518,21 +8535,11 @@ alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
return FALSE;
|
||||
|
||||
/* Compute the DMT. */
|
||||
dst = PRIV (dst_section);
|
||||
if (dst != NULL && dst->size == 0)
|
||||
dst = NULL;
|
||||
if (dst != NULL)
|
||||
if (dmt != NULL)
|
||||
{
|
||||
asection *dmt;
|
||||
int pass;
|
||||
unsigned char *contents = NULL;
|
||||
|
||||
dmt = bfd_make_section_anyway_with_flags
|
||||
(info->output_bfd, "$DMT$",
|
||||
SEC_DEBUGGING | SEC_HAS_CONTENTS | SEC_LINKER_CREATED);
|
||||
if (dmt == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* In pass 1, compute the size. In pass 2, write the DMT contents. */
|
||||
for (pass = 0; pass < 2; pass++)
|
||||
{
|
||||
|
|
|
@ -577,6 +577,7 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum vms_lib_kind kind)
|
|||
off = bfd_getl16 (sbm->next);
|
||||
if (off != 0)
|
||||
{
|
||||
/* Read the 'next' array. */
|
||||
sbmdesc->next = (unsigned short *)bfd_alloc
|
||||
(abfd, sbm_len * sizeof (unsigned short));
|
||||
buf1 = data + off;
|
||||
|
@ -585,6 +586,7 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum vms_lib_kind kind)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* There is no next array if there is only one submap. */
|
||||
BFD_ASSERT (tdata->nbr_dcxsbm == 1);
|
||||
sbmdesc->next = NULL;
|
||||
}
|
||||
|
@ -1200,7 +1202,7 @@ vms_lib_bopen (bfd *el, file_ptr filepos)
|
|||
/* Check id. */
|
||||
if (mhd->id != MHD__C_MHDID)
|
||||
return FALSE;
|
||||
if (len >= sizeof (struct vms_mhd))
|
||||
if (len >= MHD__C_MHDLEN + 1)
|
||||
el->selective_search = (mhd->objstat & MHD__M_SELSRC) ? 1 : 0;
|
||||
el->mtime = vms_rawtime_to_time_t (mhd->datim);
|
||||
el->mtime_set = TRUE;
|
||||
|
|
Loading…
Reference in New Issue