ld: Add -no-pie
authorFangrui Song <maskray@google.com>
Thu, 17 Jun 2021 16:57:40 +0000 (09:57 -0700)
committerFangrui Song <maskray@google.com>
Thu, 17 Jun 2021 16:57:40 +0000 (09:57 -0700)
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.

ld/ld.texi
ld/ldlex.h
ld/lexsup.c

index e16c6387e70faaaf6f0cb99512195937990bf2ca..f810536d10b93d8cfd824172ad6960c548007d49 100644 (file)
@@ -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.
index e0f0241d9cc92aca972b40cfa4d2fd37490bc729..9e8bf5fb835343e2809b5578b4f21dc9a242d7b5 100644 (file)
@@ -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,
index dcb2d9d9ab39b8686ee868b79623363f984a0712..00274c500d0019cdf4f39b22e5e701d8b7a58bd6 100644 (file)
@@ -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)
            {