binutils-gdb/bfd
Alan Modra 2e684e75ae hppa-linux TLS relocs
This patch fixes various problems with TLS relocations.

1) Report an error if a symbol has both TLS and normal GOT entries.
2) The GOT entry size calculation was obscure and made use of the fact
   that a symbol shouldn't have both normal and TLS GOT entries.
3) The second word of a GD GOT entry sometimes omitted a dynamic
   reloc, which was fine except that doing so makes it impossible for
   ld.so to differentiate GD and LD entries.  Also, a NONE reloc was
   emitted.
4) Unnecessary relocs were emitted for GOT entries.
5) GOT relocs didn't take note of UNDEFWEAK_NO_DYNAMIC_RELOC.

	* elf32-hppa.c (enum _tls_type): Move.
	(struct elf32_hppa_link_hash_entry): Make tls_type a bitfield.
	(elf32_hppa_check_relocs): Set DF_STATIC_TLS only for shared libraries.
	Tidy tls_type handling.  Set symbol tls_type for GOT_TLS_LDM too.
	(got_entries_needed, got_relocs_needed): New functions.
	(allocate_dynrelocs): Use them.
	(elf32_hppa_size_dynamic_sections): Likewise.
	(elf32_hppa_relocate_section): Delete bogus FIXME.  Formatting.
	Correct code emitting relocs on GD/IE got entries.  Report an
	error when a symbol has both normal and TLS GOT relocs.
