diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 08224fcd4bc..44244dcb520 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-04-28 Jens Schweikhardt + + * gcc.c (process_command): Allow -l lib in addition to -llib + for POSIX compliance. This fixes PR c/2347. + + * invoke.texi: Update section on Link Options accordingly. + 2001-04-27 Zack Weinberg * function.c (purge_addressof_1): Remove the duplicate diff --git a/gcc/gcc.c b/gcc/gcc.c index b265526b44b..9c137fa8687 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -3284,6 +3284,14 @@ process_command (argc, argv) if (i + 1 == argc) fatal ("argument to `-Xlinker' is missing"); + n_infiles++; + i++; + } + else if (strcmp (argv[i], "-l") == 0) + { + if (i + 1 == argc) + fatal ("argument to `-l' is missing"); + n_infiles++; i++; } @@ -3728,6 +3736,12 @@ process_command (argc, argv) infiles[n_infiles].language = "*"; infiles[n_infiles++].name = argv[++i]; } + else if (strcmp (argv[i], "-l") == 0) + { /* POSIX allows separation of -l and the lib arg; + canonicalize by concatenating -l with its arg */ + infiles[n_infiles].language = "*"; + infiles[n_infiles++].name = concat ("-l", argv[++i], NULL_PTR); + } else if (strncmp (argv[i], "-l", 2) == 0) { infiles[n_infiles].language = "*"; diff --git a/gcc/invoke.texi b/gcc/invoke.texi index c096b793f4f..9ccbea13acb 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -3721,10 +3721,13 @@ Options}. @cindex Libraries @item -l@var{library} -Search the library named @var{library} when linking. +@itemx -l @var{library} +Search the library named @var{library} when linking. (The second +alternative with the library as a separate argument is only for +POSIX compliance and is not recommended.) It makes a difference where in the command you write this option; the -linker searches processes libraries and object files in the order they +linker searches and processes libraries and object files in the order they are specified. Thus, @samp{foo.o -lz bar.o} searches library @samp{z} after file @file{foo.o} but before @file{bar.o}. If @file{bar.o} refers to functions in @samp{z}, those functions may not be loaded.