Line 2104... |
Line 2104... |
|
|
EOF
|
EOF
|
fi
|
fi
|
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
|
if test -n "$PARSE_AND_LIST_PROLOGUE" ; then
|
fragment <
|
fragment <
|
$PARSE_AND_LIST_PROLOGUE
|
$PARSE_AND_LIST_PROLOGUE
|
EOF
|
EOF
|
fi
|
fi
|
Line 2128... |
Line 2126... |
static void
|
static void
|
gld${EMULATION_NAME}_add_options
|
gld${EMULATION_NAME}_add_options
|
(int ns, char **shortopts, int nl, struct option **longopts,
|
(int ns, char **shortopts, int nl, struct option **longopts,
|
int nrl ATTRIBUTE_UNUSED, struct option **really_longopts ATTRIBUTE_UNUSED)
|
int nrl ATTRIBUTE_UNUSED, struct option **really_longopts ATTRIBUTE_UNUSED)
|
{
|
{
|
|
EOF
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
static const char xtra_short[] = "${PARSE_AND_LIST_SHORTOPTS}z:P:";
|
static const char xtra_short[] = "${PARSE_AND_LIST_SHORTOPTS}z:P:";
|
|
EOF
|
|
else
|
|
fragment <
|
|
static const char xtra_short[] = "${PARSE_AND_LIST_SHORTOPTS}z:";
|
|
EOF
|
|
fi
|
|
fragment <
|
static const struct option xtra_long[] = {
|
static const struct option xtra_long[] = {
|
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
|
EOF
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
{"audit", required_argument, NULL, OPTION_AUDIT},
|
{"audit", required_argument, NULL, OPTION_AUDIT},
|
{"depaudit", required_argument, NULL, 'P'},
|
{"Bgroup", no_argument, NULL, OPTION_GROUP},
|
|
EOF
|
|
fi
|
|
fragment <
|
|
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
|
EOF
|
EOF
|
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
fragment <
|
fragment <
|
|
{"depaudit", required_argument, NULL, 'P'},
|
{"disable-new-dtags", no_argument, NULL, OPTION_DISABLE_NEW_DTAGS},
|
{"disable-new-dtags", no_argument, NULL, OPTION_DISABLE_NEW_DTAGS},
|
{"enable-new-dtags", no_argument, NULL, OPTION_ENABLE_NEW_DTAGS},
|
{"enable-new-dtags", no_argument, NULL, OPTION_ENABLE_NEW_DTAGS},
|
{"eh-frame-hdr", no_argument, NULL, OPTION_EH_FRAME_HDR},
|
{"eh-frame-hdr", no_argument, NULL, OPTION_EH_FRAME_HDR},
|
{"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS},
|
{"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS},
|
{"hash-style", required_argument, NULL, OPTION_HASH_STYLE},
|
{"hash-style", required_argument, NULL, OPTION_HASH_STYLE},
|
{"Bgroup", no_argument, NULL, OPTION_GROUP},
|
|
EOF
|
EOF
|
fi
|
fi
|
|
|
if test -n "$PARSE_AND_LIST_LONGOPTS" ; then
|
if test -n "$PARSE_AND_LIST_LONGOPTS" ; then
|
fragment <
|
fragment <
|
$PARSE_AND_LIST_LONGOPTS
|
$PARSE_AND_LIST_LONGOPTS
|
EOF
|
EOF
|
fi
|
fi
|
|
|
fragment <
|
fragment <
|
{NULL, no_argument, NULL, 0}
|
{NULL, no_argument, NULL, 0}
|
};
|
};
|
|
|
*shortopts = (char *) xrealloc (*shortopts, ns + sizeof (xtra_short));
|
*shortopts = (char *) xrealloc (*shortopts, ns + sizeof (xtra_short));
|
Line 2184... |
Line 2195... |
if (optarg == NULL)
|
if (optarg == NULL)
|
optarg = DEFAULT_BUILD_ID_STYLE;
|
optarg = DEFAULT_BUILD_ID_STYLE;
|
if (strcmp (optarg, "none"))
|
if (strcmp (optarg, "none"))
|
link_info.emit_note_gnu_build_id = xstrdup (optarg);
|
link_info.emit_note_gnu_build_id = xstrdup (optarg);
|
break;
|
break;
|
|
|
|
EOF
|
|
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
case OPTION_AUDIT:
|
case OPTION_AUDIT:
|
gld${EMULATION_NAME}_append_to_separated_string (&audit, optarg);
|
gld${EMULATION_NAME}_append_to_separated_string (&audit, optarg);
|
break;
|
break;
|
|
|
case 'P':
|
case 'P':
|
gld${EMULATION_NAME}_append_to_separated_string (&depaudit, optarg);
|
gld${EMULATION_NAME}_append_to_separated_string (&depaudit, optarg);
|
break;
|
break;
|
|
|
EOF
|
|
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
|
case OPTION_DISABLE_NEW_DTAGS:
|
case OPTION_DISABLE_NEW_DTAGS:
|
link_info.new_dtags = FALSE;
|
link_info.new_dtags = FALSE;
|
break;
|
break;
|
|
|
case OPTION_ENABLE_NEW_DTAGS:
|
case OPTION_ENABLE_NEW_DTAGS:
|
Line 2234... |
Line 2247... |
}
|
}
|
else
|
else
|
einfo (_("%P%F: invalid hash style \`%s'\n"), optarg);
|
einfo (_("%P%F: invalid hash style \`%s'\n"), optarg);
|
break;
|
break;
|
|
|
|
EOF
|
|
fi
|
|
fragment <
|
case 'z':
|
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 (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 <
|
|
else if (strcmp (optarg, "initfirst") == 0)
|
link_info.flags_1 |= (bfd_vma) DF_1_INITFIRST;
|
link_info.flags_1 |= (bfd_vma) DF_1_INITFIRST;
|
else if (strcmp (optarg, "interpose") == 0)
|
else if (strcmp (optarg, "interpose") == 0)
|
link_info.flags_1 |= (bfd_vma) DF_1_INTERPOSE;
|
link_info.flags_1 |= (bfd_vma) DF_1_INTERPOSE;
|
else if (strcmp (optarg, "loadfltr") == 0)
|
else if (strcmp (optarg, "loadfltr") == 0)
|
link_info.flags_1 |= (bfd_vma) DF_1_LOADFLTR;
|
link_info.flags_1 |= (bfd_vma) DF_1_LOADFLTR;
|
Line 2264... |
Line 2315... |
else if (strcmp (optarg, "origin") == 0)
|
else if (strcmp (optarg, "origin") == 0)
|
{
|
{
|
link_info.flags |= (bfd_vma) DF_ORIGIN;
|
link_info.flags |= (bfd_vma) DF_ORIGIN;
|
link_info.flags_1 |= (bfd_vma) DF_1_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)
|
else if (strcmp (optarg, "combreloc") == 0)
|
link_info.combreloc = TRUE;
|
link_info.combreloc = TRUE;
|
else if (strcmp (optarg, "nocombreloc") == 0)
|
else if (strcmp (optarg, "nocombreloc") == 0)
|
link_info.combreloc = FALSE;
|
link_info.combreloc = FALSE;
|
else if (strcmp (optarg, "nocopyreloc") == 0)
|
else if (strcmp (optarg, "nocopyreloc") == 0)
|
link_info.nocopyreloc = TRUE;
|
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 <
|
|
else if (strcmp (optarg, "relro") == 0)
|
else if (strcmp (optarg, "relro") == 0)
|
link_info.relro = TRUE;
|
link_info.relro = TRUE;
|
else if (strcmp (optarg, "norelro") == 0)
|
else if (strcmp (optarg, "norelro") == 0)
|
link_info.relro = FALSE;
|
link_info.relro = FALSE;
|
EOF
|
EOF
|
fi
|
fi
|
|
|
fragment <
|
fragment <
|
else if (CONST_STRNEQ (optarg, "max-page-size="))
|
else
|
{
|
einfo (_("%P: warning: -z %s ignored.\n"), optarg);
|
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. */
|
|
break;
|
break;
|
EOF
|
EOF
|
fi
|
|
|
|
if test -n "$PARSE_AND_LIST_ARGS_CASES" ; then
|
if test -n "$PARSE_AND_LIST_ARGS_CASES" ; then
|
fragment <
|
fragment <
|
$PARSE_AND_LIST_ARGS_CASES
|
$PARSE_AND_LIST_ARGS_CASES
|
EOF
|
EOF
|
Line 2339... |
Line 2354... |
fragment <
|
fragment <
|
|
|
static void
|
static void
|
gld${EMULATION_NAME}_list_options (FILE * file)
|
gld${EMULATION_NAME}_list_options (FILE * file)
|
{
|
{
|
fprintf (file, _("\
|
EOF
|
--build-id[=STYLE] Generate build ID note\n"));
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
fprintf (file, _("\
|
fprintf (file, _("\
|
--audit=AUDITLIB Specify a library to use for auditing\n"));
|
--audit=AUDITLIB Specify a library to use for auditing\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-P AUDITLIB, --depaudit=AUDITLIB\n" "\
|
-Bgroup Selects group name lookup rules for DSO\n"));
|
Specify a library to use for auditing dependencies\n"));
|
EOF
|
|
fi
|
|
fragment <
|
|
fprintf (file, _("\
|
|
--build-id[=STYLE] Generate build ID note\n"));
|
EOF
|
EOF
|
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
fragment <
|
fragment <
|
fprintf (file, _("\
|
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, _("\
|
fprintf (file, _("\
|
--disable-new-dtags Disable new dynamic tags\n"));
|
--disable-new-dtags Disable new dynamic tags\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
--enable-new-dtags Enable new dynamic tags\n"));
|
--enable-new-dtags Enable new dynamic tags\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
--eh-frame-hdr Create .eh_frame_hdr section\n"));
|
--eh-frame-hdr Create .eh_frame_hdr section\n"));
|
fprintf (file, _("\
|
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"));
|
--hash-style=STYLE Set hash style to sysv, gnu or both\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z combreloc Merge dynamic relocs into one section and sort\n"));
|
-z combreloc Merge dynamic relocs into one section and sort\n"));
|
|
EOF
|
|
fi
|
|
|
|
fragment <
|
|
fprintf (file, _("\
|
|
-z common-page-size=SIZE Set common page size to SIZE\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z defs Report unresolved symbols in object files.\n"));
|
-z defs Report unresolved symbols in object files.\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z execstack Mark executable as requiring executable stack\n"));
|
-z execstack Mark executable as requiring executable stack\n"));
|
|
EOF
|
|
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z initfirst Mark DSO to be initialized first at runtime\n"));
|
-z initfirst Mark DSO to be initialized first at runtime\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z interpose Mark object to interpose all DSOs but executable\n"));
|
-z interpose Mark object to interpose all DSOs but executable\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z lazy Mark object lazy runtime binding (default)\n"));
|
-z lazy Mark object lazy runtime binding (default)\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z loadfltr Mark object requiring immediate process\n"));
|
-z loadfltr Mark object requiring immediate process\n"));
|
|
EOF
|
|
fi
|
|
|
|
fragment <
|
|
fprintf (file, _("\
|
|
-z max-page-size=SIZE Set maximum page size to SIZE\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z muldefs Allow multiple definitions\n"));
|
-z muldefs Allow multiple definitions\n"));
|
|
EOF
|
|
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
fragment <
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z nocombreloc Don't merge dynamic relocs into one section\n"));
|
-z nocombreloc Don't merge dynamic relocs into one section\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z nocopyreloc Don't create copy relocs\n"));
|
-z nocopyreloc Don't create copy relocs\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
Line 2388... |
Line 2430... |
-z nodelete Mark DSO non-deletable at runtime\n"));
|
-z nodelete Mark DSO non-deletable at runtime\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z nodlopen Mark DSO not available to dlopen\n"));
|
-z nodlopen Mark DSO not available to dlopen\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z nodump Mark DSO not available to dldump\n"));
|
-z nodump Mark DSO not available to dldump\n"));
|
|
EOF
|
|
fi
|
|
fragment <
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z noexecstack Mark executable as not requiring executable stack\n"));
|
-z noexecstack Mark executable as not requiring executable stack\n"));
|
EOF
|
EOF
|
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
if test -n "$COMMONPAGESIZE"; then
|
|
fragment <
|
fragment <
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z norelro Don't create RELRO program header\n"));
|
-z norelro Don't create RELRO program header\n"));
|
EOF
|
|
fi
|
|
|
|
fragment <
|
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z now Mark object non-lazy runtime binding\n"));
|
-z now Mark object non-lazy runtime binding\n"));
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z origin Mark object requiring immediate \$ORIGIN\n\
|
-z origin Mark object requiring immediate \$ORIGIN\n\
|
processing at runtime\n"));
|
processing at runtime\n"));
|
EOF
|
|
|
|
if test -n "$COMMONPAGESIZE"; then
|
|
fragment <
|
|
fprintf (file, _("\
|
fprintf (file, _("\
|
-z relro Create RELRO program header\n"));
|
-z relro Create RELRO program header\n"));
|
EOF
|
EOF
|
fi
|
fi
|
|
|
fragment <
|
|
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"));
|
|
EOF
|
|
fi
|
|
|
|
if test -n "$PARSE_AND_LIST_OPTIONS" ; then
|
if test -n "$PARSE_AND_LIST_OPTIONS" ; then
|
fragment <
|
fragment <
|
$PARSE_AND_LIST_OPTIONS
|
$PARSE_AND_LIST_OPTIONS
|
EOF
|
EOF
|
fi
|
fi
|
Line 2440... |
Line 2466... |
fragment <
|
fragment <
|
$PARSE_AND_LIST_EPILOGUE
|
$PARSE_AND_LIST_EPILOGUE
|
EOF
|
EOF
|
fi
|
fi
|
fi
|
fi
|
else
|
|
fragment <
|
|
#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 <
|
|
#define gld${EMULATION_NAME}_list_options NULL
|
|
EOF
|
|
fi
|
|
fi
|
|
|
|
fragment <
|
fragment <
|
|
|
struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
|
struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
|
{
|
{
|