summaryrefslogtreecommitdiff
path: root/ld/ldmain.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2003-01-06 16:14:01 +0000
committerDaniel Jacobowitz <dan@debian.org>2003-01-06 16:14:01 +0000
commit0c7183f17cdc00fdaf4cd6ce96c2dc806d43b335 (patch)
tree0ca21b813e3de83ac8a20ad75a529b3d94a4b16d /ld/ldmain.c
parentad8dc5ea5afadcb9a97d8f597d70c1d345577bdc (diff)
downloadbinutils-redhat-0c7183f17cdc00fdaf4cd6ce96c2dc806d43b335.tar.gz
* Makefile.am (eelf32iq10.c): Fix tab/whitespace mixup.
* Makefile.am (ldmain.o): Add @TARGET_SYSTEM_ROOT_DEFINE@. (GENSCRIPTS): Add @use_sysroot@. * Makefile.in: Regenerated. * configure.host: Move setting of NATIVE_LIB_DIRS to... * configure.tgt: ... here. Use ${target} instead of ${host} for NATIVE_LIB_DIRS. * configure.in: Add --with-sysroot. * configure: Regenerated. * genscripts.sh: Accept use_sysroot option. Set new variables NATIVE and USE_LIBPATH. Prepend "=" to directory names if $use_sysroot. Don't search $tool_lib if $use_sysroot. * ldfile.c (ldfile_add_library_path): Handle leading '='. * ldmain.c (TARGET_SYSTEM_ROOT): Define if not defined. (ld_sysroot): New variable. (main): Initialize ld_sysroot. * ldmain.h (ld_sysroot): New extern. * emultempl/elf32.em: Use NATIVE and USE_LIBPATH instead of searching $EMULATION_LIBPATH. (gld${EMULATION_NAME}_add_sysroot): New function. (gld${EMULATION_NAME}_check_ld_so_conf): Use it. Honor ld_sysroot. (gld${EMULATION_NAME}_after_open): Likewise. Only search environment variables if $NATIVE. * ld.texinfo (Options): Mention "=" prefix in the description of -L. * NEWS: Mention --with-sysroot. * emulparams/elf32bmipn32-defs.sh: Set NATIVE and LIBPATH_SUFFIX instead of setting LIB_PATH. * emulparams/elf32ppc.sh: Likewise. * emulparams/elf64_s390.sh: Likewise. * emulparams/elf64_sparc.sh: Likewise. * emulparams/elf64ppc.sh: Likewise. * emulparams/elf_x86_64.sh: Likewise. * emulparams/elf64_aix.sh: Add "=" prefixes to LIB_PATH. * emulparams/elf64hppa.sh: Add "=" prefixes to LIB_PATH.
Diffstat (limited to 'ld/ldmain.c')
-rw-r--r--ld/ldmain.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 3185befcc0..0117b1c3a8 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -55,6 +55,10 @@ extern PTR sbrk ();
#endif
#endif
+#ifndef TARGET_SYSTEM_ROOT
+#define TARGET_SYSTEM_ROOT ""
+#endif
+
int main PARAMS ((int, char **));
static char *get_emulation PARAMS ((int, char **));
@@ -68,6 +72,9 @@ const char *output_filename = "a.out";
/* Name this program was invoked by. */
char *program_name;
+/* The prefix for system library directories. */
+char *ld_sysroot;
+
/* The file that we're creating. */
bfd *output_bfd = 0;
@@ -189,6 +196,23 @@ main (argc, argv)
xatexit (remove_output);
+#ifdef TARGET_SYSTEM_ROOT_RELOCATABLE
+ ld_sysroot = make_relative_prefix (program_name, BINDIR,
+ TARGET_SYSTEM_ROOT);
+ if (ld_sysroot)
+ {
+ struct stat s;
+ int res = stat (ld_sysroot, &s) == 0 && S_ISDIR (s.st_mode);
+ if (!res)
+ {
+ free (ld_sysroot);
+ ld_sysroot = TARGET_SYSTEM_ROOT;
+ }
+ }
+#else
+ ld_sysroot = TARGET_SYSTEM_ROOT;
+#endif
+
/* Set the default BFD target based on the configured target. Doing
this permits the linker to be configured for a particular target,
and linked against a shared BFD library which was configured for