2017-11-05 09:37:33 +10:30
..
doc
hosts
po Regen SRC-POTFILES.in 2017-08-31 20:07:13 +09:30
.gitignore
acinclude.m4
aclocal.m4
aix5ppc-core.c
aix386-core.c
aout0.c
aout32.c
aout64.c
aout-adobe.c
aout-arm.c
aout-cris.c
aout-ns32k.c
aout-sparcle.c
aout-target.h
aout-tic30.c
aoutf1.h
aoutx.h PR22306, Invalid free() in slurp_symtab() 2017-10-17 16:47:44 +10:30
arc-got.h
arc-plt.def
arc-plt.h
archive64.c
archive.c Allow for __gnu_lto_slim prefixed with extra "_" 2017-10-25 15:32:52 +10:30
archures.c FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. 2017-11-01 15:33:24 +00:00
armnetbsd.c
bfd-in2.h FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. 2017-11-01 15:33:24 +00:00
bfd-in.h
bfd.c Rename _doprnt -> _bfd_doprnt to fix DJGPP bfd build (and likely others) 2017-10-11 12:47:25 +01:00
bfd.m4
bfdio.c
bfdwin.c
binary.c
bout.c
cache.c
cf-i386lynx.c
cf-sparclynx.c
ChangeLog hppa-linux TLS relocs 2017-11-05 09:37:33 +10:30
ChangeLog-0001
ChangeLog-0203
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-2016
ChangeLog-9193
ChangeLog-9495
ChangeLog-9697
ChangeLog-9899
cisco-core.c
coff64-rs6000.c
coff-alpha.c
coff-apollo.c
coff-arm.c
coff-aux.c
coff-bfd.c
coff-bfd.h
coff-go32.c
coff-h8300.c
coff-h8500.c
coff-i386.c
coff-i860.c
coff-i960.c
coff-ia64.c
coff-m68k.c
coff-m88k.c
coff-mcore.c
coff-mips.c
coff-ppc.c
coff-rs6000.c
coff-sh.c
coff-sparc.c
coff-stgo32.c
coff-svm68k.c
coff-tic4x.c
coff-tic30.c
coff-tic54x.c
coff-tic80.c
coff-u68k.c
coff-w65.c
coff-we32k.c
coff-x86_64.c
coff-z8k.c
coff-z80.c
coffcode.h Prevent illegal memory accesses when attempting to read excessively large COFF line number tables. 2017-11-01 15:21:46 +00:00
coffgen.c Fix excessive memory allocation attempts and possible integer overfloaws when attempting to read a COFF binary with a corrupt symbol count. 2017-11-03 11:55:21 +00:00
cofflink.c Fix an invalid free called when attempting to link a COFF object against an ELF archive with --no-keep-memory enabled. 2017-11-01 11:35:42 +00:00
coffswap.h
compress.c
config.bfd Fix gas/22304 by forcing a 64-bit bfd for cris*-*. 2017-10-22 13:05:07 +02:00
config.in
configure x86; Don't add elf64-x86-64.lo nor elf64.lo together with elfxx-x86.lo 2017-09-07 17:21:07 -07:00
configure.ac x86; Don't add elf64-x86-64.lo nor elf64.lo together with elfxx-x86.lo 2017-09-07 17:21:07 -07:00
configure.com
configure.host
COPYING
corefile.c
cpu-aarch64.c
cpu-alpha.c
cpu-arc.c
cpu-arm.c
cpu-avr.c
cpu-bfin.c
cpu-cr16.c
cpu-cr16c.c
cpu-cris.c
cpu-crx.c
cpu-d10v.c
cpu-d30v.c
cpu-dlx.c
cpu-epiphany.c
cpu-fr30.c
cpu-frv.c
cpu-ft32.c FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. 2017-11-01 15:33:24 +00:00
cpu-h8300.c
cpu-h8500.c
cpu-hppa.c
cpu-i370.c
cpu-i386.c
cpu-i860.c
cpu-i960.c
cpu-ia64-opc.c
cpu-ia64.c
cpu-iamcu.c
cpu-ip2k.c
cpu-iq2000.c
cpu-k1om.c
cpu-l1om.c
cpu-lm32.c
cpu-m9s12x.c
cpu-m9s12xg.c
cpu-m32c.c
cpu-m32r.c
cpu-m68hc11.c
cpu-m68hc12.c
cpu-m68k.c
cpu-m88k.c
cpu-m10200.c
cpu-m10300.c
cpu-mcore.c
cpu-mep.c
cpu-metag.c
cpu-microblaze.c
cpu-mips.c
cpu-mmix.c
cpu-moxie.c
cpu-msp430.c
cpu-mt.c
cpu-nds32.c
cpu-nios2.c
cpu-ns32k.c
cpu-or1k.c
cpu-pdp11.c
cpu-pj.c
cpu-plugin.c
cpu-powerpc.c
cpu-pru.c
cpu-riscv.c
cpu-rl78.c
cpu-rs6000.c
cpu-rx.c
cpu-s390.c
cpu-score.c
cpu-sh.c
cpu-sparc.c
cpu-spu.c
cpu-tic4x.c
cpu-tic6x.c
cpu-tic30.c
cpu-tic54x.c
cpu-tic80.c
cpu-tilegx.c
cpu-tilepro.c
cpu-v850_rh850.c
cpu-v850.c
cpu-vax.c
cpu-visium.c
cpu-w65.c
cpu-wasm32.c
cpu-we32k.c
cpu-xc16x.c
cpu-xgate.c
cpu-xstormy16.c
cpu-xtensa.c
cpu-z8k.c
cpu-z80.c
demo64.c
dep-in.sed
development.sh
dwarf1.c PR22202, buffer overflow in parse_die 2017-09-25 22:01:47 +09:30
dwarf2.c PR22212, memory leak in nm 2017-10-09 13:23:00 +10:30
ecoff.c
ecofflink.c
ecoffswap.h
elf32-am33lin.c ELF/BFD,GDB: Handle both variants of the 32-bit Linux core PRPSINFO note 2017-10-11 15:01:40 +01:00
elf32-arc.c
elf32-arm.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-avr.c
elf32-avr.h
elf32-bfin.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-cr16.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-cr16c.c
elf32-cris.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-crx.c
elf32-d10v.c
elf32-d30v.c
elf32-dlx.c
elf32-dlx.h
elf32-epiphany.c
elf32-fr30.c
elf32-frv.c frv-elf --gc-sections failures 2017-10-30 12:08:26 +10:30
elf32-ft32.c FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. 2017-11-01 15:33:24 +00:00
elf32-gen.c
elf32-h8300.c
elf32-hppa.c hppa-linux TLS relocs 2017-11-05 09:37:33 +10:30
elf32-hppa.h
elf32-i370.c
elf32-i386.c x86: Remove func_pointer_refcount 2017-11-03 11:15:10 -07:00
elf32-i860.c
elf32-i960.c
elf32-ip2k.c
elf32-iq2000.c
elf32-lm32.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-m32c.c
elf32-m32r.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-m68hc1x.c
elf32-m68hc1x.h
elf32-m68hc11.c
elf32-m68hc12.c
elf32-m68k.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-m88k.c
elf32-mcore.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-mep.c
elf32-metag.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-metag.h
elf32-microblaze.c microblaze: Check for indirect and warning symbols 2017-10-17 17:15:02 -07:00
elf32-mips.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-moxie.c
elf32-msp430.c
elf32-mt.c
elf32-nds32.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-nds32.h
elf32-nios2.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-nios2.h
elf32-or1k.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-pj.c
elf32-ppc.c PR22374, PowerPC unnecessary PLT entries 2017-11-01 18:46:34 +10:30
elf32-ppc.h
elf32-pru.c
elf32-rl78.c
elf32-rx.c
elf32-rx.h
elf32-s390.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-score7.c Fix remaining targets using wrong .interp conditions 2017-10-12 12:58:11 +10:30
elf32-score.c Fix remaining targets using wrong .interp conditions 2017-10-12 12:58:11 +10:30
elf32-score.h
elf32-sh64-com.c
elf32-sh64.c
elf32-sh64.h
elf32-sh-relocs.h
elf32-sh-symbian.c
elf32-sh.c sh: Check UNDEFWEAK_NO_DYNAMIC_RELOC 2017-10-14 11:07:30 -07:00
elf32-sparc.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-spu.c
elf32-spu.h
elf32-tic6x.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-tic6x.h
elf32-tilegx.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-tilegx.h
elf32-tilepro.c tilepro: Check bfd_link_executable for TLS check 2017-10-19 05:21:01 -07:00
elf32-tilepro.h
elf32-v850.c
elf32-vax.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32-visium.c
elf32-wasm32.c
elf32-xc16x.c
elf32-xgate.c
elf32-xgate.h
elf32-xstormy16.c
elf32-xtensa.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf32.c
elf64-alpha.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf64-gen.c
elf64-hppa.c
elf64-hppa.h
elf64-ia64-vms.c
elf64-mips.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf64-mmix.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf64-ppc.c PR22374, PowerPC unnecessary PLT entries 2017-11-01 18:46:34 +10:30
elf64-ppc.h
elf64-s390.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf64-sh64.c ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note 2017-10-11 15:01:41 +01:00
elf64-sparc.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf64-tilegx.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf64-tilegx.h
elf64-x86-64.c x86: Remove func_pointer_refcount 2017-11-03 11:15:10 -07:00
elf64.c
elf-attrs.c Fix buffer overrun when parsing an ELF attribute string that is not NUL terminated. 2017-09-01 09:57:44 +01:00
elf-bfd.h ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elf-eh-frame.c -Og warning fixes 2017-09-02 11:00:02 +09:30
elf-hppa.h
elf-ifunc.c Remove unused _bfd_elf_ifunc_get_synthetic_symtab 2017-08-28 15:40:00 -07:00
elf-linux-core.h ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note 2017-10-11 15:01:41 +01:00
elf-m10200.c
elf-m10300.c mn10300: Don't free cached internal symbol table 2017-10-09 15:05:03 -07:00
elf-nacl.c
elf-nacl.h
elf-properties.c PR22307, Heap out of bounds read in _bfd_elf_parse_gnu_properties 2017-10-17 22:12:45 +10:30
elf-s390-common.c
elf-s390.h
elf-strtab.c
elf-vxworks.c
elf-vxworks.h
elf.c ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note 2017-10-11 15:01:41 +01:00
elfcode.h
elfcore.h
elflink.c relocs_compatible test for gc-sections 2017-10-30 11:03:50 +10:30
elfn32-mips.c MIPS: Preset EF_MIPS_ABI2 with n32 ELF objects 2017-10-23 15:39:46 +01:00
elfnn-aarch64.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elfnn-ia64.c ia64: Check UNDEFWEAK_NO_DYNAMIC_RELOC 2017-10-14 10:53:56 -07:00
elfnn-riscv.c RISC-V: Only relax to C.LUI when imm != 0 and rd != 0/2 2017-10-24 08:02:46 -07:00
elfxx-aarch64.c
elfxx-aarch64.h
elfxx-ia64.c
elfxx-ia64.h
elfxx-mips.c ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elfxx-mips.h ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elfxx-riscv.c
elfxx-riscv.h
elfxx-sparc.c sparc: Check bfd_link_executable for TLS check 2017-10-19 05:18:22 -07:00
elfxx-sparc.h ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elfxx-target.h ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elfxx-tilegx.c tilegx: Check bfd_link_executable for TLS check 2017-10-19 05:22:35 -07:00
elfxx-tilegx.h ELF: Call check_relocs after opening all inputs 2017-10-16 03:50:13 -07:00
elfxx-x86.c x86: Remove func_pointer_refcount 2017-11-03 11:15:10 -07:00
elfxx-x86.h x86: Remove func_pointer_refcount 2017-11-03 11:15:10 -07:00
epoc-pe-arm.c
epoc-pei-arm.c
format.c
freebsd.h
gen-aout.c
genlink.h
go32stub.h
hash.c
host-aout.c
hp300bsd.c
hp300hpux.c
hppabsd-core.c
hpux-core.c
i386aout.c
i386bsd.c
i386dynix.c
i386freebsd.c
i386linux.c
i386lynx.c
i386mach3.c
i386msdos.c
i386netbsd.c
i386os9k.c
ieee.c
ihex.c
init.c
irix-core.c
libaout.h
libbfd-in.h
libbfd.c
libbfd.h FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. 2017-11-01 15:33:24 +00:00
libcoff-in.h
libcoff.h
libecoff.h
libhppa.h
libieee.h
libnlm.h
liboasys.h
libpei.h
libxcoff.h
linker.c Allow for __gnu_lto_slim prefixed with extra "_" 2017-10-25 15:32:52 +10:30
lynx-core.c
m68k4knetbsd.c
m68klinux.c
m68knetbsd.c
m88kmach3.c
m88kopenbsd.c
mach-o-aarch64.c
mach-o-arm.c
mach-o-i386.c
mach-o-target.c
mach-o-x86-64.c
mach-o.c
mach-o.h
MAINTAINERS
Makefile.am Add elfxx-x86.h and elfxx-x86.c 2017-08-29 12:58:51 -07:00
Makefile.in Add elfxx-x86.h and elfxx-x86.c 2017-08-29 12:58:51 -07:00
makefile.vms
mep-relocs.pl
merge.c Fail when string merge can't alloc memory 2017-09-29 14:42:36 +09:30
mipsbsd.c
mmo.c
netbsd-core.c
netbsd.h
newsos3.c
nlm32-alpha.c
nlm32-i386.c
nlm32-ppc.c
nlm32-sparc.c
nlm32.c
nlm64.c
nlm-target.h
nlm.c
nlmcode.h
nlmswap.h
ns32k.h
ns32knetbsd.c
oasys.c
opncls.c PR22197, buffer overflow in bfd_get_debug_link_info_1 2017-09-24 21:40:58 +09:30
osf-core.c
pc532-mach.c
pdp11.c
pe-arm-wince.c
pe-arm.c
pe-i386.c
pe-mcore.c
pe-mips.c
pe-ppc.c
pe-sh.c
pe-x86_64.c
pef-traceback.h
pef.c
pef.h
pei-arm-wince.c
pei-arm.c
pei-i386.c
pei-ia64.c
pei-mcore.c
pei-mips.c
pei-ppc.c
pei-sh.c
pei-x86_64.c
peicode.h Update check for invalid values in pe_bfd_read_buildid function. 2017-11-01 12:37:33 +00:00
peXXigen.c Fix address violation when parsing a corrupt PE binary. 2017-09-14 11:15:55 +01:00
plugin.c
plugin.h
PORTING
ppcboot.c
ptrace-core.c
README
reloc16.c
reloc.c FT32B is a new FT32 family member. It has a code compression scheme, which requires the use of linker relaxations. The change is quite large, so submission is in several parts. 2017-11-01 15:33:24 +00:00
riscix.c
rs6000-core.c
sco5-core.c
section.c
simple.c
som.c
som.h
sparclinux.c
sparclynx.c
sparcnetbsd.c
srec.c
stab-syms.c
stabs.c
stamp-h.in
sunos.c
syms.c
sysdep.h
targets.c
targmatch.sed
tekhex.c
TODO
trad-core.c
vax1knetbsd.c
vaxbsd.c
vaxnetbsd.c
verilog.c
versados.c
version.h Automatic date update in version.in 2017-11-04 00:00:27 +00:00
version.m4
vms-alpha.c
vms-lib.c bfd_set_input_error 2017-10-05 12:03:47 +10:30
vms-misc.c
vms.h
warning.m4
wasm-module.c
wasm-module.h
xcofflink.c
xsym.c
xsym.h
xtensa-isa.c
xtensa-modules.c

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

