Remove search path from -l:namespec DT_NEEDED
authorAlan Modra <amodra@gmail.com>
Fri, 14 Mar 2014 00:55:59 +0000 (11:25 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 14 Mar 2014 02:24:24 +0000 (12:54 +1030)
commitd4ae5fb0b5d1ae4270b3343509e8bd2d529aa291
treec9c91d0fd583689b7f204415b871632089d7ba1a
parentd6b6434614d9752d705d4f3199c3d59330938c66
Remove search path from -l:namespec DT_NEEDED

For libraries without a soname, -l:libfoo.so set DT_NEEDED to the search
dir plus filename, while gold and -lfoo just use the filename.  This
patch fixes the inconsistency.

* ldlang.h (full_name_provided): New input flag.
* ldlang.c (new_afile): Don't use lang_input_file_is_search_file_enum
for -l:namespec.  Instead use lang_input_file_is_l_enum with
full_name_provided flag.
* ldlfile.c (ldfile_open_file_search): Don't complete lib name if
full_name_provided flag is set.
* emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
Handle full_name_provided libraries.  Tidy EXTRA_SHLIB_EXTENSION
support.  Set DT_NEEDED for -l:namespec as namespec.
* emultempl/aix.em (ppc_after_open_output): Handle full_name_provided.
* emultempl/linux.em (gld${EMULATION_NAME}_open_dynamic_archive):
Don't handle full_name_provided libraries.
* emultempl/pe.em (gld${EMULATION_NAME}_open_dynamic_archive): Ditto.
* emultempl/pep.em (gld${EMULATION_NAME}_open_dynamic_archive): Ditto.
* emultempl/vms.em (gld${EMULATION_NAME}_open_dynamic_archive): Ditto.
ld/ChangeLog
ld/emultempl/aix.em
ld/emultempl/elf32.em
ld/emultempl/linux.em
ld/emultempl/pe.em
ld/emultempl/pep.em
ld/emultempl/vms.em
ld/ldfile.c
ld/ldlang.c
ld/ldlang.h