/* ${ELFSIZE} bit ELF emulation code for ${EMULATION_NAME}
Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Written by Steve Chamberlain <sac@cygnus.com>
ELF support by Ian Lance Taylor <ian@cygnus.com>
#include "sysdep.h"
#include "bfd.h"
#include "libiberty.h"
+#include "filenames.h"
#include "safe-ctype.h"
#include "getopt.h"
#include "md5.h"
if [ "x${USE_LIBPATH}" = xyes ] ; then
case ${target} in
- *-*-linux-* | *-*-k*bsd*-*)
+ *-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
fragment <<EOF
#ifdef HAVE_GLOB
#include <glob.h>
gld${EMULATION_NAME}_before_parse (void)
{
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
- config.dynamic_link = ${DYNAMIC_LINK-TRUE};
+ input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
+ config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
}
EOF
/* Tell the ELF linker that we don't want the output file to have a
DT_NEEDED entry for this file, unless it is used to resolve
references in a regular object. */
- if (entry->add_DT_NEEDED_for_regular)
+ if (entry->flags.add_DT_NEEDED_for_regular)
link_class = DYN_AS_NEEDED;
/* Tell the ELF linker that we don't want the output file to have a
DT_NEEDED entry for any dynamic library in DT_NEEDED tags from
this file at all. */
- if (!entry->add_DT_NEEDED_for_dynamic)
+ if (!entry->flags.add_DT_NEEDED_for_dynamic)
link_class |= DYN_NO_ADD_NEEDED;
- if (entry->just_syms_flag
+ if (entry->flags.just_syms
&& (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0)
einfo (_("%P%F: --just-symbols may not be used on DSO: %B\n"),
entry->the_bfd);
return FALSE;
bfd_elf_set_dyn_lib_class (entry->the_bfd,
- (enum dynamic_lib_link_class) link_class);
+ (enum dynamic_lib_link_class) link_class);
/* Continue on with normal load_symbols processing. */
return FALSE;
{
const char *suffix;
- if (strcmp (soname, l->name) == 0)
+ if (filename_cmp (soname, l->name) == 0)
{
/* Probably can't happen, but it's an easy check. */
continue;
suffix += sizeof ".so." - 1;
- if (strncmp (soname, l->name, suffix - l->name) == 0)
+ if (filename_ncmp (soname, l->name, suffix - l->name) == 0)
{
/* Here we know that S is a dynamic object FOO.SO.VER1, and
the object we are considering needs a dynamic object
if (soname == NULL)
soname = lbasename (s->filename);
- if (strncmp (soname, global_needed->name, suffix - global_needed->name) == 0)
+ if (filename_ncmp (soname, global_needed->name, suffix - global_needed->name) == 0)
einfo ("%P: warning: %s, needed by %B, may conflict with %s\n",
global_needed->name, global_needed->by, soname);
}
EOF
case ${target} in
- *-*-linux-* | *-*-k*bsd*-*)
+ *-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
fragment <<EOF
{
struct bfd_link_needed_list *l;
/* First strip off everything before the last '/'. */
soname = lbasename (abfd->filename);
- if (trace_file_tries)
+ if (verbose)
info_msg (_("found %s at %s\n"), soname, name);
global_found = NULL;
#endif
static bfd_boolean
-gld${EMULATION_NAME}_check_ld_elf_hints (const char *name, int force)
+gld${EMULATION_NAME}_check_ld_elf_hints (const struct bfd_link_needed_list *l,
+ int force)
{
static bfd_boolean initialized;
static char *ld_elf_hints;
if (ld_elf_hints == NULL)
return FALSE;
- needed.by = NULL;
- needed.name = name;
- return gld${EMULATION_NAME}_search_needed (ld_elf_hints, & needed,
- force);
+ needed.by = l->by;
+ needed.name = l->name;
+ return gld${EMULATION_NAME}_search_needed (ld_elf_hints, &needed, force);
}
EOF
# FreeBSD
;;
- *-*-linux-* | *-*-k*bsd*-*)
+ *-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
fragment <<EOF
/* For a native linker, check the file /etc/ld.so.conf for directories
in which we may find shared libraries. /etc/ld.so.conf is really
}
static bfd_boolean
-gld${EMULATION_NAME}_check_ld_so_conf (const char *name, int force)
+gld${EMULATION_NAME}_check_ld_so_conf (const struct bfd_link_needed_list *l,
+ int force)
{
static bfd_boolean initialized;
static char *ld_so_conf;
return FALSE;
- needed.by = NULL;
- needed.name = name;
+ needed.by = l->by;
+ needed.name = l->name;
return gld${EMULATION_NAME}_search_needed (ld_so_conf, &needed, force);
}
&& (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
return;
- if (strcmp (s->filename, global_needed->name) == 0)
+ if (filename_cmp (s->filename, global_needed->name) == 0)
{
global_found = s;
return;
}
- if (s->search_dirs_flag)
+ if (s->flags.search_dirs)
{
const char *f = strrchr (s->filename, '/');
if (f != NULL
- && strcmp (f + 1, global_needed->name) == 0)
+ && filename_cmp (f + 1, global_needed->name) == 0)
{
global_found = s;
return;
soname = bfd_elf_get_dt_soname (s->the_bfd);
if (soname != NULL
- && strcmp (soname, global_needed->name) == 0)
+ && filename_cmp (soname, global_needed->name) == 0)
{
global_found = s;
return;
struct bfd_link_needed_list *needed, *l;
struct elf_link_hash_table *htab;
+ after_open_default ();
+
htab = elf_hash_table (&link_info);
if (!is_elf_hash_table (htab))
return;
{
struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
struct build_id_info *b =
- (struct build_id_info *) xmalloc (sizeof *b);
+ (struct build_id_info *) xmalloc (sizeof *b);
b->style = link_info.emit_note_gnu_build_id;
b->sec = s;
if (!warn_eh_frame)
{
s = bfd_get_section_by_name (abfd, ".eh_frame");
- warn_eh_frame
- = (s
- && s->size > 8
- && !bfd_is_abs_section (s->output_section));
+ while (s != NULL
+ && (s->size <= 8
+ || bfd_is_abs_section (s->output_section)))
+ s = bfd_get_next_section_by_name (s);
+ warn_eh_frame = s != NULL;
}
if (elfbfd && warn_eh_frame)
break;
special action by the person doing the link. Note that the
needed list can actually grow while we are stepping through this
loop. */
- if (!link_info.executable)
- return;
needed = bfd_elf_get_needed_list (link_info.output_bfd, &link_info);
for (l = needed; l != NULL; l = l->next)
{
int force;
/* If the lib that needs this one was --as-needed and wasn't
- found to be needed, then this lib isn't needed either. */
+ found to be needed, then this lib isn't needed either. Skip
+ the lib when creating a shared object unless we are copying
+ DT_NEEDED entres. */
if (l->by != NULL
- && (bfd_elf_get_dyn_lib_class (l->by) & DYN_AS_NEEDED) != 0)
+ && ((bfd_elf_get_dyn_lib_class (l->by) & DYN_AS_NEEDED) != 0
+ || (!link_info.executable
+ && bfd_elf_get_dyn_lib_class (l->by) & DYN_NO_ADD_NEEDED) != 0))
continue;
/* If we've already seen this file, skip it. */
n.by = l->by;
n.name = l->name;
nn.by = l->by;
- if (trace_file_tries)
+ if (verbose)
info_msg (_("%s needed by %B\n"), l->name, l->by);
/* As-needed libs specified on the command line (or linker script)
case ${target} in
*-*-freebsd* | *-*-dragonfly*)
fragment <<EOF
- if (gld${EMULATION_NAME}_check_ld_elf_hints (l->name, force))
+ if (gld${EMULATION_NAME}_check_ld_elf_hints (l, force))
break;
EOF
# FreeBSD
;;
- *-*-linux-* | *-*-k*bsd*-*)
+ *-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
# Linux
fragment <<EOF
- if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
+ if (gld${EMULATION_NAME}_check_ld_so_conf (l, force))
break;
EOF
fragment <<EOF
/* used by before_allocation and handle_option. */
-static void
+static void
gld${EMULATION_NAME}_append_to_separated_string (char **to, char *op_arg)
{
if (*to == NULL)
{
const char *audit_libs = elf_dt_audit (abfd);
- /* If the input bfd contains an audit entry, we need to add it as
+ /* If the input bfd contains an audit entry, we need to add it as
a dep audit entry. */
if (audit_libs && *audit_libs != '\0')
{
(link_info.output_bfd, command_line.soname, rpath,
command_line.filter_shlib, audit, depaudit,
(const char * const *) command_line.auxiliary_filters,
- &link_info, &sinterp, lang_elf_version_info)))
+ &link_info, &sinterp)))
einfo ("%P%F: failed to set dynamic section sizes: %E\n");
${ELF_INTERPRETER_SET_DEFAULT}
char *msg;
bfd_boolean ret;
- if (is->just_syms_flag)
+ if (is->flags.just_syms)
continue;
s = bfd_get_section_by_name (is->the_bfd, ".gnu.warning");
const char *filename;
char *string;
- if (! entry->maybe_archive)
+ if (! entry->flags.maybe_archive)
return FALSE;
filename = entry->filename;
if (bfd_check_format (entry->the_bfd, bfd_object)
&& (entry->the_bfd->flags & DYNAMIC) != 0)
{
- ASSERT (entry->maybe_archive && entry->search_dirs_flag);
+ ASSERT (entry->flags.maybe_archive && entry->flags.search_dirs);
/* Rather than duplicating the logic above. Just use the
filename we recorded earlier. */
{ ".sdata",
SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_SMALL_DATA,
0, 0, 0, 0 },
- { 0,
+ { ".comment",
SEC_HAS_CONTENTS,
0, 0, 0, 0 },
};
If the section already exists but does not have any flags
set, then it has been created by the linker, probably as a
result of a --section-start command line switch. */
- lang_add_section (&os->children, s, os);
+ lang_add_section (&os->children, s, NULL, os);
return os;
}
unused one and use that. */
if (match_by_name)
{
- lang_add_section (&match_by_name->children, s, match_by_name);
+ lang_add_section (&match_by_name->children, s, NULL, match_by_name);
return match_by_name;
}
if (!orphan_init_done)
{
- lang_output_section_statement_type *lookup;
struct orphan_save *ho;
for (ho = hold; ho < hold + sizeof (hold) / sizeof (hold[0]); ++ho)
if (ho->os != NULL && ho->os->flags == 0)
ho->os->flags = ho->flags;
}
- lookup = hold[orphan_bss].os;
- if (lookup == NULL)
- lookup = &lang_output_section_statement.head->output_section_statement;
- for (; lookup != NULL; lookup = lookup->next)
- if ((lookup->bfd_section != NULL
- && (lookup->bfd_section->flags & SEC_DEBUGGING) != 0)
- || strcmp (lookup->name, ".comment") == 0)
- break;
- hold[orphan_nonalloc].os = lookup ? lookup->prev : NULL;
- hold[orphan_nonalloc].name = ".comment";
orphan_init_done = 1;
}
&& hold[orphan_text].os != NULL)
{
os = hold[orphan_text].os;
- lang_add_section (&os->children, s, os);
+ lang_add_section (&os->children, s, NULL, os);
return os;
}
&& ((iself && sh_type == SHT_NOTE)
|| (!iself && CONST_STRNEQ (secname, ".note"))))
place = &hold[orphan_interp];
- else if ((s->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0)
+ else if ((s->flags & (SEC_LOAD | SEC_HAS_CONTENTS | SEC_THREAD_LOCAL)) == 0)
place = &hold[orphan_bss];
else if ((s->flags & SEC_SMALL_DATA) != 0)
place = &hold[orphan_sdata];
fi
fi
-if test -n "$PARSE_AND_LIST_ARGS_CASES" -o x"$GENERATE_SHLIB_SCRIPT" = xyes; then
-
if test -n "$PARSE_AND_LIST_PROLOGUE" ; then
fragment <<EOF
$PARSE_AND_LIST_PROLOGUE
(int ns, char **shortopts, int nl, struct option **longopts,
int nrl ATTRIBUTE_UNUSED, struct option **really_longopts ATTRIBUTE_UNUSED)
{
+EOF
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
static const char xtra_short[] = "${PARSE_AND_LIST_SHORTOPTS}z:P:";
+EOF
+else
+fragment <<EOF
+ static const char xtra_short[] = "${PARSE_AND_LIST_SHORTOPTS}z:";
+EOF
+fi
+fragment <<EOF
static const struct option xtra_long[] = {
- {"build-id", optional_argument, NULL, OPTION_BUILD_ID},
+EOF
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
{"audit", required_argument, NULL, OPTION_AUDIT},
- {"depaudit", required_argument, NULL, 'P'},
+ {"Bgroup", no_argument, NULL, OPTION_GROUP},
+EOF
+fi
+fragment <<EOF
+ {"build-id", optional_argument, NULL, OPTION_BUILD_ID},
EOF
-
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
fragment <<EOF
+ {"depaudit", required_argument, NULL, 'P'},
{"disable-new-dtags", no_argument, NULL, OPTION_DISABLE_NEW_DTAGS},
{"enable-new-dtags", no_argument, NULL, OPTION_ENABLE_NEW_DTAGS},
{"eh-frame-hdr", no_argument, NULL, OPTION_EH_FRAME_HDR},
{"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS},
{"hash-style", required_argument, NULL, OPTION_HASH_STYLE},
- {"Bgroup", no_argument, NULL, OPTION_GROUP},
EOF
fi
-
if test -n "$PARSE_AND_LIST_LONGOPTS" ; then
fragment <<EOF
$PARSE_AND_LIST_LONGOPTS
EOF
fi
-
fragment <<EOF
{NULL, no_argument, NULL, 0}
};
if (strcmp (optarg, "none"))
link_info.emit_note_gnu_build_id = xstrdup (optarg);
break;
+
+EOF
+
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
case OPTION_AUDIT:
- gld${EMULATION_NAME}_append_to_separated_string (&audit, optarg);
+ gld${EMULATION_NAME}_append_to_separated_string (&audit, optarg);
break;
+
case 'P':
gld${EMULATION_NAME}_append_to_separated_string (&depaudit, optarg);
break;
-EOF
-
-if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
-fragment <<EOF
case OPTION_DISABLE_NEW_DTAGS:
link_info.new_dtags = FALSE;
break;
einfo (_("%P%F: invalid hash style \`%s'\n"), optarg);
break;
+EOF
+fi
+fragment <<EOF
case 'z':
- if (strcmp (optarg, "initfirst") == 0)
+ if (strcmp (optarg, "defs") == 0)
+ link_info.unresolved_syms_in_objects = RM_GENERATE_ERROR;
+ else if (strcmp (optarg, "muldefs") == 0)
+ link_info.allow_multiple_definition = TRUE;
+ else if (CONST_STRNEQ (optarg, "max-page-size="))
+ {
+ char *end;
+
+ config.maxpagesize = strtoul (optarg + 14, &end, 0);
+ if (*end || (config.maxpagesize & (config.maxpagesize - 1)) != 0)
+ einfo (_("%P%F: invalid maxium page size \`%s'\n"),
+ optarg + 14);
+ }
+ else if (CONST_STRNEQ (optarg, "common-page-size="))
+ {
+ char *end;
+ config.commonpagesize = strtoul (optarg + 17, &end, 0);
+ if (*end
+ || (config.commonpagesize & (config.commonpagesize - 1)) != 0)
+ einfo (_("%P%F: invalid common page size \`%s'\n"),
+ optarg + 17);
+ }
+ else if (CONST_STRNEQ (optarg, "stack-size="))
+ {
+ char *end;
+ link_info.stacksize = strtoul (optarg + 11, &end, 0);
+ if (*end || link_info.stacksize < 0)
+ einfo (_("%P%F: invalid stack size \`%s'\n"), optarg + 11);
+ if (!link_info.stacksize)
+ /* Use -1 for explicit no-stack, because zero means
+ 'default'. */
+ link_info.stacksize = -1;
+ }
+ else if (strcmp (optarg, "execstack") == 0)
+ {
+ link_info.execstack = TRUE;
+ link_info.noexecstack = FALSE;
+ }
+ else if (strcmp (optarg, "noexecstack") == 0)
+ {
+ link_info.noexecstack = TRUE;
+ link_info.execstack = FALSE;
+ }
+EOF
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
+ else if (strcmp (optarg, "global") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_GLOBAL;
+ else if (strcmp (optarg, "initfirst") == 0)
link_info.flags_1 |= (bfd_vma) DF_1_INITFIRST;
else if (strcmp (optarg, "interpose") == 0)
link_info.flags_1 |= (bfd_vma) DF_1_INTERPOSE;
link_info.flags |= (bfd_vma) DF_ORIGIN;
link_info.flags_1 |= (bfd_vma) DF_1_ORIGIN;
}
- else if (strcmp (optarg, "defs") == 0)
- link_info.unresolved_syms_in_objects = RM_GENERATE_ERROR;
- else if (strcmp (optarg, "muldefs") == 0)
- link_info.allow_multiple_definition = TRUE;
else if (strcmp (optarg, "combreloc") == 0)
link_info.combreloc = TRUE;
else if (strcmp (optarg, "nocombreloc") == 0)
link_info.combreloc = FALSE;
else if (strcmp (optarg, "nocopyreloc") == 0)
link_info.nocopyreloc = TRUE;
- else if (strcmp (optarg, "execstack") == 0)
- {
- link_info.execstack = TRUE;
- link_info.noexecstack = FALSE;
- }
- else if (strcmp (optarg, "noexecstack") == 0)
- {
- link_info.noexecstack = TRUE;
- link_info.execstack = FALSE;
- }
-EOF
-
- if test -n "$COMMONPAGESIZE"; then
-fragment <<EOF
else if (strcmp (optarg, "relro") == 0)
link_info.relro = TRUE;
else if (strcmp (optarg, "norelro") == 0)
link_info.relro = FALSE;
+ else if (strcmp (optarg, "text") == 0)
+ link_info.error_textrel = TRUE;
+ else if (strcmp (optarg, "notext") == 0)
+ link_info.error_textrel = FALSE;
+ else if (strcmp (optarg, "textoff") == 0)
+ link_info.error_textrel = FALSE;
EOF
- fi
+fi
fragment <<EOF
- else if (CONST_STRNEQ (optarg, "max-page-size="))
- {
- char *end;
-
- config.maxpagesize = strtoul (optarg + 14, &end, 0);
- if (*end || (config.maxpagesize & (config.maxpagesize - 1)) != 0)
- einfo (_("%P%F: invalid maxium page size \`%s'\n"),
- optarg + 14);
- }
- else if (CONST_STRNEQ (optarg, "common-page-size="))
- {
- char *end;
- config.commonpagesize = strtoul (optarg + 17, &end, 0);
- if (*end
- || (config.commonpagesize & (config.commonpagesize - 1)) != 0)
- einfo (_("%P%F: invalid common page size \`%s'\n"),
- optarg + 17);
- }
- /* What about the other Solaris -z options? FIXME. */
+ else
+ einfo (_("%P: warning: -z %s ignored.\n"), optarg);
break;
EOF
-fi
if test -n "$PARSE_AND_LIST_ARGS_CASES" ; then
fragment <<EOF
static void
gld${EMULATION_NAME}_list_options (FILE * file)
{
- fprintf (file, _("\
- --build-id[=STYLE] Generate build ID note\n"));
+EOF
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
fprintf (file, _("\
--audit=AUDITLIB Specify a library to use for auditing\n"));
fprintf (file, _("\
- -P AUDITLIB, --depaudit=AUDITLIB\n" "\
- Specify a library to use for auditing dependencies\n"));
+ -Bgroup Selects group name lookup rules for DSO\n"));
+EOF
+fi
+fragment <<EOF
+ fprintf (file, _("\
+ --build-id[=STYLE] Generate build ID note\n"));
EOF
-
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
fragment <<EOF
fprintf (file, _("\
- -Bgroup Selects group name lookup rules for DSO\n"));
+ -P AUDITLIB, --depaudit=AUDITLIB\n" "\
+ Specify a library to use for auditing dependencies\n"));
fprintf (file, _("\
--disable-new-dtags Disable new dynamic tags\n"));
fprintf (file, _("\
fprintf (file, _("\
--eh-frame-hdr Create .eh_frame_hdr section\n"));
fprintf (file, _("\
+ --exclude-libs=LIBS Make all symbols in LIBS hidden\n"));
+ fprintf (file, _("\
--hash-style=STYLE Set hash style to sysv, gnu or both\n"));
fprintf (file, _("\
-z combreloc Merge dynamic relocs into one section and sort\n"));
+EOF
+fi
+
+fragment <<EOF
+ fprintf (file, _("\
+ -z common-page-size=SIZE Set common page size to SIZE\n"));
fprintf (file, _("\
-z defs Report unresolved symbols in object files.\n"));
fprintf (file, _("\
-z execstack Mark executable as requiring executable stack\n"));
+EOF
+
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
+ fprintf (file, _("\
+ -z global Make symbols in DSO available for subsequently\n\
+ loaded objects\n"));
fprintf (file, _("\
-z initfirst Mark DSO to be initialized first at runtime\n"));
fprintf (file, _("\
-z lazy Mark object lazy runtime binding (default)\n"));
fprintf (file, _("\
-z loadfltr Mark object requiring immediate process\n"));
+EOF
+fi
+
+fragment <<EOF
+ fprintf (file, _("\
+ -z max-page-size=SIZE Set maximum page size to SIZE\n"));
fprintf (file, _("\
-z muldefs Allow multiple definitions\n"));
+EOF
+
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+fragment <<EOF
fprintf (file, _("\
-z nocombreloc Don't merge dynamic relocs into one section\n"));
fprintf (file, _("\
-z nodlopen Mark DSO not available to dlopen\n"));
fprintf (file, _("\
-z nodump Mark DSO not available to dldump\n"));
+EOF
+fi
+fragment <<EOF
fprintf (file, _("\
-z noexecstack Mark executable as not requiring executable stack\n"));
EOF
-
- if test -n "$COMMONPAGESIZE"; then
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
fragment <<EOF
fprintf (file, _("\
-z norelro Don't create RELRO program header\n"));
-EOF
- fi
-
-fragment <<EOF
fprintf (file, _("\
-z now Mark object non-lazy runtime binding\n"));
fprintf (file, _("\
-z origin Mark object requiring immediate \$ORIGIN\n\
- processing at runtime\n"));
-EOF
-
- if test -n "$COMMONPAGESIZE"; then
-fragment <<EOF
+ processing at runtime\n"));
fprintf (file, _("\
-z relro Create RELRO program header\n"));
-EOF
- fi
-
-fragment <<EOF
fprintf (file, _("\
- -z max-page-size=SIZE Set maximum page size to SIZE\n"));
- fprintf (file, _("\
- -z common-page-size=SIZE Set common page size to SIZE\n"));
- fprintf (file, _("\
- -z KEYWORD Ignored for Solaris compatibility\n"));
+ -z stacksize=SIZE Set size of stack segment\n"));
EOF
fi
EOF
fi
fi
-else
-fragment <<EOF
-#define gld${EMULATION_NAME}_add_options NULL
-#define gld${EMULATION_NAME}_handle_option NULL
-EOF
-if test x"$LDEMUL_LIST_OPTIONS" != xgld"$EMULATION_NAME"_list_options; then
-fragment <<EOF
-#define gld${EMULATION_NAME}_list_options NULL
-EOF
-fi
-fi
fragment <<EOF