ld: Add -no-pie
gold has had this option for many years. Not having this option caused
some confusion to users. The help message clarifies the default state.
ld/
* ldlex.h (enum option_values): Add OPTION_NO_PIE.
* lexsup.c (struct ld_options): Add -no-pie.
(parse_args): Handle -no-pie.
* ld.texi: Document -no-pie.
diff --git a/ld/ld.texi b/ld/ld.texi
index e16c638..f810536 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -2150,6 +2150,11 @@
normal dynamically linked executables they can be executed and symbols
defined in the executable cannot be overridden by shared libraries.
+@kindex -no-pie
+@item -no-pie
+@cindex position dependent executables
+Create a position dependent executable. This is the default.
+
@kindex -qmagic
@item -qmagic
This option is ignored for Linux compatibility.
diff --git a/ld/ldlex.h b/ld/ldlex.h
index e0f0241..9e8bf5f 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -133,6 +133,7 @@
OPTION_ACCEPT_UNKNOWN_INPUT_ARCH,
OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH,
OPTION_PIE,
+ OPTION_NO_PIE,
OPTION_UNRESOLVED_SYMBOLS,
OPTION_WARN_UNRESOLVED_SYMBOLS,
OPTION_ERROR_UNRESOLVED_SYMBOLS,
diff --git a/ld/lexsup.c b/ld/lexsup.c
index dcb2d9d..00274c5 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -453,6 +453,8 @@
'\0', NULL, N_("Create a position independent executable"), ONE_DASH },
{ {"pic-executable", no_argument, NULL, OPTION_PIE},
'\0', NULL, NULL, TWO_DASHES },
+ { {"no-pie", no_argument, NULL, OPTION_NO_PIE},
+ '\0', NULL, N_("Create a position dependent executable (default)"), ONE_DASH },
{ {"sort-common", optional_argument, NULL, OPTION_SORT_COMMON},
'\0', N_("[=ascending|descending]"),
N_("Sort common symbols by alignment [in specified order]"),
@@ -1262,6 +1264,9 @@
else
einfo (_("%F%P: -shared not supported\n"));
break;
+ case OPTION_NO_PIE:
+ link_info.type = type_pde;
+ break;
case OPTION_PIE:
if (config.has_shared)
{