Bug 23161 - __bss_start, _end and _edata aren't marked as hidden
Summary: __bss_start, _end and _edata aren't marked as hidden
Status: RESOLVED FIXED
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: 2.31
: P2 normal
Target Milestone: 2.31
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks: 23162
  Show dependency treegraph
 
Reported: 2018-05-10 18:54 UTC by H.J. Lu
Modified: 2018-06-13 12:12 UTC (History)
3 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2018-05-10 18:54:04 UTC
[hjl@gnu-4 tmp]$ cat x.c
void
foo ()
{
}
[hjl@gnu-4 tmp]$ gcc -shared -fpic x.c
[hjl@gnu-4 tmp]$ readelf --dyn-syms a.out 

Symbol table '.dynsym' contains 11 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTab
     2: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
     3: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_registerTMCloneTable
     4: 0000000000000000     0 FUNC    WEAK   DEFAULT  UND __cxa_finalize@GLIBC_2.2.5 (2)
     5: 0000000000004018     0 NOTYPE  GLOBAL DEFAULT   20 _edata
     6: 00000000000010f9     2 FUNC    GLOBAL DEFAULT   11 foo
     7: 0000000000004020     0 NOTYPE  GLOBAL DEFAULT   21 _end
     8: 0000000000004018     0 NOTYPE  GLOBAL DEFAULT   21 __bss_start
     9: 0000000000001000     0 FUNC    GLOBAL DEFAULT    8 _init
    10: 00000000000010fc     0 FUNC    GLOBAL DEFAULT   12 _fini
[hjl@gnu-4 tmp]$ 

__bss_start, _end and _edata shouldn't be in .dynsym.
Comment 1 Alan Modra 2018-05-10 23:01:17 UTC
I agree that exporting these symbols doesn't seem to be useful.  I can't see a good reason why anyone would want access to their values in shared libraries external to the given shared library (and to choose a particular _edata say, from among many possible shared libraries requires dlopen and dlsym).

