Bug 20535 - DSO1 needed by DSO2 linked into executable not found without -rpath-link, even though DT_RPATH and -rpath would find it
Summary: DSO1 needed by DSO2 linked into executable not found without -rpath-link, eve...
Status: RESOLVED FIXED
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: 2.26
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
: 16936 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-08-30 09:53 UTC by Stephan Bergmann
Modified: 2017-08-07 06:57 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
Proposed patch (2.35 KB, patch)
2016-10-06 16:16 UTC, Nick Clifton
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Stephan Bergmann 2016-08-30 09:53:38 UTC
At least with binutils-2.26.1-1.fc24.x86_64,

> $ cat dso1.c
> void fun1(void) {}
>
> $ cat dso2.c
> void fun1(void);
> void fun2(void) { fun1(); }
>
> $ cat main.c
> void fun2(void);
> int main(void) {
>  fun2();
>  return 0;
> }
>
> $ mkdir dsos
> $ gcc -shared -fPIC -o dsos/libdso1.so dso1.c
> $ gcc -shared -fPIC -o dsos/libdso2.so -Wl,-rpath='$ORIGIN' dso2.c -Ldsos -ldso1
> $ gcc -Wl,-rpath='$ORIGIN/dsos' main.c -Ldsos -ldso2
> /usr/bin/ld: warning: libdso1.so, needed by dsos/libdso2.so, not found (try using -rpath or -rpath-link)
> dsos/libdso2.so: undefined reference to `fun1'
> collect2: error: ld returned 1 exit status

fails to find libdso2.so needed by libdso1.so, even though (a) libdso1.so has a DT_NEEDED $ORIGIN (so it should be found via point 6 below), and (b) the ld command line for building a.out contains -rpath='$ORIGIN/dsos' (so it should already be found via point 2 below).

The ld man page claims (under -rpath-link) that:

  "The linker uses the following search paths to locate required shared libraries:

  "1.  Any directories specified by -rpath-link options.

  "2.  Any directories specified by -rpath options.  The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable and used at runtime, whereas the -rpath-link option is only effective at link time. Searching -rpath in this way is only supported by native linkers and cross linkers which have been configured with the --with-sysroot option.

  [...]

  "6.  For a native ELF linker, the directories in 'DT_RUNPATH' or 'DT_RPATH' of a shared library are searched for shared libraries needed by it. The 'DT_RPATH' entries are ignored if 'DT_RUNPATH' entries exist."

  [...]

Adding -Wl,-rpath-link=dsos when building a.out would help, but its not clear to me why that should be necessary.
Comment 1 Nick Clifton 2016-09-28 12:17:02 UTC
Hi Stephan,

  The problem here is that you are using environment variables which are not
  being expanded at link time.

> $ gcc -shared -fPIC -o dsos/libdso2.so -Wl,-rpath='$ORIGIN' dso2.c -Ldsos -ldso1

  This stores a DT_NEEDED string of "$ORIGIN" into libdso2.so.  It does *not* 
  store the expansion of $ORIGIN into the DT_NEEDED entry. 

> $ gcc -Wl,-rpath='$ORIGIN/dsos' main.c -Ldsos -ldso2

  This makes the linker look in a directory path called "$ORIGIN/dsos", again
  with no expansion of $ORIGIN, which is why this approach also fails.  (Note
  this behaviour is intended.  The linker does not perform expansion of 
  environment variables found in path names).

  This sequence does work:

  % setenv ORIGIN `pwd`
  % mkdir dsos
  % gcc -shared -fPIC -o dsos/libdso1.so dso1.c
  % gcc -shared -fPIC -o dsos/libdso2.so -Wl,-rpath=$ORIGIN/dsos dso2.c -Ldsos -ldso1
  % gcc main.c -Ldsos -ldso2                                                    

Cheers
  Nick
Comment 2 Stephan Bergmann 2016-09-28 13:29:56 UTC
(In reply to Nick Clifton from comment #1)
>   The problem here is that you are using environment variables which are not
>   being expanded at link time.

No, I'm not using environment variables.  I'm rather using the $ORIGIN token supported by ld.so's rpath token expansion (see "man ld.so").

> > $ gcc -shared -fPIC -o dsos/libdso2.so -Wl,-rpath='$ORIGIN' dso2.c -Ldsos -ldso1
> 
>   This stores a DT_NEEDED string of "$ORIGIN" into libdso2.so.  It does
> *not* 
>   store the expansion of $ORIGIN into the DT_NEEDED entry. 

I assume you mean DT_RPATH instead of DT_NEEDED?

And that this creates a DT_RPATH of exactly "$ORIGIN" is expected.

> > $ gcc -Wl,-rpath='$ORIGIN/dsos' main.c -Ldsos -ldso2
> 
>   This makes the linker look in a directory path called "$ORIGIN/dsos", again
>   with no expansion of $ORIGIN, which is why this approach also fails.  (Note
>   this behaviour is intended.  The linker does not perform expansion of 
>   environment variables found in path names).

But when ld.so supports $ORIGIN (and some more special tokens) in DT_RPATH, wouldn't it be useful if ld did, too?

(I just notice that I failed to add "-z origin" when using "-Wl,-rpath='$ORIGIN...", but even adding that to the two affected gcc invocations doesn't make a difference.)

>   This sequence does work:
> 
>   % setenv ORIGIN `pwd`
>   % mkdir dsos
>   % gcc -shared -fPIC -o dsos/libdso1.so dso1.c
>   % gcc -shared -fPIC -o dsos/libdso2.so -Wl,-rpath=$ORIGIN/dsos dso2.c
> -Ldsos -ldso1

That causes an absolute path be recorded into dso2's DT_RPATH, which is /not/ what is wanted.

>   % gcc main.c -Ldsos -ldso2
Comment 3 Nick Clifton 2016-10-06 16:16:37 UTC
Hi Stephan,

  [Sorry for taking so long to get back to this issue].

  I was unaware of ld.so's support for those special variables...

  Please could you try out the uploaded patch which I hope will fix the problem.
  (If you have trouble applying the parts of the patch which affect the configure files feel free to leave it out.  All it will do is possibly break the support for the $PLATFORM variable, which I do not think you are using).

Cheers
  Nick
Comment 4 Nick Clifton 2016-10-06 16:16:59 UTC
Created attachment 9554 [details]
Proposed patch
Comment 5 Sourceware Commits 2016-10-11 11:14:29 UTC
The master branch has been updated by Nick Clifton <nickc@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=199fa1b7089d7f7438b087fa30504ea5a590f561

commit 199fa1b7089d7f7438b087fa30504ea5a590f561
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Oct 11 12:04:42 2016 +0100

    Add support to the static linker for the tokens accepted by the dynamic linker when resolving search paths.
    
    	PR ld/20535
    	* emultempl/elf32.em (_search_needed): Add support for pseudo
    	environment variables supported by ld.so.  Namely $ORIGIN, $LIB
    	and $PLATFORM.
    	* configure.ac: Add getauxval to list AC_CHECK_FUNCS list.
    	* config.in: Regenerate.
    	* configure: Regenerate.
Comment 6 Sourceware Commits 2016-10-11 12:53:16 UTC
The master branch has been updated by Nick Clifton <nickc@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a24bb4f0cce83eea8b2ad1542316651143af6f90

commit a24bb4f0cce83eea8b2ad1542316651143af6f90
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Oct 11 13:50:10 2016 +0100

    Enhance objdump so that it will use .got, .plt and .plt.got section symbols when disassembling, and it will use dynamic relocs to interpret entries in the PLT and GOT.
    
    binutils * objdump.c (is_significant_symbol_name): New function.
    	(remove_useless_symbols): Do not remove significanr symbols.
    	(find_symbol_for_address): If an exact match for the specified
    	address has not been found, try scanning the dynamic relocs to see
    	if one of these matches the address.  If so, use the symbol
    	associated with the reloc.
    	(objdump_print_addr_with_symbol): Do not print offsets to symbols
    	with no value.
    	(disassemble_section): Only use dynamic relocs if the user
    	requested this.
    	(disassemble_data): Always load dynamic relocs if they are
    	available.
    
    ld	* ld-aarch64/emit-relocs-515-be.d: Adjust output to match change
    	in objdump.
    	* ld-aarch64/emit-relocs-515.d: Likewise.
    	* ld-aarch64/emit-relocs-516-be.d: Likewise.
    	* ld-aarch64/emit-relocs-516.d: Likewise.
    	* ld-aarch64/farcall-b-plt.d: Likewise.
    	* ld-aarch64/farcall-bl-plt.d: Likewise.
    	* ld-aarch64/gc-plt-relocs.d: Likewise.
    	* ld-aarch64/tls-desc-ie.d: Likewise.
    	* ld-aarch64/tls-tiny-desc.d: Likewise.
    	* ld-aarch64/tls-tiny-gd.d: Likewise.
    	* ld-aarch64/tls-tiny-ie.d: Likewise.
    	* ld-arm/arm-app-abs32.d: Likewise.
    	* ld-arm/arm-app.d: Likewise.
    	* ld-arm/arm-lib-plt32.d: Likewise.
    	* ld-arm/arm-lib.d: Likewise.
    	* ld-arm/armthumb-lib.d: Likewise.
    	* ld-arm/cortex-a8-fix-b-plt.d: Likewise.
    	* ld-arm/cortex-a8-fix-bcc-plt.d: Likewise.
    	* ld-arm/cortex-a8-fix-bl-plt.d: Likewise.
    	* ld-arm/cortex-a8-fix-bl-rel-plt.d: Likewise.
    	* ld-arm/cortex-a8-fix-blx-plt.d: Likewise.
    	* ld-arm/farcall-mixed-app-v5.d: Likewise.
    	* ld-arm/farcall-mixed-app.d: Likewise.
    	* ld-arm/farcall-mixed-app2.d: Likewise.
    	* ld-arm/farcall-mixed-lib-v4t.d: Likewise.
    	* ld-arm/farcall-mixed-lib.d: Likewise.
    	* ld-arm/ifunc-10.dd: Likewise.
    	* ld-arm/ifunc-14.dd: Likewise.
    	* ld-arm/ifunc-15.dd: Likewise.
    	* ld-arm/ifunc-3.dd: Likewise.
    	* ld-arm/ifunc-4.dd: Likewise.
    	* ld-arm/ifunc-9.dd: Likewise.
    	* ld-arm/long-plt-format.d: Likewise.
    	* ld-arm/mixed-app-v5.d: Likewise.
    	* ld-arm/mixed-app.d: Likewise.
    	* ld-arm/mixed-lib.d: Likewise.
    	* ld-arm/tls-lib-loc.d: Likewise.
    	* ld-cris/dso-pltdis1.d: Likewise.
    	* ld-cris/dso-pltdis2.d: Likewise.
    	* ld-cris/dso12-pltdis.d: Likewise.
    	* ld-elf/symbolic-func.r: Likewise.
    	* ld-frv/fdpic-pie-1.d: Likewise.
    	* ld-frv/fdpic-pie-2.d: Likewise.
    	* ld-frv/fdpic-pie-6.d: Likewise.
    	* ld-frv/fdpic-pie-7.d: Likewise.
    	* ld-frv/fdpic-pie-8.d: Likewise.
    	* ld-frv/fdpic-shared-1.d: Likewise.
    	* ld-frv/fdpic-shared-2.d: Likewise.
    	* ld-frv/fdpic-shared-3.d: Likewise.
    	* ld-frv/fdpic-shared-4.d: Likewise.
    	* ld-frv/fdpic-shared-5.d: Likewise.
    	* ld-frv/fdpic-shared-6.d: Likewise.
    	* ld-frv/fdpic-shared-7.d: Likewise.
    	* ld-frv/fdpic-shared-8.d: Likewise.
    	* ld-frv/fdpic-shared-local-2.d: Likewise.
    	* ld-frv/fdpic-shared-local-8.d: Likewise.
    	* ld-frv/fdpic-static-1.d: Likewise.
    	* ld-frv/fdpic-static-2.d: Likewise.
    	* ld-frv/fdpic-static-6.d: Likewise.
    	* ld-frv/fdpic-static-7.d: Likewise.
    	* ld-frv/fdpic-static-8.d: Likewise.
    	* ld-frv/tls-dynamic-2.d: Likewise.
    	* ld-frv/tls-initial-shared-2.d: Likewise.
    	* ld-frv/tls-relax-shared-2.d: Likewise.
    	* ld-frv/tls-shared-2.d: Likewise.
    	* ld-i386/plt-nacl.pd: Likewise.
    	* ld-i386/plt-pic-nacl.pd: Likewise.
    	* ld-i386/plt-pic.pd: Likewise.
    	* ld-i386/plt.pd: Likewise.
    	* ld-i386/pr19636-1d-nacl.d: Likewise.
    	* ld-i386/pr19636-1d.d: Likewise.
    	* ld-i386/pr19636-2c-nacl.d: Likewise.
    	* ld-i386/pr19636-2c.d: Likewise.
    	* ld-ifunc/ifunc-21-x86-64.d: Likewise.
    	* ld-ifunc/ifunc-22-x86-64.d: Likewise.
    	* ld-ifunc/pr17154-i386.d: Likewise.
    	* ld-ifunc/pr17154-x86-64.d: Likewise.
    	* ld-m68k/plt1-68020.d: Likewise.
    	* ld-m68k/plt1-cpu32.d: Likewise.
    	* ld-m68k/plt1-isab.d: Likewise.
    	* ld-m68k/plt1-isac.d: Likewise.
    	* ld-metag/shared.d: Likewise.
    	* ld-metag/stub_pic_app.d: Likewise.
    	* ld-metag/stub_pic_shared.d: Likewise.
    	* ld-metag/stub_shared.d: Likewise.
    	* ld-s390/tlsbin_64.dd: Likewise.
    	* ld-s390/tlspic_64.dd: Likewise.
    	* ld-tic6x/shlib-1.dd: Likewise.
    	* ld-tic6x/shlib-1b.dd: Likewise.
    	* ld-tic6x/shlib-1rb.dd: Likewise.
    	* ld-tic6x/shlib-app-1.dd: Likewise.
    	* ld-tic6x/shlib-app-1b.dd: Likewise.
    	* ld-tic6x/shlib-app-1r.dd: Likewise.
    	* ld-tic6x/shlib-app-1rb.dd: Likewise.
    	* ld-tic6x/shlib-noindex.dd: Likewise.
    	* ld-vax-elf/export-class-data.dd: Likewise.
    	* ld-vax-elf/plt-local-lib.dd: Likewise.
    	* ld-vax-elf/plt-local.dd: Likewise.
    	* ld-x86-64/bnd-ifunc-2.d: Likewise.
    	* ld-x86-64/bnd-plt-1.d: Likewise.
    	* ld-x86-64/gotpcrel1.dd: Likewise.
    	* ld-x86-64/libno-plt-1b.dd: Likewise.
    	* ld-x86-64/load1c-nacl.d: Likewise.
    	* ld-x86-64/load1c.d: Likewise.
    	* ld-x86-64/load1d-nacl.d: Likewise.
    	* ld-x86-64/load1d.d: Likewise.
    	* ld-x86-64/mov1a.d: Likewise.
    	* ld-x86-64/mov1b.d: Likewise.
    	* ld-x86-64/mov1c.d: Likewise.
    	* ld-x86-64/mov1d.d: Likewise.
    	* ld-x86-64/mov2a.d: Likewise.
    	* ld-x86-64/mov2b.d: Likewise.
    	* ld-x86-64/mov2c.d: Likewise.
    	* ld-x86-64/mov2d.d: Likewise.
    	* ld-x86-64/mpx3.dd: Likewise.
    	* ld-x86-64/mpx4.dd: Likewise.
    	* ld-x86-64/no-plt-1a.dd: Likewise.
    	* ld-x86-64/no-plt-1b.dd: Likewise.
    	* ld-x86-64/no-plt-1c.dd: Likewise.
    	* ld-x86-64/no-plt-1e.dd: Likewise.
    	* ld-x86-64/no-plt-1f.dd: Likewise.
    	* ld-x86-64/no-plt-1g.dd: Likewise.
    	* ld-x86-64/plt-main-bnd.dd: Likewise.
    	* ld-x86-64/plt-nacl.pd: Likewise.
    	* ld-x86-64/plt.pd: Likewise.
    	* ld-x86-64/pr18591.d: Likewise.
    	* ld-x86-64/pr19609-1c.d: Likewise.
    	* ld-x86-64/pr19609-1e.d: Likewise.
    	* ld-x86-64/pr19609-1j.d: Likewise.
    	* ld-x86-64/pr19609-1l.d: Likewise.
    	* ld-x86-64/pr19609-1m.d: Likewise.
    	* ld-x86-64/pr19609-5b.d: Likewise.
    	* ld-x86-64/pr19609-5c.d: Likewise.
    	* ld-x86-64/pr19609-5e.d: Likewise.
    	* ld-x86-64/pr19609-6b.d: Likewise.
    	* ld-x86-64/pr19609-7b.d: Likewise.
    	* ld-x86-64/pr19609-7d.d: Likewise.
    	* ld-x86-64/pr19636-2d.d: Likewise.
    	* ld-x86-64/pr20093-1.d: Likewise.
    	* ld-x86-64/pr20093-2.d: Likewise.
    	* ld-x86-64/pr20253-1b.d: Likewise.
    	* ld-x86-64/pr20253-1d.d: Likewise.
    	* ld-x86-64/pr20253-1f.d: Likewise.
    	* ld-x86-64/pr20253-1h.d: Likewise.
    	* ld-x86-64/pr20253-1j.d: Likewise.
    	* ld-x86-64/pr20253-1l.d: Likewise.
    	* ld-x86-64/protected3.d: Likewise.
    	* ld-x86-64/tlsbin.dd: Likewise.
    	* ld-x86-64/tlsbin2.dd: Likewise.
    	* ld-x86-64/tlsbindesc.dd: Likewise.
    	* ld-x86-64/tlsdesc-nacl.pd: Likewise.
    	* ld-x86-64/tlsdesc.dd: Likewise.
    	* ld-x86-64/tlsdesc.pd: Likewise.
    	* ld-x86-64/tlsgd10.dd: Likewise.
    	* ld-x86-64/tlsgd5.dd: Likewise.
    	* ld-x86-64/tlsgd6.dd: Likewise.
    	* ld-x86-64/tlsgd8.dd: Likewise.
    	* ld-x86-64/tlsgdesc.dd: Likewise.
    	* ld-x86-64/tlspic.dd: Likewise.
    	* ld-x86-64/tlspic2.dd: Likewise.
    
    2016-10-11  Nick Clifton  <nickc@redhat.com>
    
    	PR ld/20535
    	* emultempl/elf32.em (_search_needed): Add support for pseudo
    	environment variables supported by ld.so.  Namely $ORIGIN, $LIB
    	and $PLATFORM.
    	* configure.ac: Add getauxval to list AC_CHECK_FUNCS list.
    	* config.in: Regenerate.
    	* configure: Regenerate.
    
    2016-10-11  Alan Modra  <amodra@gmail.com>
    
    	* ldlang.c (lang_do_assignments_1): Descend into output section
    	statements that do not yet have bfd sections.  Set symbol section
    	temporarily for symbols defined in such statements to the undefined
    	section.  Don't error on data or reloc statements until final phase.
    	* ldexp.c (exp_fold_tree_1 <etree_assign>): Handle bfd_und_section
    	in expld.section.
    	* testsuite/ld-mmix/bpo-10.d: Adjust.
    	* testsuite/ld-mmix/bpo-11.d: Adjust.
    
    2016-10-10  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
    
    	* emulparams/elf64_s390.sh: Move binary start to 16M.
    	* testsuite/ld-s390/tlsbin_64.dd: Adjust testcases accordingly.
    	* testsuite/ld-s390/tlsbin_64.rd: Likewise.
    
    2016-10-07  Alan Modra  <amodra@gmail.com>
    
    	* ldexp.c (MAX): Define.
    	(exp_unop, exp_binop, exp_trinop): Alloc at least enough for
    	etree_type.value.
    
    2016-10-07  Alan Modra  <amodra@gmail.com>
    
    	* testsuite/lib/ld-lib.exp (is_generic_elf): New, extracted from..
    	* testsuite/ld-elf/elf.exp: ..here.
    
    2016-10-06  Ludovic Court?s  <ludo@gnu.org>
    
    	* emulparams/elf32bmipn32-defs.sh: Shift quote of
    	"x$EMULATION_NAME" to the left to work around
    	<http://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-007>.
    
    2016-10-06  Alan Modra  <amodra@gmail.com>
    
    	* lexsup.c: Spell fall through comments consistently and add
    	missing fall through comments.
    
    2016-10-06  Alan Modra  <amodra@gmail.com>
    
    	* plugin.c (asymbol_from_plugin_symbol): Avoid compiler warning
    	by adding return.
    
    2016-10-04  Alan Modra  <amodra@gmail.com>
    
    	* ld.texinfo (Expression Section): Update result of arithmetic
    	expressions.
    	* ldexp.c (arith_result_section): New function.
    	(fold_binary): Use it.
    
    2016-10-04  Alan Modra  <amodra@gmail.com>
    
    	* ldexp.c (exp_value_fold): New function.
    	(exp_unop, exp_binop, exp_trinop): Use it.
    
    2016-09-30  Alan Modra  <amodra@gmail.com>
    
    	* scripttempl/v850.sc: Don't reference __ctbp, __ep, __gp when
    	not relocating.
    	* scripttempl/v850_rh850.sc: Likewise.
    
    2016-09-30  Alan Modra  <amodra@gmail.com>
    
    	PR ld/20528
    	* testsuite/ld-elf/pr20528a.d: xfail generic elf targets.  Allow
    	multiple .text sections for hppa-linux.
    	* testsuite/ld-elf/pr20528b.d: Likewise.
    
    2016-09-30  Alan Modra  <amodra@gmail.com>
    
    	* ldmain.c (default_bfd_error_handler): New function pointer.
    	(ld_bfd_error_handler): New function.
    	(main): Arrange to call it on bfd errors/warnings.
    	(ld_bfd_assert_handler): Enable tail call.
    
    2016-09-30  Alan Modra  <amodra@gmail.com>
    
    	* ldlang.c (ignore_bfd_errors): Update params.
    
    2016-09-29  H.J. Lu  <hongjiu.lu@intel.com>
    
    	PR ld/20528
    	* emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
    	merge 2 sections with different SHF_EXCLUDE.
    	* testsuite/ld-elf/pr20528a.d: New file.
    	* testsuite/ld-elf/pr20528a.s: Likewise.
    	* testsuite/ld-elf/pr20528b.d: Likewise.
    	* testsuite/ld-elf/pr20528b.s: Likewise.
    
    2016-09-28  Christophe Lyon  <christophe.lyon@linaro.org>
    
    	PR ld/20608
    	* testsuite/ld-arm/arm-elf.exp: Handle new testcase.
    	* testsuite/ld-arm/farcall-mixed-app2.d: New file.
    	* testsuite/ld-arm/farcall-mixed-app2.r: Likewise.
    	* testsuite/ld-arm/farcall-mixed-app2.s: Likewise.
    	* testsuite/ld-arm/farcall-mixed-app2.sym: Likewise.
    
    2016-09-26  Vlad Zakharov  <vzakhar@synopsys.com>
    
    	* Makefile.in: Regenerate.
    	* configure: Likewise.
    
    2016-09-26  Alan Modra  <amodra@gmail.com>
    
    	* testsuite/ld-powerpc/attr-gnu-4-4.s: Delete.
    	* testsuite/ld-powerpc/attr-gnu-4-14.d: Delete.
    	* testsuite/ld-powerpc/attr-gnu-4-24.d: Delete.
    	* testsuite/ld-powerpc/attr-gnu-4-34.d: Delete.
    	* testsuite/ld-powerpc/attr-gnu-4-41.d: Delete.
    	* testsuite/ld-powerpc/attr-gnu-4-32.d: Adjust expected warning.
    	* testsuite/ld-powerpc/attr-gnu-8-23.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-01.d: Adjust expected output.
    	* testsuite/ld-powerpc/attr-gnu-4-02.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-03.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-10.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-11.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-20.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-22.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-4-33.d: Likewise.
    	* testsuite/ld-powerpc/attr-gnu-8-11.d: Likewise.
    	* testsuite/ld-powerpc/powerpc.exp: Don't run deleted tests.
    
    2016-09-23  Akihiko Odaki  <akihiko.odaki.4i@stu.hosei.ac.jp>
    
    	PR ld/20595
    	* testsuite/ld-arm/unwind-4.d: Add -q option to linker command
    	line and -r option to objdump command line.  Match emitted relocs
    	to make sure that superflous relocs are not generated.
    
    2016-09-23  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
    
    	* emulparams/elf64_s390.sh: Change TEXT_START_ADDR to 256MB.
    	* testsuite/ld-s390/tlsbin_64.dd: Adjust testcase accordingly.
    	* testsuite/ld-s390/tlsbin_64.rd: Likewise.
    
    2016-09-22  Nick Clifton  <nickc@redhat.com>
    
    	* emultempl/elf32.em (_try_needed): In verbose mode, report failed
    	attempts to find a needed library.
    
    2016-09-21  Richard Sandiford  <richard.sandiford@arm.com>
    
    	* testsuite/ld-aarch64/emit-relocs-28.d: Expect spaces after ","
    	in addresses.
    	* testsuite/ld-aarch64/emit-relocs-301-be.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-301.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-302-be.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-302.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-310-be.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-310.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-313.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-515-be.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-515.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-516-be.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-516.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-531.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-532.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-533.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-534.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-535.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-536.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-537.d: Likewise.
    	* testsuite/ld-aarch64/emit-relocs-538.d: Likewise.
    	* testsuite/ld-aarch64/erratum835769.d: Likewise.
    	* testsuite/ld-aarch64/erratum843419.d: Likewise.
    	* testsuite/ld-aarch64/farcall-b-plt.d: Likewise.
    	* testsuite/ld-aarch64/farcall-bl-plt.d: Likewise.
    	* testsuite/ld-aarch64/gc-plt-relocs.d: Likewise.
    	* testsuite/ld-aarch64/ifunc-21.d: Likewise.
    	* testsuite/ld-aarch64/ifunc-7c.d: Likewise.
    	* testsuite/ld-aarch64/tls-desc-ie.d: Likewise.
    	* testsuite/ld-aarch64/tls-large-desc-be.d: Likewise.
    	* testsuite/ld-aarch64/tls-large-desc.d: Likewise.
    	* testsuite/ld-aarch64/tls-large-ie-be.d: Likewise.
    	* testsuite/ld-aarch64/tls-large-ie.d: Likewise.
    	* testsuite/ld-aarch64/tls-relax-all.d: Likewise.
    	* testsuite/ld-aarch64/tls-relax-gd-ie.d: Likewise.
    	* testsuite/ld-aarch64/tls-relax-gdesc-ie-2.d: Likewise.
    	* testsuite/ld-aarch64/tls-relax-gdesc-ie.d: Likewise.
    	* testsuite/ld-aarch64/tls-relax-large-desc-ie-be.d: Likewise.
    	* testsuite/ld-aarch64/tls-relax-large-desc-ie.d: Likewise.
    	* testsuite/ld-aarch64/tls-tiny-desc.d: Likewise.
    	* testsuite/ld-aarch64/tls-tiny-gd.d: Likewise.
    
    gas	* gas/arm/tls.d: Adjust output to match change in objdump.
Comment 7 Florian Weimer 2017-08-07 06:42:03 UTC
*** Bug 16936 has been marked as a duplicate of this bug. ***
Comment 8 Florian Weimer 2017-08-07 06:57:19 UTC
Fixed in binutils 2.28.