Commit Graph

10 Commits

Author SHA1 Message Date
Max Filippov
384c919321 binutils: fix xtensa ld bug triggered by --gc-sections
elf_xtensa_gc_sweep_hook doesn't correctly unreference symbols that were
made local, that results in link failure with the following message:

  BFD (GNU Binutils) 2.24 internal error, aborting at elf32-xtensa.c line
  3372 in elf_xtensa_finish_dynamic_sections

elf_xtensa_gc_sweep_hook determines symbol reference type (PLT or GOT) by
relocation type. Relocation types are not changed when symbol becomes
local, but its PLT references are added to GOT references and
plt.refcount is set to 0. Such symbol cannot be unreferences in the
elf_xtensa_gc_sweep_hook and its extra references make calculated GOT
relocations section size not match number of GOT relocations.

Fix it by treating PLT reference as GOT reference when plt.refcount is
not positive.

Fixes:
  http://autobuild.buildroot.net/results/3e2e24f697e26c93d4d95782b1cb7799fa620a7a/
  http://autobuild.buildroot.org/results/97d4c96d6f6cdc1ed4007456f4ab70be9dfa41b5/

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-05-16 18:28:06 +02:00
Thomas Petazzoni
df8dcbcd81 binutils/2.22: add patch to warn about unsafe library paths
This commit adds a patch to binutils borrowed from CodeSourcery/Yocto
that warns about unsafe library paths (i.e /usr/lib, /usr/local/lib,
etc.). The patch was adapted to binutils 2.22, and modified to support
the BR_COMPILER_PARANOID_UNSAFE_PATH environment variable to error out
instead of just warn when unsafe paths are used. Even though erroring
out can be chosen by passing --error-poison-system-directories, we are
not sure this option in LDFLAGS will always be passed, so having an
environment variable guarantees it will always be passed, and also
allows to have an identical behavior to the external toolchain
wrapper.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Romain Naour <romain.naour@openwide.fr>
2014-12-11 00:05:52 +01:00
Max Filippov
b20bb0c7b7 binutils: fix xtensa trampolines search code for conditional branches
This fixes the following build errors seen when assembling huge files
produced by gcc:
  Error: jump target out of range; no usable trampoline found
  Error: operand 1 of 'j' has out of range value '307307'

Fixes:
  http://autobuild.buildroot.net/results/545/545168d9caf3bdb3dd3eb3bae58ba9db8a33384a/

Backported from: d92b6eece424f0ad35d96fdd85bf207295e8c4c3
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-11-26 14:48:25 +01:00
Max Filippov
9849f0052c binutils: fix 'call8: call target out of range' xtensa ld bug
This fixes the following linux kernel build errors:

  LD      init/built-in.o
  net/built-in.o: In function `raw_proc_exit':
  (.init.text+0xe29): dangerous relocation:
		      call8: call target out of range: udp_proc_register
  net/built-in.o: In function `udp_table_init':
  (.init.text+0xf09): dangerous relocation:
		      call8: call target out of range: udp_proc_register
  net/built-in.o: In function `inet_init':
  af_inet.c:(.init.text+0x142e): dangerous relocation:
				 call8: call target out of range: udp4_proc_exit
  net/built-in.o: In function `ip_auto_config':
  ipconfig.c:(.init.text+0x28aa): dangerous relocation:
				  call8: call target out of range: arp_send

Backported from: 331ed1307b93d3ff77d248bdf2f7b79a20851457
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-09-23 21:56:46 +02:00
Max Filippov
0dd180ec19 binutils: fix xtensa ld segfault on linking linux modules
This fixes the following build error reproducible with any linux kernel
module built with a recent buildroot toolchain:

  LD [M]  fs/jbd2/jbd2.ko
  /bin/sh: line 1: 12069 Segmentation fault
  buildroot/host/usr/bin/xtensa-buildroot-linux-uclibc-ld -r --no-relax
  -T linux/scripts/module-common.lds --build-id
  -o fs/jbd2/jbd2.ko fs/jbd2/jbd2.o fs/jbd2/jbd2.mod.o

Backported from: e7d17e71cdc10a2e81e454ce3b9637f1b2a587f2
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-07-12 14:34:05 +02:00
Max Filippov
f7230f6af5 binutils: backport R_XTENSA_DIFF* relocation signedness fix
This fixes the following build errors:

  qlatincodec.o:(.debug_line+0xcd7): dangerous relocation: overflow after relaxation
  qmetaobject.o:(.debug_frame+0xa89): dangerous relocation: overflow after relaxation

Fixes:
  http://autobuild.buildroot.net/results/f51/f51c87ae3c883cc36b06c0741999b52e48e4c943/
  http://autobuild.buildroot.net/results/bcb/bcbf25e4054911a7a192bdb5c92e0ebd50e9666c/
  http://autobuild.buildroot.net/results/8a8/8a8a0f8cca293ce1f383421ba8b1223b4266e3bc/
  http://autobuild.buildroot.net/results/a54/a54f3707781dc193292eda7d1723fce6487d6980/

Backported from: 1058c7532d0b012ac329219264ddad59049fb6e6
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-05-12 23:03:47 +02:00
Max Filippov
aae48f1c6f binutils: backport first section frag alignment fix for xtensa gas
This fixes the following build error often seen during linux kernel
linking step with relaxation enabled:

  dangerous relocation: call8: misaligned call target: (.text.unlikely+0x63)

Backported from: a35d5e823fdfe8a6e7e05ca8e3fb8bb5697335b1
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-05-12 23:03:38 +02:00
Max Filippov
c09b2bfaea binutils: drop *.texi* hunks from xtensa trampolines patches
Rebuilding as.info with makeinfo version 5.2 results in a build error,
even with pristine binutils source. Dropping hunks that change *.texi*
files avoids documentation rebuild.

Reported-by: Vincent Stehlé <vincent.stehle@freescale.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-04-05 18:36:39 +02:00
Max Filippov
6acb2e1db2 binutils: backport gas xtensa jump trampolines
This fixes compilation of huge source files that have jumps with offsets
greater than 128 Kbytes, that otherwise fails with such messages:

  {standard input}:65267: Error: operand 1 of 'j' has out of range value '131089'
  {standard input}:106879: Error: operand 1 of 'j' has out of range value '4294833951'

Fixes:
  http://autobuild.buildroot.net/results/e45/e450d5efc7435035c956bb962d598837648f319d/

Backported from: a82c7d9030b67a6a76a5403d0e1641f9e42141ac
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-04-03 21:38:28 +02:00
Gustavo Zacarias
61eea455be binutils: move patches to new model
On commit 5538e47662 the versioned package
patches changed the directory structure but the packages weren't fixed.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-04-23 09:00:01 +02:00