Commit 5897739e by Jeffrey Oldham Committed by Jeffrey D. Oldham

*** empty log message ***

From-SVN: r41645
parent 994682b9
2001-04-27 Jeffrey Oldham <oldham@codesourcery.com>
* collect2.c (main): Add `-L' case to remove duplicate entries.
(is_in_args): New function to check for a duplicate argument.
* defaults.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): New macro.
* tm.texi (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): New documentation.
* config/mips/iris6.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES):
Define to be nonzero.
2001-04-27 Andreas Jaeger <aj@suse.de>
Richard Henderson <rth@redhat.com>
......
......@@ -292,6 +292,9 @@ static void scan_prog_file PARAMS ((const char *, enum pass));
#ifdef SCAN_LIBRARIES
static void scan_libraries PARAMS ((const char *));
#endif
#if LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
static int is_in_args PARAMS ((const char *, const char **, const char **));
#endif
#ifdef COLLECT_EXPORT_LIST
static int is_in_list PARAMS ((const char *, struct id *));
static void write_aix_file PARAMS ((FILE *, struct id *));
......@@ -1177,6 +1180,13 @@ main (argc, argv)
case 'L':
add_prefix (&cmdline_lib_dirs, arg+2);
break;
#else
#if LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
case 'L':
if (is_in_args (arg, (const char **) ld1_argv, ld1-1))
--ld1;
break;
#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
#endif
case 'o':
......@@ -1756,6 +1766,24 @@ write_list (stream, prefix, list)
}
}
#if LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
/* Given a STRING, return nonzero if it occurs in the list in range
[ARGS_BEGIN,ARGS_END). */
static int
is_in_args (string, args_begin, args_end)
const char *string;
const char **args_begin;
const char **args_end;
{
const char **args_pointer;
for (args_pointer = args_begin; args_pointer != args_end; ++args_pointer)
if (strcmp (string, *args_pointer) == 0)
return 1;
return 0;
}
#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
#ifdef COLLECT_EXPORT_LIST
/* This function is really used only on AIX, but may be useful. */
static int
......
......@@ -204,6 +204,10 @@ Boston, MA 02111-1307, USA. */
#undef SUPPORTS_INIT_PRIORITY
#define SUPPORTS_INIT_PRIORITY 0
/* A linker error can empirically be avoided by removing duplicate
library search directories. */
#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 1
#define POPSECTION_ASM_OP "\t.popsection"
#define DEBUG_INFO_SECTION ".debug_info,0x7000001e,0,0,1"
......
......@@ -170,6 +170,13 @@ do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0)
#define SUPPORTS_INIT_PRIORITY 1
#endif /* SUPPORTS_INIT_PRIORITY */
/* If duplicate library search directories can be removed from a
linker command without changing the linker's semantics, give this
symbol a nonzero. */
#ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0
#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
/* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that
the rest of the DWARF 2 frame unwind support is also provided. */
#if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX)
......
......@@ -325,6 +325,12 @@ define this macro only if you need to completely redefine the command
line for invoking the linker and there is no other way to accomplish
the effect you need.
@findex LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
@item LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
A nonzero value causes collect2 to remove duplicate -L<directory> search
directories from linking commands. Do not give it a nonzero value if
removing duplicate search directories changes the linker's semantics.
@findex MULTILIB_DEFAULTS
@item MULTILIB_DEFAULTS
Define this macro as a C expression for the initializer of an array of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment