binutils-gdb modified for the FreeChainXenon project
Find a file
H.J. Lu 48e30f5238 Always clear h->verinfo.verdef when overriding a dynamic definition
When linker defines a symbol to override a dynamic definition, it should
always clear h->verinfo.verdef so that the symbol won't be associated
with the version information from the dynamic object.  This happened to
the symbol "_edata" when creating an unversioned dynamic object linking
against:

1. libKF5ConfigCore.so.5.49.0
2. libKF5CoreAddons.so.5.49.0
3. libKF5I18n.so.5.49.0
4. libKF5DBusAddons.so.5.49.0
5. libQt5Xml.so.5.11.1
6. libQt5DBus.so.5.11.1
7. libQt5Core.so.5.11.1

Among them

libQt5Xml.so.5.11.1
   299: 000000000003e000     0 NOTYPE  GLOBAL DEFAULT   18 _edata@@Qt_5
libQt5DBus.so.5.11.1
   597: 0000000000092018     0 NOTYPE  GLOBAL DEFAULT   18 _edata@@Qt_5
libQt5Core.so.5.11.1
  2292: 00000000004df640     0 NOTYPE  GLOBAL DEFAULT   21 _edata@Qt_5
  2293: 00000000004df640     0 NOTYPE  GLOBAL DEFAULT   21 _edata@Qt_5

The problem is triggered by 2 duplicated entries of _edata@Qt_5 in
libQt5Core.so.5.11.1 which was created by gold.  Before this commit,
ld created the dynamic object with "_edata" in its dynamic symbol table
which was linker defined and associated with the version information
from libQt5Core.so.5.11.1.  The code in question was there when the
binutils source was imported to sourceware.org.  When such a dynamic
object was used later, we got:

/usr/bin/ld: bin/libKF5Service.so.5.49.0: _edata: invalid version 21 (max 0)
/usr/bin/ld: bin/libKF5Service.so.5.49.0: error adding symbols: bad value

Tested with many ELF targets.

	PR ld/23499
	* elflink.c (bfd_elf_record_link_assignment): Always clear
	h->verinfo.verdef when overriding a dynamic definition.
2018-08-10 12:22:09 -07:00
bfd Always clear h->verinfo.verdef when overriding a dynamic definition 2018-08-10 12:22:09 -07:00
binutils Always use align_size as pr_datasz for GNU_PROPERTY_STACK_SIZE 2018-08-10 08:14:24 -07:00
config Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
contrib Update dg-extract-results.* from gcc 2018-08-06 16:05:16 +02:00
cpu PR23430, Indices misspelled 2018-07-24 19:58:12 +09:30
elfcpp [GOLD] PowerPC .gnu.attributes support 2018-07-06 15:18:51 +09:30
etc Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
gas x86: Don't display --32/--64/--x32 without BFD64 2018-08-10 11:03:50 -07:00
gdb Use policies for code generation 2018-08-10 11:14:25 -07:00
gold Fix "may be used uninitialized" warning. 2018-08-07 22:40:33 -07:00
gprof Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
include arm - Add some comments about the versions of ARM ELF that define various e_flags values 2018-08-09 16:51:09 +01:00
intl Backport gettext fixes to get rid of warnings on macOS 2018-08-02 14:56:02 -04:00
ld x86: Properly merge GNU_PROPERTY_X86_ISA_1_USED 2018-08-08 06:09:28 -07:00
libdecnumber Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
libiberty Copy from GCC: Add linker_output as prefix for LTO temps (PR lto/86548). 2018-08-01 14:23:10 +01:00
opcodes [ARC] Update handling AUX-registers. 2018-08-06 16:41:32 +03:00
readline Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
sim Update my e-mail address, limit maintenance to MIPS I-IV ISAs 2018-07-21 00:14:01 +01:00
texinfo
zlib Regen doc/Makefile.in 2018-06-21 23:00:05 +09:30
.cvsignore
.gitattributes
.gitignore
ar-lib Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
ChangeLog Update the src-release script to include the new top level files test-driver and ar-lib. 2018-07-16 14:10:35 +01:00
compile
config-ml.in Update top level configure files by synchronizing them with gcc. 2018-01-10 15:29:21 +00:00
config.guess Update config.guess and config.sub 2018-07-05 13:35:19 +02:00
config.rpath
config.sub Update config.sub 2018-07-06 08:23:40 +02:00
configure Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-29 23:49:28 -03:00
configure.ac Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-29 23:49:28 -03:00
COPYING
COPYING.LIB
COPYING.LIBGLOSS Update the address of the FSF in the copyright notice of files which were using the old address. 2017-12-14 12:48:55 +00:00
COPYING.NEWLIB
COPYING3
COPYING3.LIB
depcomp
djunpack.bat
install-sh
libtool.m4 Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
MAINTAINERS
Makefile.def This was already applied on the GCC side. 2018-06-19 00:05:40 +02:00
Makefile.in Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-29 23:49:28 -03:00
Makefile.tpl Introduce @unless/@endunless and postbootstrap Makefile targets 2018-06-29 23:49:28 -03:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
README
README-maintainer-mode Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
setup.com
src-release.sh Update the src-release script to include the new top level files test-driver and ar-lib. 2018-07-16 14:10:35 +01:00
symlink-tree
test-driver Bump to autoconf 2.69 and automake 1.15.1 2018-06-19 16:55:06 -04:00
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.