/* This file is is generated by a shell script. DO NOT EDIT! */
/* AIX emulation code for ${EMULATION_NAME}
- Copyright (C) 1991-2018 Free Software Foundation, Inc.
+ Copyright (C) 1991-2020 Free Software Foundation, Inc.
Written by Steve Chamberlain <sac@cygnus.com>
AIX support by Ian Lance Taylor <ian@cygnus.com>
AIX 64 bit support by Tom Rix <trix@redhat.com>
#include "getopt.h"
#include "obstack.h"
#include "bfdlink.h"
+#include "ctf-api.h"
#include "ld.h"
#include "ldmain.h"
#include "coff/xcoff.h"
#include "libcoff.h"
#include "libxcoff.h"
+#include "xcofflink.h"
static void gld${EMULATION_NAME}_read_file (const char *, bfd_boolean);
static void gld${EMULATION_NAME}_free (void *);
break;
case OPTION_ERNOTOK:
- link_info.unresolved_syms_in_objects = RM_GENERATE_ERROR;
- link_info.unresolved_syms_in_shared_libs = RM_GENERATE_ERROR;
+ link_info.unresolved_syms_in_objects = RM_DIAGNOSE;
+ link_info.unresolved_syms_in_shared_libs = RM_DIAGNOSE;
break;
case OPTION_EROK:
h = bfd_link_hash_lookup (link_info.hash, el->name, FALSE, FALSE, FALSE);
if (h == NULL)
- einfo (_("%P%F: bfd_link_hash_lookup of export symbol failed: %E\n"));
+ einfo (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h))
- einfo (_("%P%F: bfd_xcoff_export_symbol failed: %E\n"));
+ einfo (_("%F%P: bfd_xcoff_export_symbol failed: %E\n"));
}
/* Track down all relocations called for by the linker script (these
maxstack, maxdata, gc && !unix_ld ? TRUE : FALSE,
modtype, textro ? TRUE : FALSE, flags, special_sections,
rtld ? TRUE : FALSE))
- einfo (_("%P%F: failed to set dynamic section sizes: %E\n"));
+ einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
/* Look through the special sections, and put them in the right
place in the link ordering. This is especially magic. */
is = NULL;
os = lang_output_section_get (sec->output_section);
if (os == NULL)
- einfo (_("%P%F: can't find output section %s\n"),
+ einfo (_("%F%P: can't find output section %s\n"),
sec->output_section->name);
for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next)
if (is == NULL)
{
- einfo (_("%P%F: can't find %s in output section\n"),
- bfd_get_section_name (sec->owner, sec));
+ einfo (_("%F%P: can't find %s in output section\n"),
+ bfd_section_name (sec));
}
/* Now figure out where the section should go. */
else
{
is->header.next = NULL;
- lang_statement_append (&os->children,
- (lang_statement_union_type *) is,
- &is->header.next);
+ *os->children.tail = (lang_statement_union_type *) is;
+ os->children.tail = &is->header.next;
}
}
if (f == NULL)
{
bfd_set_error (bfd_error_system_call);
- einfo ("%F%s: %E\n", filename);
+ einfo ("%F%P: %s: %E\n", filename);
return;
}
obstack_free (o, obstack_base (o));
}
else if (*s == '(')
- einfo (_("%F%s%d: #! ([member]) is not supported "
+ einfo (_("%F%P:%s:%d: #! ([member]) is not supported "
"in import files\n"),
filename, lineno);
else
*s = '\0';
if (!bfd_xcoff_split_import_path (link_info.output_bfd,
start, &imppath, &impfile))
- einfo (_("%F%P: Could not parse import path: %E\n"));
+ einfo (_("%F%P: could not parse import path: %E\n"));
while (ISSPACE (cs))
{
++s;
{
impmember = "";
if (cs != '\0')
- einfo (_("%s:%d: warning: syntax error in import file\n"),
+ einfo (_("%P:%s:%d: warning: syntax error in import file\n"),
filename, lineno);
}
else
if (*s == ')')
*s = '\0';
else
- einfo (_("%s:%d: warning: syntax error in import file\n"),
+ einfo (_("%P:%s:%d: warning: syntax error in import file\n"),
filename, lineno);
}
}
while (ISSPACE (*se))
++se;
if (*se != '\0')
- einfo (_("%s%d: warning: syntax error in "
+ einfo (_("%P:%s%d: warning: syntax error in "
"import/export file\n"),
filename, lineno);
}
address = bfd_scan_vma (s, &end, 0);
if (*end != '\0')
{
- einfo (_("%s:%d: warning: syntax error in "
+ einfo (_("%P:%s:%d: warning: syntax error in "
"import/export file\n"),
filename, lineno);
&link_info, h,
address, imppath, impfile,
impmember, syscall_flag))
- einfo (_("%X%s:%d: failed to import symbol %s: %E\n"),
+ einfo (_("%X%P:%s:%d: failed to import symbol %s: %E\n"),
filename, lineno, symname);
}
}
if (obstack_object_size (o) > 0)
{
- einfo (_("%s:%d: warning: ignoring unterminated last line\n"),
+ einfo (_("%P:%s:%d: warning: ignoring unterminated last line\n"),
filename, lineno);
obstack_free (o, obstack_base (o));
}
switch (exp->type.node_class)
{
case etree_provide:
+ case etree_provided:
h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst,
FALSE, FALSE, FALSE);
if (h == NULL)
if (!bfd_xcoff_record_link_assignment (link_info.output_bfd,
&link_info,
exp->assign.dst))
- einfo (_("%P%F: failed to record assignment to %s: %E\n"),
+ einfo (_("%F%P: failed to record assignment to %s: %E\n"),
exp->assign.dst);
}
gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
bfd_get_arch (link_info.output_bfd),
bfd_get_mach (link_info.output_bfd)))
{
- einfo (_("%X%P: can not create BFD %E\n"));
+ einfo (_("%F%P: can not create BFD: %E\n"));
return;
}
link_info.fini_function,
rtld))
{
- einfo (_("%X%P: can not create BFD %E\n"));
+ einfo (_("%F%P: can not create BFD: %E\n"));
return;
}
return TRUE;
}
+static bfd_boolean
+gld${EMULATION_NAME}_print_symbol (struct bfd_link_hash_entry *hash_entry,
+ void *ptr)
+{
+ asection *sec = (asection *) ptr;
+
+ if ((hash_entry->type == bfd_link_hash_defined
+ || hash_entry->type == bfd_link_hash_defweak)
+ && sec == hash_entry->u.def.section)
+ {
+ int i;
+ struct xcoff_link_hash_entry *h;
+
+ for (i = 0; i < SECTION_NAME_MAP_LENGTH; i++)
+ print_space ();
+ minfo ("0x%V ",
+ (hash_entry->u.def.value
+ + hash_entry->u.def.section->output_offset
+ + hash_entry->u.def.section->output_section->vma));
+
+ /* Flag symbol if it has been garbage collected. */
+ h = (struct xcoff_link_hash_entry *) hash_entry;
+ if ((h != NULL) && !(h->flags & XCOFF_MARK))
+ minfo (" -->gc");
+ minfo (" %pT\n", hash_entry->root.string);
+ }
+
+ return TRUE;
+}
+
struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = {
gld${EMULATION_NAME}_before_parse,
syslib_default,
after_parse_default,
gld${EMULATION_NAME}_after_open,
after_check_relocs_default,
+ before_place_orphans_default,
after_allocation_default,
gld${EMULATION_NAME}_set_output_arch,
gld${EMULATION_NAME}_choose_target,
NULL, /* recognized_file */
NULL, /* find potential_libraries */
NULL, /* new_vers_pattern */
- NULL /* extra_map_file_text */
+ NULL, /* extra_map_file_text */
+ ${LDEMUL_EMIT_CTF_EARLY-NULL},
+ ${LDEMUL_ACQUIRE_STRINGS_FOR_CTF-NULL},
+ ${LDEMUL_NEW_DYNSYM_FOR_CTF-NULL},
+ gld${EMULATION_NAME}_print_symbol
};
EOF