200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention -l:foo.
	* ld.texinfo: Document it.
	* ldlang.c (new_afile): If a lang_input_file_is_l_enum
	entry as a name beginning with a coloh, convert it to a
	lang_input_file_is_search_file_enum entry without the colon.

ld/testsuite/
	* ld-libs/lib-1.s, ld-libs/lib-2.s, ld-libs/lib-2.d,
	* ld-libs/libs.exp: New files.
This commit is contained in:
Richard Sandiford
2007-03-29 17:16:05 +00:00
parent 436868fbdf
commit bcb674cff7
9 changed files with 58 additions and 13 deletions

View File

@ -1,3 +1,12 @@
2007-03-29 Richard Sandiford <richard@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* NEWS: Mention -l:foo.
* ld.texinfo: Document it.
* ldlang.c (new_afile): If a lang_input_file_is_l_enum
entry as a name beginning with a coloh, convert it to a
lang_input_file_is_search_file_enum entry without the colon.
2007-03-28 Richard Sandiford <richard@codesourcery.com> 2007-03-28 Richard Sandiford <richard@codesourcery.com>
* ld.h (ld_config_type): Add rpath_separator. * ld.h (ld_config_type): Add rpath_separator.

View File

@ -1,4 +1,7 @@
-*- text -*- -*- text -*-
* -l:foo now searches the library path for a filename called foo,
without converting it to libfoo.a or libfoo.so.
* Add a new command line option '--default-script=FILE' or '-dT FILE' * Add a new command line option '--default-script=FILE' or '-dT FILE'
which specifies a replacement for the built in, default linker which specifies a replacement for the built in, default linker
script. script.

View File

@ -614,21 +614,24 @@ of the function. By default, the linker uses @code{_init} as the
function to call. function to call.
@cindex archive files, from cmd line @cindex archive files, from cmd line
@kindex -l@var{archive} @kindex -l@var{namespec}
@kindex --library=@var{archive} @kindex --library=@var{namespec}
@item -l@var{archive} @item -l@var{namespec}
@itemx --library=@var{archive} @itemx --library=@var{namespec}
Add archive file @var{archive} to the list of files to link. This Add the archive or object file specified by @var{namespec} to the
option may be used any number of times. @command{ld} will search its list of files to link. This option may be used any number of times.
path-list for occurrences of @code{lib@var{archive}.a} for every If @var{namespec} is of the form @file{:@var{filename}}, @command{ld}
@var{archive} specified. will search the library path for a file called @var{filename}, otherise it
will search the library path for a file called @file{lib@var{namespec}.a}.
On systems which support shared libraries, @command{ld} may also search for On systems which support shared libraries, @command{ld} may also search for
libraries with extensions other than @code{.a}. Specifically, on ELF files other than @file{lib@var{namespec}.a}. Specifically, on ELF
and SunOS systems, @command{ld} will search a directory for a library with and SunOS systems, @command{ld} will search a directory for a library
an extension of @code{.so} before searching for one with an extension of called @file{lib@var{namespec}.so} before searching for one called
@code{.a}. By convention, a @code{.so} extension indicates a shared @file{lib@var{namespec}.a}. (By convention, a @code{.so} extension
library. indicates a shared library.) Note that this behavior does not apply
to @file{:@var{filename}}, which always specifies a file called
@var{filename}.
The linker will search an archive only once, at the location where it is The linker will search an archive only once, at the location where it is
specified on the command line. If the archive defines a symbol which specified on the command line. If the archive defines a symbol which

View File

@ -913,6 +913,14 @@ new_afile (const char *name,
lang_has_input_file = TRUE; lang_has_input_file = TRUE;
p->target = target; p->target = target;
p->sysrooted = FALSE; p->sysrooted = FALSE;
if (file_type == lang_input_file_is_l_enum
&& name[0] == ':' && name[1] != '\0')
{
file_type = lang_input_file_is_search_file_enum;
name = name + 1;
}
switch (file_type) switch (file_type)
{ {
case lang_input_file_is_symbols_only_enum: case lang_input_file_is_symbols_only_enum:

View File

@ -1,3 +1,8 @@
2007-03-29 Richard Sandiford <richard@codesourcery.com>
* ld-libs/lib-1.s, ld-libs/lib-2.s, ld-libs/lib-2.d,
* ld-libs/libs.exp: New files.
2007-03-28 Richard Sandiford <richard@codesourcery.com> 2007-03-28 Richard Sandiford <richard@codesourcery.com>
* ld-vxworks/rpath-1.s, ld-vxworks/rpath-1.d, * ld-vxworks/rpath-1.s, ld-vxworks/rpath-1.d,

View File

@ -0,0 +1,2 @@
.globl foo
.set foo,0x2000

View File

@ -0,0 +1,4 @@
#...
0+1000 A bar
0+2000 A foo
#pass

View File

@ -0,0 +1,2 @@
.globl bar
.set bar,0x1000

View File

@ -0,0 +1,9 @@
file mkdir tmpdir/libtmp
# Check that -l: works. The first "test" just creates an object file
# for the second one.
run_ld_link_tests {
{"-l: test (preparation)" "-r" "" {lib-1.s} {} "libtmp/anobject"}
{"-l: test" "-r -Ltmpdir/libtmp -l:anobject" "" {lib-2.s}
{{nm -C lib-2.d}} "lib-2"}
}