BFD is an object file library.  It permits applications to use the
same routines to process object files regardless of their format.

BFD is used by the GNU debugger, assembler, linker, and the binary
utilities.

The documentation on using BFD is scanty and may be occasionally
incorrect.  Pointers to documentation problems, or an entirely
rewritten manual, would be appreciated.

There is some BFD internals documentation in doc/bfdint.texi which may
help programmers who want to modify BFD.

BFD is normally built as part of another package.  See the build
instructions for that package, probably in a README file in the
appropriate directory.

BFD supports the following configure options:

  --target=TARGET
	The default target for which to build the library.  TARGET is
	a configuration target triplet, such as sparc-sun-solaris.
  --enable-targets=TARGET,TARGET,TARGET...
	Additional targets the library should support.  To include
	support for all known targets, use --enable-targets=all.
  --enable-64-bit-bfd
	Include support for 64 bit targets.  This is automatically
	turned on if you explicitly request a 64 bit target, but not
	for --enable-targets=all.  This requires a compiler with a 64
	bit integer type, such as gcc.
  --enable-shared
	Build BFD as a shared library.
  --with-mmap
	Use mmap when accessing files.  This is faster on some hosts,
	but slower on others.  It may not work on all hosts.

Report bugs with BFD to bug-binutils@gnu.org.

Patches are encouraged.  When sending patches, always send the output
of diff -u or diff -c from the original file to the new file.  Do not
send default diff output.  Do not make the diff from the new file to
the original file.  Remember that any patch must not break other
systems.  Remember that BFD must support cross compilation from any
host to any target, so patches which use ``#ifdef HOST'' are not
acceptable.  Please also read the ``Reporting Bugs'' section of the
gcc manual.

Bug reports without patches will be remembered, but they may never get
fixed until somebody volunteers to fix them.

Copyright (C) 2012-2017 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.