aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2021-06-17 09:57:40 -0700
committerFangrui Song <maskray@google.com>2021-06-17 09:57:40 -0700
commite8f6c2a5bab10b039a12b69a30a8248c91161e11 (patch)
tree4ced3beb85ae6e760db5aa1c291f7e1a06282d93 /ld
parent2af6d46fd331b8e632bb9245614bad0c974392a4 (diff)
downloadgdb-e8f6c2a5bab10b039a12b69a30a8248c91161e11.zip
gdb-e8f6c2a5bab10b039a12b69a30a8248c91161e11.tar.gz
gdb-e8f6c2a5bab10b039a12b69a30a8248c91161e11.tar.bz2
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.
Diffstat (limited to 'ld')
-rw-r--r--ld/ld.texi5
-rw-r--r--ld/ldlex.h1
-rw-r--r--ld/lexsup.c5
3 files changed, 11 insertions, 0 deletions
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 @@ address the OS chooses for them (which can vary between invocations). Like
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 @@ enum option_values
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 @@ static const struct ld_option ld_options[] =
'\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 @@ parse_args (unsigned argc, char **argv)
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)
{