summaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorChris Demetriou <cgd@google.com>2001-11-02 01:13:09 +0000
committerChris Demetriou <cgd@google.com>2001-11-02 01:13:09 +0000
commit361b220ebe7753ec50bfdd6cde560cd242a5a9bb (patch)
tree1530967b9fb79685a6e91cc481fa5e5c3adc5d58 /ld
parente3eb7b4206ec2d414f225046e15d6a5db3721a3e (diff)
downloadbinutils-361b220ebe7753ec50bfdd6cde560cd242a5a9bb.tar.gz
binutils-361b220ebe7753ec50bfdd6cde560cd242a5a9bb.tar.bz2
binutils-361b220ebe7753ec50bfdd6cde560cd242a5a9bb.zip
2001-11-01 Chris Demetriou <cgd@broadcom.com>
* ld.texinfo (Options): Document new option, -nostdlib. * lexsup.c (OPTION_NOSTDLIB): New definition. (ld_options): Add entry for "nostdlib". (parse_args): Handle OPTIONS_NOSTDLIB. * ldfile.c (ldfile_add_library_path): Don't add directories to the search path if they weren't specified on the command line and -nostdlib was specified. * ld.h (ld_config_type): New member only_cmd_line_lib_dirs.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog11
-rw-r--r--ld/ld.h4
-rw-r--r--ld/ld.texinfo6
-rw-r--r--ld/ldfile.c3
-rw-r--r--ld/lexsup.c6
5 files changed, 30 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 05d1cb81474..9584c72e345 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,14 @@
+2001-11-01 Chris Demetriou <cgd@broadcom.com>
+
+ * ld.texinfo (Options): Document new option, -nostdlib.
+ * lexsup.c (OPTION_NOSTDLIB): New definition.
+ (ld_options): Add entry for "nostdlib".
+ (parse_args): Handle OPTIONS_NOSTDLIB.
+ * ldfile.c (ldfile_add_library_path): Don't add directories
+ to the search path if they weren't specified on the command line
+ and -nostdlib was specified.
+ * ld.h (ld_config_type): New member only_cmd_line_lib_dirs.
+
2001-10-31 Nick Clifton <nickc@cambridge.redhat.com>
* lexsup.c (parse_args): Prevent infinite parsing loop when
diff --git a/ld/ld.h b/ld/ld.h
index 68dfbdc5842..e629e66a5e9 100644
--- a/ld/ld.h
+++ b/ld/ld.h
@@ -214,6 +214,10 @@ typedef struct {
unsigned int split_by_reloc;
bfd_size_type split_by_file;
+
+ /* If set, only search library directories explicitly selected
+ on the command line. */
+ boolean only_cmd_line_lib_dirs;
} ld_config_type;
extern ld_config_type config;
diff --git a/ld/ld.texinfo b/ld/ld.texinfo
index 09a03db5485..320cc4cf42e 100644
--- a/ld/ld.texinfo
+++ b/ld/ld.texinfo
@@ -1110,6 +1110,12 @@ Normally, the linker will not produce an output file if it encounters
errors during the link process; it exits without writing an output file
when it issues any error whatsoever.
+@kindex -nostdlib
+@item -nostdlib
+Only search library directories explicitly specified on the
+command line. Library directories specified in linker scripts
+(including linker scripts specified on the command line) are ignored.
+
@ifclear SingleFormat
@kindex --oformat
@item --oformat @var{output-format}
diff --git a/ld/ldfile.c b/ld/ldfile.c
index 039a648564e..655ee608506 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -79,6 +79,9 @@ ldfile_add_library_path (name, cmdline)
{
search_dirs_type *new;
+ if (!cmdline && config.only_cmd_line_lib_dirs)
+ return;
+
new = (search_dirs_type *) xmalloc (sizeof (search_dirs_type));
new->next = NULL;
new->name = name;
diff --git a/ld/lexsup.c b/ld/lexsup.c
index a72dfb4576b..cd2770ead60 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -133,6 +133,7 @@ int parsing_defsym = 0;
#define OPTION_DISCARD_NONE (OPTION_ALLOW_SHLIB_UNDEFINED + 1)
#define OPTION_SPARE_DYNAMIC_TAGS (OPTION_DISCARD_NONE + 1)
#define OPTION_NO_DEFINE_COMMON (OPTION_SPARE_DYNAMIC_TAGS + 1)
+#define OPTION_NOSTDLIB (OPTION_NO_DEFINE_COMMON + 1)
/* The long options. This structure is used for both the option
parsing and the help text. */
@@ -330,6 +331,8 @@ static const struct ld_option ld_options[] =
'\0', NULL, N_("Create an output file even if errors occur"), TWO_DASHES },
{ {"noinhibit_exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC},
'\0', NULL, NULL, NO_HELP },
+ { {"nostdlib", no_argument, NULL, OPTION_NOSTDLIB},
+ '\0', NULL, N_("Only use library directories specified on\n\t\t\t\tthe command line"), ONE_DASH },
{ {"oformat", required_argument, NULL, OPTION_OFORMAT},
'\0', N_("TARGET"), N_("Specify target of output file"), EXACTLY_TWO_DASHES },
{ {"qmagic", no_argument, NULL, OPTION_IGNORE},
@@ -771,6 +774,9 @@ parse_args (argc, argv)
case OPTION_NOINHIBIT_EXEC:
force_make_executable = true;
break;
+ case OPTION_NOSTDLIB:
+ config.only_cmd_line_lib_dirs = true;
+ break;
case OPTION_NO_WHOLE_ARCHIVE:
whole_archive = false;
break;