Also, given that the standard scripts define these symbols for shared libraries, it isn't simple for a shared library to access their values in the executable.  Again, you'd need to use dlopen and dlsym.  So it probably isn't that useful to export these symbols from an executable, but I'm less sure about executables than I am about shared libraries.
Comment 2 Mark Johnston 2018-05-29 21:46:28 UTC
(In reply to Alan Modra from comment #1)
FreeBSD's libc uses _end to initialize curbrk. At a glance, OpenBSD and NetBSD appear to do this as well. For this use case it is crucial that _end be present in the executable's dynsym, since libc will otherwise use its internal definition.

I peeked at the glibc sources; it seems that they rely on Linux's brk() system call returning the current break value when given an input of 0. This is used to lazily initialize the curbrk. We could probably add a similar hack to FreeBSD to get around this, but as noted, we're not the only ones relying on this behaviour.
Comment 3 H.J. Lu 2018-05-29 23:23:20 UTC
Should we not define __bss_start/_end/_edata in shared libraries at all and
always use the definitions in executable?  Will this work for FreeBSD?
Comment 4 Mark Johnston 2018-05-30 02:39:14 UTC
(In reply to H.J. Lu from comment #3)
I suspect that would address the problem I brought up here:
https://sourceware.org/ml/binutils/2018-05/msg00300.html

I'm happy to test patches. If I can apply the change to the binutils 2.17.50 sources in FreeBSD's base system, we can test a build of the entire ports tree (~20,000 third-party packages).
Comment 5 H.J. Lu 2018-05-30 22:02:44 UTC
(In reply to Mark Johnston from comment #4)
> (In reply to H.J. Lu from comment #3)
> I suspect that would address the problem I brought up here:
> https://sourceware.org/ml/binutils/2018-05/msg00300.html
> 
> I'm happy to test patches. If I can apply the change to the binutils 2.17.50

Please try

https://sourceware.org/ml/binutils/2018-05/msg00350.html

> sources in FreeBSD's base system, we can test a build of the entire ports
> tree (~20,000 third-party packages).

I don't believe my patches are suitable for such old binutils.
Comment 6 Mark Johnston 2018-06-04 13:28:12 UTC
(In reply to H.J. Lu from comment #5)
> (In reply to Mark Johnston from comment #4)
> > (In reply to H.J. Lu from comment #3)
> > I suspect that would address the problem I brought up here:
> > https://sourceware.org/ml/binutils/2018-05/msg00300.html
> > 
> > I'm happy to test patches. If I can apply the change to the binutils 2.17.50
> 
> Please try
> 
> https://sourceware.org/ml/binutils/2018-05/msg00350.html

Thanks, that worked for me.

> > sources in FreeBSD's base system, we can test a build of the entire ports
> > tree (~20,000 third-party packages).
> 
> I don't believe my patches are suitable for such old binutils.

As it turns out, the elf.sc patch may be applied without much effort.
Comment 7 H.J. Lu 2018-06-05 17:05:41 UTC
(In reply to Mark Johnston from comment #2)
> (In reply to Alan Modra from comment #1)
> FreeBSD's libc uses _end to initialize curbrk. At a glance, OpenBSD and
> NetBSD appear to do this as well. For this use case it is crucial that _end
> be present in the executable's dynsym, since libc will otherwise use its
> internal definition.

In glibc, ld.so has

/* These defined magically in the linker script.  */
extern char _begin[] attribute_hidden;
extern char _etext[] attribute_hidden;
extern char _end[] attribute_hidden;

it can't reference _end defined in executables.
Comment 8 Alan Modra 2018-06-06 07:53:16 UTC
Comment #2 implie "_end" must be made dynamic in the executable if referenced from a shared library, and the linker script can't make "_end" hidden when building a shared library.

Comment #7 implies that we must continue to define "_end" in linker scripts when building shared libraries.
Comment 9 Sourceware Commits 2018-06-08 10:49:25 UTC
The master branch has been updated by Alan Modra <amodra@sourceware.org>:

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

commit fd161d860f1df7140153eab4726705cc3e2727b0
Author: Alan Modra <amodra@gmail.com>
Date:   Fri Jun 8 20:17:34 2018 +0930

    Define various symbols conditionally in shared libraries
    
    The values of symbols in shared libraries like _end, _edata, and
    __bss_start are generally not that useful outside of the shared
    library.  This patch defines them conditionally with PROVIDE, since a
    shared library might need the local value.  An example is glibc ld.so
    local access to "_begin", "_etext" and "_end".  (ld.so gains access to
    the local values by making the references using hidden visibility.
    That makes the definitions hidden too.)
    
    We can't use PROVIDE_HIDDEN in the linker scripts because the shared
    library might need the value of the symbol in the executable.  An
    example is freebsd libc dynamic access to "_end".
    
    	PR ld/23161
    	* emulparams/aarch64cloudabi.sh: PROVIDE __bss_start__, _bss_end__,
    	and __end__ in shared libraries.
    	* emulparams/aarch64fbsd.sh: Likewise.
    	* emulparams/aarch64linux.sh: Likewise.
    	* emulparams/aarch64linux32.sh: Likewise.
    	* emulparams/armelf_fuchsia.sh: Likewise.
    	* emulparams/armelf_linux.sh: Likewise.
    	* emulparams/armelf_phoenix.sh: Likewise.
    	* emulparams/aarch64elf.sh: Likewise, and __data_start
    	* emulparams/aarch64elf32.sh: Likewise.
    	* emulparams/armelf.sh: Likewise.
    	* emulparams/armnto.sh: Likewise.
    	* emulparams/elf32bmip.sh: Remove duplicate ". = ." from
    	OTHER_GOT_SYMBOLS.  PROVIDE _ftext, _fdata, and _fbss in shared libs.
    	* emulparams/elf32bmipn32-defs.sh: Likewise.
    	* emulparams/elf32frv.sh: PROVIDE __end and __data_start in shared libs.
    	* emulparams/elf32lriscv-defs.sh: Tidy.
    	* emulparams/elf32mcore.sh: PROVIDE __bss_start and _bss_end in
    	shared libs
    	* emulparams/elf32ppccommon.sh: PROVIDE __end in shared libs.
    	* emulparams/elf32rl78.sh: Tidy.
    	* emulparams/i386nto.sh: PROVIDE _btext in shared libs.
    	* emulparams/shelf_nto.sh: Likewise.
    	* emulparams/shlelf_nto.sh: Likewise.
    	* emulparams/score3_elf.sh: PROVIDE _gp, _bss_start__, _bss_end__,
    	__bss_end__, __end__, _fdata, _sdata_begin, and _bss_start in
    	shared libs.
    	* scripttempl/elf.sc: Don't use EXECUTABLE_SYMBOLS for shared
    	libraries.  PROVIDE _edata, edata, __bss_start, and _end in shared
    	libraries.
    	* testsuite/ld-elf/pr23161.map,
    	* testsuite/ld-elf/pr23161a.c,
    	* testsuite/ld-elf/pr23161b.c,
    	* testsuite/ld-elf/pr23161c.c,
    	* testsuite/ld-elf/pr23161a.rd,
    	* testsuite/ld-elf/pr23161b.rd,
    	* testsuite/ld-elf/pr23161c.rd,
    	* testsuite/ld-elf/pr23161d.rd: New tests.
    	* testsuite/ld-elf/shared.exp: Run ld/23161 tests.
    	* testsuite/ld-elf/pr23162.rd,
    	* testsuite/ld-aarch64/ifunc-1-local.d,
    	* testsuite/ld-aarch64/ifunc-1.d,
    	* testsuite/ld-aarch64/ifunc-2-local.d,
    	* testsuite/ld-aarch64/ifunc-2.d,
    	* testsuite/ld-aarch64/ifunc-21.d,
    	* testsuite/ld-aarch64/ifunc-3a.d,
    	* testsuite/ld-alpha/tlsbin.rd,
    	* testsuite/ld-alpha/tlsbin.sd,
    	* testsuite/ld-alpha/tlsbinr.rd,
    	* testsuite/ld-alpha/tlspic.rd,
    	* testsuite/ld-alpha/tlspic.sd,
    	* testsuite/ld-cris/dso-pltdis1.d,
    	* testsuite/ld-cris/dso-pltdis2.d,
    	* testsuite/ld-cris/dso12-pltdis.d,
    	* testsuite/ld-cris/gotplt1.d,
    	* testsuite/ld-cris/gotplt2.d,
    	* testsuite/ld-cris/gotplt3.d,
    	* testsuite/ld-cris/hiddef1.d,
    	* testsuite/ld-cris/libdso-1.d,
    	* testsuite/ld-cris/libdso-10.d,
    	* testsuite/ld-cris/libdso-11.d,
    	* testsuite/ld-cris/libdso-12.d,
    	* testsuite/ld-cris/libdso-12b.d,
    	* testsuite/ld-cris/libdso-12c.d,
    	* testsuite/ld-cris/libdso-13.d,
    	* testsuite/ld-cris/libdso-13b.d,
    	* testsuite/ld-cris/libdso-14.d,
    	* testsuite/ld-cris/libdso-15.d,
    	* testsuite/ld-cris/libdso-15b.d,
    	* testsuite/ld-cris/libdso-1c.d,
    	* testsuite/ld-cris/libdso-1d.d,
    	* testsuite/ld-cris/libdso-2.d,
    	* testsuite/ld-cris/pic-gc-72.d,
    	* testsuite/ld-cris/pic-gc-73.d,
    	* testsuite/ld-cris/pr16044.d,
    	* testsuite/ld-cris/pv32-1.d,
    	* testsuite/ld-cris/tls-dso-dtpoffd2.d,
    	* testsuite/ld-cris/tls-dso-dtpoffd4.d,
    	* testsuite/ld-cris/tls-dso-tpoffgotcomm1.d,
    	* testsuite/ld-cris/tls-gc-71.d,
    	* testsuite/ld-cris/tls-gd-1.d,
    	* testsuite/ld-cris/tls-gd-1h.d,
    	* testsuite/ld-cris/tls-gd-2.d,
    	* testsuite/ld-cris/tls-gd-2h.d,
    	* testsuite/ld-cris/tls-ie-10.d,
    	* testsuite/ld-cris/tls-ie-11.d,
    	* testsuite/ld-cris/tls-ie-78.d,
    	* testsuite/ld-cris/tls-ie-8.d,
    	* testsuite/ld-cris/tls-ie-9.d,
    	* testsuite/ld-cris/tls-js1.d,
    	* testsuite/ld-cris/tls-ld-4.d,
    	* testsuite/ld-cris/tls-ld-5.d,
    	* testsuite/ld-cris/tls-ld-6.d,
    	* testsuite/ld-cris/tls-ld-7.d,
    	* testsuite/ld-cris/tls-ldgd-14.d,
    	* testsuite/ld-cris/tls-ldgd-15.d,
    	* testsuite/ld-cris/tls-ldgdex-14.d,
    	* testsuite/ld-cris/tls-ldgdex-15.d,
    	* testsuite/ld-cris/tls-ldgdx-14.d,
    	* testsuite/ld-cris/tls-ldgdx-15.d,
    	* testsuite/ld-cris/tls-legdx-16.d,
    	* testsuite/ld-cris/tls-legdx-17.d,
    	* testsuite/ld-cris/tls-local-54.d,
    	* testsuite/ld-cris/tls-local-60.d,
    	* testsuite/ld-cris/tls-local-61.d,
    	* testsuite/ld-cris/tls-local-63.d,
    	* testsuite/ld-cris/tls-local-64.d,
    	* testsuite/ld-cris/tls-ok-30.d,
    	* testsuite/ld-cris/tls-ok-32.d,
    	* testsuite/ld-cris/tls-ok-34.d,
    	* testsuite/ld-cris/tls-und-38.d,
    	* testsuite/ld-cris/tls-und-42.d,
    	* testsuite/ld-cris/tls-und-46.d,
    	* testsuite/ld-cris/tls-und-50.d,
    	* testsuite/ld-cris/weakhiddso.d,
    	* testsuite/ld-cris/weakref2.d,
    	* testsuite/ld-frv/fdpic-shared-1.d,
    	* testsuite/ld-frv/fdpic-shared-2.d,
    	* testsuite/ld-frv/fdpic-shared-3.d,
    	* testsuite/ld-frv/fdpic-shared-4.d,
    	* testsuite/ld-frv/fdpic-shared-5.d,
    	* testsuite/ld-frv/fdpic-shared-7.d,
    	* testsuite/ld-frv/fdpic-shared-8.d,
    	* testsuite/ld-frv/tls-dynamic-2.d,
    	* testsuite/ld-i386/ibt-plt-1.d,
    	* testsuite/ld-i386/ibt-plt-2a.d,
    	* testsuite/ld-i386/ibt-plt-2b.d,
    	* testsuite/ld-i386/ibt-plt-2c.d,
    	* testsuite/ld-i386/ibt-plt-2d.d,
    	* testsuite/ld-i386/ibt-plt-3a.d,
    	* testsuite/ld-i386/ibt-plt-3b.d,
    	* testsuite/ld-i386/ibt-plt-3c.d,
    	* testsuite/ld-i386/ibt-plt-3d.d,
    	* testsuite/ld-i386/plt2.dd,
    	* testsuite/ld-i386/pr20830.d,
    	* testsuite/ld-i386/tlsbin-nacl.rd,
    	* testsuite/ld-i386/tlsbin.rd,
    	* testsuite/ld-i386/tlsbin2-nacl.rd,
    	* testsuite/ld-i386/tlsbin2.rd,
    	* testsuite/ld-i386/tlsbindesc-nacl.rd,
    	* testsuite/ld-i386/tlsbindesc.rd,
    	* testsuite/ld-i386/tlsdesc-nacl.rd,
    	* testsuite/ld-i386/tlsdesc.rd,
    	* testsuite/ld-i386/tlsgdesc-nacl.rd,
    	* testsuite/ld-i386/tlsgdesc.rd,
    	* testsuite/ld-i386/tlsnopic-nacl.rd,
    	* testsuite/ld-i386/tlsnopic.dd,
    	* testsuite/ld-i386/tlsnopic.rd,
    	* testsuite/ld-i386/tlsnopic.sd,
    	* testsuite/ld-i386/tlspic-nacl.rd,
    	* testsuite/ld-i386/tlspic.rd,
    	* testsuite/ld-i386/tlspic2-nacl.rd,
    	* testsuite/ld-i386/tlspic2.rd,
    	* testsuite/ld-ia64/merge1.d,
    	* testsuite/ld-ia64/merge2.d,
    	* testsuite/ld-ia64/merge3.d,
    	* testsuite/ld-ia64/merge4.d,
    	* testsuite/ld-ia64/merge5.d,
    	* testsuite/ld-ia64/tlsbin.rd,
    	* testsuite/ld-ia64/tlspic.rd,
    	* testsuite/ld-ifunc/ifunc-2-i386-now.d,
    	* testsuite/ld-ifunc/ifunc-2-local-i386-now.d,
    	* testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d,
    	* testsuite/ld-ifunc/ifunc-2-local-x86-64.d,
    	* testsuite/ld-ifunc/ifunc-2-x86-64-now.d,
    	* testsuite/ld-ifunc/ifunc-2-x86-64.d,
    	* testsuite/ld-ifunc/pr17154-i386-now.d,
    	* testsuite/ld-ifunc/pr17154-i386.d,
    	* testsuite/ld-ifunc/pr17154-x86-64-now.d,
    	* testsuite/ld-ifunc/pr17154-x86-64.d,
    	* testsuite/ld-m68k/tls-def-1.d,
    	* testsuite/ld-m68k/tls-gd-1.d2,
    	* testsuite/ld-metag/shared.d,
    	* testsuite/ld-metag/stub_pic_app.d,
    	* testsuite/ld-mips-elf/rel32-n32.d,
    	* testsuite/ld-mips-elf/rel32-o32.d,
    	* testsuite/ld-mips-elf/rel64.d,
    	* testsuite/ld-powerpc/ambiguousv1.d,
    	* testsuite/ld-powerpc/ambiguousv1b.d,
    	* testsuite/ld-powerpc/ambiguousv2.d,
    	* testsuite/ld-powerpc/ambiguousv2b.d,
    	* testsuite/ld-powerpc/tlsexe.d,
    	* testsuite/ld-powerpc/tlsexe.r,
    	* testsuite/ld-powerpc/tlsexe32.d,
    	* testsuite/ld-powerpc/tlsexe32.g,
    	* testsuite/ld-powerpc/tlsexe32.r,
    	* testsuite/ld-powerpc/tlsexetoc.d,
    	* testsuite/ld-powerpc/tlsexetoc.r,
    	* testsuite/ld-powerpc/tlsso.d,
    	* testsuite/ld-powerpc/tlsso.r,
    	* testsuite/ld-powerpc/tlsso32.g,
    	* testsuite/ld-powerpc/tlsso32.r,
    	* testsuite/ld-powerpc/tlstocso.d,
    	* testsuite/ld-powerpc/tlstocso.g,
    	* testsuite/ld-powerpc/tlstocso.r,
    	* testsuite/ld-s390/gotreloc_31-1.dd,
    	* testsuite/ld-s390/tlsbin.dd,
    	* testsuite/ld-s390/tlsbin.rd,
    	* testsuite/ld-s390/tlsbin_64.dd,
    	* testsuite/ld-s390/tlsbin_64.rd,
    	* testsuite/ld-s390/tlspic.rd,
    	* testsuite/ld-s390/tlspic_64.rd,
    	* testsuite/ld-sh/tlsbin-2.d,
    	* testsuite/ld-sh/tlspic-2.d,
    	* testsuite/ld-sparc/gotop32.rd,
    	* testsuite/ld-sparc/gotop64.rd,
    	* testsuite/ld-sparc/tlssunbin32.rd,
    	* testsuite/ld-sparc/tlssunbin64.rd,
    	* testsuite/ld-sparc/tlssunnopic32.rd,
    	* testsuite/ld-sparc/tlssunnopic64.rd,
    	* testsuite/ld-sparc/tlssunpic32.rd,
    	* testsuite/ld-sparc/tlssunpic64.rd,
    	* testsuite/ld-x86-64/bnd-branch-1-now.d,
    	* testsuite/ld-x86-64/bnd-ifunc-1-now.d,
    	* testsuite/ld-x86-64/bnd-ifunc-2-now.d,
    	* testsuite/ld-x86-64/bnd-ifunc-2.d,
    	* testsuite/ld-x86-64/bnd-plt-1-now.d,
    	* testsuite/ld-x86-64/bnd-plt-1.d,
    	* testsuite/ld-x86-64/ibt-plt-1-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-1.d,
    	* testsuite/ld-x86-64/ibt-plt-2a-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-2a.d,
    	* testsuite/ld-x86-64/ibt-plt-2b-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-2b.d,
    	* testsuite/ld-x86-64/ibt-plt-2c-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-2c.d,
    	* testsuite/ld-x86-64/ibt-plt-2d-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-2d.d,
    	* testsuite/ld-x86-64/ibt-plt-3a-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-3a.d,
    	* testsuite/ld-x86-64/ibt-plt-3b-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-3b.d,
    	* testsuite/ld-x86-64/ibt-plt-3c-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-3c.d,
    	* testsuite/ld-x86-64/ibt-plt-3d-x32.d,
    	* testsuite/ld-x86-64/ibt-plt-3d.d,
    	* testsuite/ld-x86-64/ilp32-4-nacl.d,
    	* testsuite/ld-x86-64/ilp32-4.d,
    	* testsuite/ld-x86-64/load1c-nacl.d,
    	* testsuite/ld-x86-64/load1c.d,
    	* testsuite/ld-x86-64/load1d-nacl.d,
    	* testsuite/ld-x86-64/load1d.d,
    	* testsuite/ld-x86-64/mpx3n.dd,
    	* testsuite/ld-x86-64/mpx4.dd,
    	* testsuite/ld-x86-64/mpx4n.dd,
    	* testsuite/ld-x86-64/plt2.dd,
    	* testsuite/ld-x86-64/pr14207.d,
    	* testsuite/ld-x86-64/pr19162.d,
    	* testsuite/ld-x86-64/pr20253-1f.d,
    	* testsuite/ld-x86-64/pr20253-1l.d,
    	* testsuite/ld-x86-64/pr20830a-now.d,
    	* testsuite/ld-x86-64/pr20830a.d,
    	* testsuite/ld-x86-64/pr20830b-now.d,
    	* testsuite/ld-x86-64/pr20830b.d,
    	* testsuite/ld-x86-64/pr21038a-now.d,
    	* testsuite/ld-x86-64/pr21038a.d,
    	* testsuite/ld-x86-64/pr21038b-now.d,
    	* testsuite/ld-x86-64/pr21038b.d,
    	* testsuite/ld-x86-64/pr21038c-now.d,
    	* testsuite/ld-x86-64/pr21038c.d,
    	* testsuite/ld-x86-64/tlsbin-nacl.rd,
    	* testsuite/ld-x86-64/tlsbin.rd,
    	* testsuite/ld-x86-64/tlsbin2-nacl.rd,
    	* testsuite/ld-x86-64/tlsbin2.rd,
    	* testsuite/ld-x86-64/tlsbindesc-nacl.rd,
    	* testsuite/ld-x86-64/tlsbindesc.rd,
    	* testsuite/ld-x86-64/tlsdesc-nacl.rd,
    	* testsuite/ld-x86-64/tlsdesc.rd,
    	* testsuite/ld-x86-64/tlsgdesc-nacl.rd,
    	* testsuite/ld-x86-64/tlsgdesc.rd,
    	* testsuite/ld-x86-64/tlspic-nacl.rd,
    	* testsuite/ld-x86-64/tlspic.rd,
    	* testsuite/ld-x86-64/tlspic2-nacl.rd,
    	* testsuite/ld-x86-64/tlspic2.rd: Update.
Comment 10 Sourceware Commits 2018-06-08 19:44:17 UTC
The master branch has been updated by H.J. Lu <hjl@sourceware.org>:

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

commit ecf99cc09236316db27fd8ffaedca864f81ea081
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Jun 8 12:41:31 2018 -0700

    ld/x86: Remove hidden _edata, __bss_start, and _end
    
    There is no need to put hidden _edata, __bss_start, and _end in dynamic
    symbol table in shared libraries.
    
    bfd/
    
    	PR ld/23161
    	* elfxx-x86.c (elf_x86_hide_linker_defined): New function.
    	(_bfd_x86_elf_link_check_relocs): Use it to hide hidden
    	__bss_start, _end and _edata in shared libraries.
    
    ld/
    
    	PR ld/23161
    	* testsuite/ld-elf/pr23161d.rd: Remove local _edata, __bss_start,
    	and _end from dynamic symbol table.
Comment 11 H.J. Lu 2018-06-13 12:12:44 UTC
Fixed for 2.31.