/* This file is is generated by a shell script. DO NOT EDIT! */
/* AIX emulation code for ${EMULATION_NAME}
- Copyright (C) 1991-2014 Free Software Foundation, Inc.
+ Copyright (C) 1991-2019 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 *);
f = fopen (filename, FOPEN_RT);
if (f == NULL)
{
- einfo ("%F%P: cannot open %s\n", filename);
+ einfo (_("%F%P: cannot open %s\n"), filename);
return;
}
if (fseek (f, 0L, SEEK_END) == -1)
{
/* Skip empty lines. */
while (*b == '\n' || *b == '\r')
- b++;
+ b++;
/* Stop if end of buffer. */
if (b == buffer + len)
- break;
+ break;
/* Eat any byte until end of line. */
for (e = b; *e != '\0'; e++)
- if (*e == '\n' || *e == '\r')
- break;
+ if (*e == '\n' || *e == '\r')
+ break;
/* Replace end of line by nul. */
if (*e != '\0')
- *e++ = '\0';
+ *e++ = '\0';
if (b != e)
- lang_add_input_file (b, lang_input_file_is_search_file_enum, NULL);
+ lang_add_input_file (b, lang_input_file_is_search_file_enum, NULL);
b = e;
}
return;
error:
- einfo ("%F%P: cannot read %s\n", optarg);
+ einfo (_("%F%P: cannot read %s\n"), optarg);
fclose (f);
}
case 'f':
/* This overrides --auxiliary. This option specifies a file containing
- a list of input files. */
+ a list of input files. */
read_file_list (optarg);
break;
case 'D':
val = bfd_scan_vma (optarg, &end, 0);
if (*end != '\0')
- einfo ("%P: warning: ignoring invalid -D number %s\n", optarg);
+ einfo (_("%P: warning: ignoring invalid -D number %s\n"), optarg);
else if (val != -1)
lang_section_start (".data", exp_intop (val), NULL);
break;
case 'H':
val = bfd_scan_vma (optarg, &end, 0);
if (*end != '\0' || (val & (val - 1)) != 0)
- einfo ("%P: warning: ignoring invalid -H number %s\n", optarg);
+ einfo (_("%P: warning: ignoring invalid -H number %s\n"), optarg);
else
file_align = val;
break;
case OPTION_MAXDATA:
val = bfd_scan_vma (optarg, &end, 0);
if (*end != '\0')
- einfo ("%P: warning: ignoring invalid -bmaxdata number %s\n", optarg);
+ einfo (_("%P: warning: ignoring invalid -bmaxdata number %s\n"),
+ optarg);
else
maxdata = val;
break;
case OPTION_MAXSTACK:
val = bfd_scan_vma (optarg, &end, 0);
if (*end != '\0')
- einfo ("%P: warning: ignoring invalid -bmaxstack number %s\n",
+ einfo (_("%P: warning: ignoring invalid -bmaxstack number %s\n"),
optarg);
else
maxstack = val;
case OPTION_MODTYPE:
if (*optarg == 'S')
{
- link_info.shared = TRUE;
+ link_info.type = type_dll;
++optarg;
}
if (*optarg == '\0' || optarg[1] == '\0')
- einfo ("%P: warning: ignoring invalid module type %s\n", optarg);
+ einfo (_("%P: warning: ignoring invalid module type %s\n"), optarg);
else
modtype = (*optarg << 8) | optarg[1];
break;
expression. */
val = bfd_scan_vma (optarg, &end, 0);
if (*end != '\0')
- einfo ("%P: warning: ignoring invalid -pD number %s\n", optarg);
+ einfo (_("%P: warning: ignoring invalid -pD number %s\n"), optarg);
else
{
etree_type *t;
within the file. */
val = bfd_scan_vma (optarg, &end, 0);
if (*end != '\0')
- einfo ("%P: warning: ignoring invalid -pT number %s\n", optarg);
+ einfo (_("%P: warning: ignoring invalid -pT number %s\n"), optarg);
else
{
etree_type *t;
static void
gld${EMULATION_NAME}_after_open (void)
{
- bfd_boolean r;
+ enum output_type t;
struct set_info *p;
after_open_default ();
entries for all references to symbols, even in a final
executable. Of course, we only want to do this if we are
producing an XCOFF output file. */
- r = link_info.relocatable;
+ t = link_info.type;
if (strstr (bfd_get_target (link_info.output_bfd), "xcoff") != NULL)
- link_info.relocatable = TRUE;
+ link_info.type = type_relocatable;
ldctor_build_sets ();
- link_info.relocatable = r;
+ link_info.type = t;
/* For each set, record the size, so that the XCOFF backend can
output the correct csect length. */
size = (p->count + 2) * 4;
if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info,
p->h, size))
- einfo ("%F%P: bfd_xcoff_link_record_set failed: %E\n");
+ einfo (_("%F%P: bfd_xcoff_link_record_set failed: %E\n"));
}
}
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;
}
}
/* Executables and shared objects must always have .text, .data
and .bss output sections, so that the header can refer to them.
The kernel refuses to load objects that have missing sections. */
- if (!link_info.relocatable)
+ if (!bfd_link_relocatable (&link_info))
for (i = 0; i < ARRAY_SIZE (must_keep_sections); i++)
{
asection *sec;
sec = bfd_get_section_by_name (link_info.output_bfd,
must_keep_sections[i]);
if (sec == NULL)
- einfo ("%P: can't find required output section %s\n", must_keep_sections[i]);
+ einfo (_("%P: can't find required output section %s\n"),
+ must_keep_sections[i]);
else
sec->flags |= SEC_KEEP;
}
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 in import files\n",
+ 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 import/export file\n",
+ 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 import/export file\n",
+ 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));
}
rs = &s->reloc_statement;
if (rs->name == NULL)
- einfo ("%F%P: only relocations against symbols are permitted\n");
+ einfo (_("%F%P: only relocations against symbols are permitted\n"));
if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info,
rs->name))
- einfo ("%F%P: bfd_xcoff_link_count_reloc failed: %E\n");
+ einfo (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n"));
}
if (s->header.type == lang_assignment_statement_enum)
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);
{
*isfile = 0;
- if (link_info.relocatable && config.build_constructors)
+ if (bfd_link_relocatable (&link_info) && config.build_constructors)
return
EOF
sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c
-echo ' ; else if (link_info.relocatable) return' >> e${EMULATION_NAME}.c
+echo ' ; else if (bfd_link_relocatable (&link_info)) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c
echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c
{
*isfile = 1;
- if (link_info.relocatable && config.build_constructors)
+ if (bfd_link_relocatable (&link_info) && config.build_constructors)
return "ldscripts/${EMULATION_NAME}.xu";
- else if (link_info.relocatable)
+ else if (bfd_link_relocatable (&link_info))
return "ldscripts/${EMULATION_NAME}.xr";
else if (!config.text_read_only)
return "ldscripts/${EMULATION_NAME}.xbn";
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;
}
hll_default,
after_parse_default,
gld${EMULATION_NAME}_after_open,
+ after_check_relocs_default,
after_allocation_default,
gld${EMULATION_NAME}_set_output_arch,
gld${EMULATION_NAME}_choose_target,
NULL, /* list_options */
NULL, /* recognized_file */
NULL, /* find potential_libraries */
- NULL /* new_vers_pattern */
+ NULL, /* new_vers_pattern */
+ NULL, /* extra_map_file_text */
+ ${LDEMUL_EMIT_CTF_EARLY-NULL},
+ ${LDEMUL_EXAMINE_STRTAB_FOR_CTF-NULL}
};
EOF