# This shell script emits a C file. -*- C -*-
-# Copyright 2010, 2012
-# Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
gld${EMULATION_NAME}_before_parse (void)
{
ldfile_set_output_arch ("${ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
- input_flags.dynamic = TRUE;
- config.has_shared = FALSE; /* Not yet. */
+ input_flags.dynamic = true;
+ config.has_shared = false; /* Not yet. */
/* For ia64, harmless for alpha. */
- link_info.emit_hash = FALSE;
+ link_info.emit_hash = false;
link_info.spare_dynamic_tags = 0;
}
/* Try to open a dynamic archive. This is where we know that VMS
shared images (dynamic libraries) have an extension of .exe. */
-static bfd_boolean
+static bool
gld${EMULATION_NAME}_open_dynamic_archive (const char *arch ATTRIBUTE_UNUSED,
- search_dirs_type *search,
- lang_input_statement_type *entry)
+ search_dirs_type *search,
+ lang_input_statement_type *entry)
{
char *string;
- if (! entry->flags.maybe_archive)
- return FALSE;
+ if (! entry->flags.maybe_archive || entry->flags.full_name_provided)
+ return false;
string = (char *) xmalloc (strlen (search->name)
+ strlen (entry->filename)
if (! ldfile_try_open_bfd (string, entry))
{
free (string);
- return FALSE;
+ return false;
}
entry->filename = string;
- return TRUE;
+ return true;
}
static int
}
/* Place an orphan section. We use this to put random OVR sections.
- Much borrowed from elf32.em. */
+ Much borrowed from elf.em. */
static lang_output_section_statement_type *
vms_place_orphan (asection *s,
/* We have nothing to say for anything other than a final link or an excluded
section. */
- if (link_info.relocatable
+ if (bfd_link_relocatable (&link_info)
|| (s->flags & (SEC_EXCLUDE | SEC_LOAD)) != SEC_LOAD)
return NULL;
if (hold_data.os != NULL)
{
- lang_add_section (&hold_data.os->children, s, NULL, hold_data.os);
+ lang_add_section (&hold_data.os->children, s, NULL, NULL, hold_data.os);
return hold_data.os;
}
else
fprintf (file, _(" --identification <string> Set the identification of the output\n"));
}
-static bfd_boolean
+static bool
gld${EMULATION_NAME}_handle_option (int optc)
{
switch (optc)
{
default:
- return FALSE;
+ return false;
case OPTION_IDENTIFICATION:
/* Currently ignored. */
break;
}
- return TRUE;
+ return true;
}
EOF
fragment <<EOF
#include "elf-bfd.h"
+#include "ldelfgen.h"
EOF
source_em ${srcdir}/emultempl/elf-generic.em
if (elf_hash_table (&link_info)->dynamic_sections_created
&& bed->elf_backend_size_dynamic_sections
&& ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
- &link_info))
- einfo ("%P%F: failed to set dynamic section sizes: %E\n");
+ &link_info))
+ einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
before_allocation_default ();
}
static void
gld${EMULATION_NAME}_after_allocation (void)
{
- bfd_boolean need_layout = bfd_elf_discard_info (link_info.output_bfd,
- &link_info);
- gld${EMULATION_NAME}_map_segments (need_layout);
+ int need_layout = bfd_elf_discard_info (link_info.output_bfd, &link_info);
+
+ if (need_layout < 0)
+ einfo (_("%X%P: .eh_frame/.stab edit: %E\n"));
+ else
+ ldelf_map_segments (need_layout);
}
static void