aboutsummaryrefslogtreecommitdiff
path: root/ld/emultempl/aix.em
diff options
context:
space:
mode:
Diffstat (limited to 'ld/emultempl/aix.em')
-rw-r--r--ld/emultempl/aix.em26
1 files changed, 22 insertions, 4 deletions
diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
index a540d0b..f4dff85 100644
--- a/ld/emultempl/aix.em
+++ b/ld/emultempl/aix.em
@@ -134,6 +134,9 @@ static lang_input_statement_type *initfini_file;
/* Whether to do run time linking */
static boolean rtld;
+/* Explicit command line library path, -blibpath */
+static char *command_line_blibpath = NULL;
+
/* This routine is called before anything else is done. */
static void
@@ -196,6 +199,8 @@ gld${EMULATION_NAME}_parse_args (argc, argv)
OPTION_UNIX,
OPTION_32,
OPTION_64,
+ OPTION_LIBPATH,
+ OPTION_NOLIBPATH,
};
/* -binitfini has special handling in the linker backend. The native linker
@@ -252,6 +257,8 @@ gld${EMULATION_NAME}_parse_args (argc, argv)
{"b64", no_argument, NULL, OPTION_64},
{"static", no_argument, NULL, OPTION_NOAUTOIMP},
{"unix", no_argument, NULL, OPTION_UNIX},
+ {"blibpath", required_argument, NULL, OPTION_LIBPATH},
+ {"bnolibpath", required_argument, NULL, OPTION_NOLIBPATH},
{NULL, no_argument, NULL, 0}
};
@@ -518,6 +525,14 @@ gld${EMULATION_NAME}_parse_args (argc, argv)
symbol_mode_mask = 0x0e;
break;
+ case OPTION_LIBPATH:
+ command_line_blibpath=optarg;
+ break;
+
+ case OPTION_NOLIBPATH:
+ command_line_blibpath=NULL;
+ break;
+
}
return 1;
@@ -638,10 +653,13 @@ gld${EMULATION_NAME}_before_allocation ()
.loader relocs for them. */
lang_for_each_statement (gld${EMULATION_NAME}_find_relocs);
- /* We need to build LIBPATH from the -L arguments. If any -rpath
- arguments were used, though, we use -rpath instead, as a GNU
- extension. */
- if (command_line.rpath != NULL)
+ /* Precedence of LIBPATH
+ -blibpath: native support always first
+ -rpath: gnu extension
+ -L build from command line -L's */
+ if (command_line_blibpath != NULL)
+ libpath = command_line_blibpath;
+ else if (command_line.rpath != NULL)
libpath = command_line.rpath;
else if (search_head == NULL)
libpath = (char *) "";