binutils-gdb/bfd
Nelson Chu ecb915b4de RISC-V: PR28509, the default visibility symbol cannot be referenced by R_RISCV_JAL.
When generating the shared object, the default visibility symbols may bind
externally, which means they will be exported to the dynamic symbol table,
and are preemptible by default.  These symbols cannot be referenced by the
non-pic R_RISCV_JAL and R_RISCV_RVC_JUMP.  However, consider that linker
may relax the R_RISCV_CALL relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP,
if these relocations are relocated to the plt entries, then we won't report
error for them.  Perhaps we also need the similar checks for the
R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.

After applying this patch, and revert the following glibc patch,
riscv: Fix incorrect jal with HIDDEN_JUMPTARGET
https://sourceware.org/git/?p=glibc.git;a=commit;h=68389203832ab39dd0dbaabbc4059e7fff51c29b

I get the expected errors as follows,
ld: relocation R_RISCV_RVC_JUMP against `__sigsetjmp' which may bind externally can not be used when making a shared object; recompile with -fPIC
ld: relocation R_RISCV_JAL against `exit' which may bind externally can not be used when making a shared object; recompile with -fPIC

Besides, we also have similar changes for libgcc,
RISC-V: jal cannot refer to a default visibility symbol for shared object
45116f3420

bfd/
	pr 28509
	* elfnn-riscv.c (riscv_elf_relocate_section): Report errors when
	makeing a shard object, and the referenced symbols of R_RISCV_JAL
	relocations are default visibility.  Besides, we should handle most
	of the cases here, so don't need the unresolvable check later for
	R_RISCV_JAL and R_RISCV_RVC_JUMP.
ld/
	pr 28509
	* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated.
	* testsuite/ld-riscv-elf/lib-nopic-01a.s: Removed.
	* testsuite/ld-riscv-elf/lib-nopic-01b.d: Likewise.
	* testsuite/ld-riscv-elf/lib-nopic-01b.s: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-01.d: New testcase.
	* testsuite/ld-riscv-elf/shared-lib-nopic-01.s: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-02.d: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-02.s: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-03.d: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-03.s: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-04.d: Likewise.
	* testsuite/ld-riscv-elf/shared-lib-nopic-04.s: Likewise.
2022-09-12 11:31:41 +08:00
..
doc
hosts
po regen potfiles 2022-08-11 10:50:50 +09:30
.gitignore bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
acinclude.m4
aclocal.m4
aix5ppc-core.c
aix386-core.c
aout32.c
aout64.c
aout-cris.c
aout-ns32k.c
aout-target.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
aoutx.h
arc-got.h
arc-plt.def
arc-plt.h
archive64.c
archive.c Don't use BFD_VMA_FMT in binutils 2022-08-04 12:22:39 +09:30
archures.c drop XC16x bits 2022-06-27 11:11:46 +02:00
bfd-in2.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
bfd-in.h Get rid of BFD_VMA_FMT 2022-08-06 08:08:32 +09:30
bfd.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
bfd.m4
bfdio.c bfd: Define ___lc_codepage_func prototype for older MinGW-w64 2022-08-16 18:04:21 +01:00
bfdwin.c
binary.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
cache.c Fix a conflict between the linker's need to rename some PE format input libraries and the BFD library's file caching mechanism. 2022-08-03 13:31:57 +01:00
cf-i386lynx.c
ChangeLog Support debuginfo files with empty group sections. 2022-09-09 12:01:55 +01:00
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-2017
ChangeLog-2018
ChangeLog-2019
ChangeLog-2020
ChangeLog-9193
ChangeLog-9495
ChangeLog-9697
ChangeLog-9899
cisco-core.c
coff64-rs6000.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
coff-aarch64.c aarch64_pei_vec 2022-08-15 10:19:57 +09:30
coff-alpha.c
coff-arm.c
coff-arm.h
coff-bfd.c
coff-bfd.h
coff-go32.c
coff-i386.c
coff-ia64.c
coff-loongarch64.c loongarch64_pei_vec garbage in objcopy'd relocs 2022-08-19 10:30:45 +09:30
coff-mcore.c
coff-mips.c
coff-rs6000.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
coff-sh.c
coff-stgo32.c
coff-tic4x.c
coff-tic30.c
coff-tic54x.c
coff-x86_64.c
coff-z8k.c
coff-z80.c
coffcode.h PR29482 - strip: heap-buffer-overflow 2022-08-13 15:32:47 +09:30
coffgen.c asan: heap buffer overflow in _bfd_error_handler 2022-08-06 19:59:02 +09:30
cofflink.c Get rid of fprintf_vma and sprintf_vma 2022-08-01 13:52:18 +09:30
coffswap.h
compress.c
config.bfd Add OpenBSD ARM Little Endian BFD support. 2022-09-02 11:29:54 +01:00
config.in
configure bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
configure.ac bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
configure.com Get rid of BFD_VMA_FMT 2022-08-06 08:08:32 +09:30
configure.host
COPYING
corefile.c
cpu-aarch64.c
cpu-aarch64.h
cpu-alpha.c
cpu-amdgcn.c
cpu-arc.c
cpu-arm.c
cpu-arm.h
cpu-avr.c
cpu-bfin.c
cpu-bpf.c
cpu-cr16.c
cpu-cris.c
cpu-crx.c
cpu-csky.c
cpu-d10v.c
cpu-d30v.c
cpu-dlx.c
cpu-epiphany.c
cpu-fr30.c
cpu-frv.c
cpu-ft32.c
cpu-h8300.c
cpu-h8300.h
cpu-hppa.c
cpu-i386.c
cpu-ia64-opc.c
cpu-ia64.c
cpu-iamcu.c
cpu-ip2k.c
cpu-iq2000.c
cpu-lm32.c
cpu-loongarch.c
cpu-m9s12x.c
cpu-m9s12xg.c
cpu-m32c.c
cpu-m32r.c
cpu-m68hc11.c
cpu-m68hc12.c
cpu-m68k.c
cpu-m68k.h
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-nfp.c
cpu-nios2.c
cpu-ns32k.c
cpu-or1k.c
cpu-pdp11.c
cpu-pj.c
cpu-powerpc.c
cpu-pru.c
cpu-riscv.c
cpu-riscv.h
cpu-rl78.c
cpu-rs6000.c
cpu-rx.c
cpu-s12z.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-tilegx.c
cpu-tilepro.c
cpu-v850_rh850.c
cpu-v850.c
cpu-vax.c
cpu-visium.c
cpu-wasm32.c
cpu-xgate.c
cpu-xstormy16.c
cpu-xtensa.c
cpu-z8k.c
cpu-z80.c
dep-in.sed
development.sh
dwarf1.c
dwarf2.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
ecoff-bfd.h
ecoff.c Get rid of fprintf_vma and sprintf_vma 2022-08-01 13:52:18 +09:30
ecofflink.c
ecoffswap.h
elf32-am33lin.c
elf32-arc.c
elf32-arm.c arm: Define elf_backend_extern_protected_data to 0 [PR 18705] 2022-06-25 10:27:49 -07:00
elf32-arm.h
elf32-avr.c PR11290, avr-ld "out of range error" is confusing 2022-08-25 17:20:01 +09:30
elf32-avr.h
elf32-bfin.c
elf32-bfin.h
elf32-cr16.c
elf32-cr16.h
elf32-cris.c
elf32-crx.c
elf32-csky.c
elf32-csky.h
elf32-d10v.c
elf32-d30v.c
elf32-dlx.c
elf32-dlx.h
elf32-epiphany.c
elf32-fr30.c
elf32-frv.c
elf32-ft32.c
elf32-gen.c
elf32-h8300.c
elf32-hppa.c
elf32-hppa.h
elf32-i386.c x86: Ignore protected visibility in shared libraries on Solaris 2022-08-25 09:10:45 -07:00
elf32-ip2k.c
elf32-iq2000.c
elf32-lm32.c
elf32-m32c.c
elf32-m32r.c
elf32-m68hc1x.c
elf32-m68hc1x.h
elf32-m68hc11.c
elf32-m68hc12.c
elf32-m68k.c
elf32-m68k.h
elf32-mcore.c
elf32-mep.c
elf32-metag.c
elf32-metag.h
elf32-microblaze.c
elf32-mips.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
elf32-moxie.c
elf32-msp430.c
elf32-mt.c
elf32-nds32.c
elf32-nds32.h
elf32-nios2.c
elf32-nios2.h
elf32-or1k.c
elf32-pj.c
elf32-ppc.c asan: ppc64_elf_get_synthetic_symtab heap buffer overflow 2022-08-05 20:48:29 +09:30
elf32-ppc.h
elf32-pru.c
elf32-rl78.c
elf32-rx.c Don't use BFD_VMA_FMT in binutils 2022-08-04 12:22:39 +09:30
elf32-rx.h
elf32-s12z.c
elf32-s390.c
elf32-score7.c
elf32-score.c
elf32-score.h
elf32-sh-relocs.h
elf32-sh.c
elf32-sparc.c
elf32-spu.c asan: NULL dereference in spu_elf_object_p 2022-08-13 14:11:27 +09:30
elf32-spu.h
elf32-tic6x.c
elf32-tic6x.h
elf32-tilegx.c
elf32-tilegx.h
elf32-tilepro.c
elf32-tilepro.h
elf32-v850.c
elf32-v850.h
elf32-vax.c
elf32-visium.c
elf32-wasm32.c
elf32-xgate.c
elf32-xstormy16.c
elf32-xtensa.c xtensa: bfd: fix TLS relocations generated for PIE 2022-09-02 09:54:49 -07:00
elf32-z80.c
elf32.c
elf64-alpha.c
elf64-amdgcn.c
elf64-bpf.c
elf64-gen.c
elf64-hppa.c
elf64-hppa.h
elf64-ia64-vms.c asan: ppc64_elf_get_synthetic_symtab heap buffer overflow 2022-08-05 20:48:29 +09:30
elf64-mips.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
elf64-mmix.c
elf64-nfp.c
elf64-ppc.c asan: ppc64_elf_get_synthetic_symtab heap buffer overflow 2022-08-05 20:48:29 +09:30
elf64-ppc.h
elf64-s390.c
elf64-sparc.c
elf64-tilegx.c
elf64-tilegx.h
elf64-x86-64.c x86: Ignore protected visibility in shared libraries on Solaris 2022-08-25 09:10:45 -07:00
elf64.c
elf-attrs.c
elf-bfd.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
elf-eh-frame.c
elf-hppa.h
elf-ifunc.c
elf-linker-x86.h
elf-linux-core.h
elf-m10200.c
elf-m10300.c
elf-nacl.c
elf-nacl.h
elf-properties.c
elf-s390-common.c
elf-s390.h
elf-strtab.c
elf-vxworks.c
elf-vxworks.h
elf.c Support debuginfo files with empty group sections. 2022-09-09 12:01:55 +01:00
elfcode.h Don't use BFD_VMA_FMT in binutils 2022-08-04 12:22:39 +09:30
elfcore.h
elflink.c asan: ppc64_elf_get_synthetic_symtab heap buffer overflow 2022-08-05 20:48:29 +09:30
elfn32-mips.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
elfnn-aarch64.c Don't use BFD_VMA_FMT in binutils 2022-08-04 12:22:39 +09:30
elfnn-ia64.c
elfnn-loongarch.c LoongArch: ld: Fix bug not generate plt when link a dso 2022-08-24 14:27:03 +08:00
elfnn-riscv.c RISC-V: PR28509, the default visibility symbol cannot be referenced by R_RISCV_JAL. 2022-09-12 11:31:41 +08:00
elfxx-aarch64.c
elfxx-aarch64.h
elfxx-ia64.c
elfxx-ia64.h
elfxx-loongarch.c bfd: Delete R_LARCH_NONE from dyn info of LoongArch. 2022-07-25 09:59:08 +08:00
elfxx-loongarch.h bfd: Add supported for LoongArch new relocations. 2022-07-25 09:59:08 +08:00
elfxx-mips.c
elfxx-mips.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
elfxx-riscv.c RISC-V: Add 'Zmmul' extension in assembler. 2022-08-30 17:46:11 +08:00
elfxx-riscv.h
elfxx-sparc.c
elfxx-sparc.h
elfxx-target.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
elfxx-tilegx.c
elfxx-tilegx.h
elfxx-x86.c x86: Disallow invalid relocations against protected symbols 2022-07-19 08:41:52 -07:00
elfxx-x86.h x86: Disallow invalid relocations against protected symbols 2022-07-19 08:41:52 -07:00
format.c
gen-aout.c
genlink.h
go32stub.h
hash.c
host-aout.c
hppabsd-core.c
hpux-core.c
i386aout.c
i386bsd.c
i386lynx.c
i386msdos.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
ihex.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
init.c
irix-core.c
libaout.h
libbfd-in.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
libbfd.c
libbfd.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
libcoff-in.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
libcoff.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
libecoff.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
libhppa.h ubsan: undefined shift in sign_extend 2022-08-13 14:11:27 +09:30
libpei.h bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
libxcoff.h
linker.c
lynx-core.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 msan: bfd_mach_o_layout_commands use of uninitialised value 2022-08-06 18:43:24 +09:30
mach-o.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
MAINTAINERS
Makefile.am bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
Makefile.in bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
makefile.vms
mep-relocs.pl
merge.c
mmo.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
netbsd-core.c
netbsd.h
ns32k.h
ns32knetbsd.c
opncls.c Fix a conflict between the linker's need to rename some PE format input libraries and the BFD library's file caching mechanism. 2022-08-03 13:31:57 +01:00
osf-core.c
pc532-mach.c
pdp11.c
pe-arm-wince.c
pe-arm.c
pe-i386.c
pe-mcore.c
pe-sh.c
pe-x86_64.c
pef-traceback.h
pef.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
pef.h
pei-aarch64.c
pei-arm-wince.c
pei-arm.c
pei-i386.c
pei-ia64.c
pei-loongarch64.c bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
pei-mcore.c
pei-sh.c
pei-x86_64.c Re: PE objdump -x 2022-08-03 17:00:17 +09:30
peicode.h bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
peXXigen.c bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
plugin.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
plugin.h
PORTING
ppcboot.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
ptrace-core.c
README
reloc16.c
reloc.c PR11290, avr-ld "out of range error" is confusing 2022-08-25 17:20:01 +09:30
rs6000-core.c
sco5-core.c
section.c objcopy section alignment 2022-08-06 18:43:24 +09:30
simple.c symbols for bfd_simple_get_relocated_section_contents 2022-08-21 07:54:27 +09:30
som.c asan: NULL dereference in som_set_reloc_info 2022-08-13 14:11:27 +09:30
som.h bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
srec.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
stab-syms.c
stabs.c
syms.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
sysdep.h
targets.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
targmatch.sed
tekhex.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
TODO
trad-core.c
vax1knetbsd.c
vaxnetbsd.c
verilog.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
version.h Automatic date update in version.in 2022-09-12 00:00:10 +00:00
version.m4 Update version to 2.39.50 and regenerate files 2022-07-08 11:19:44 +01:00
vms-alpha.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
vms-lib.c
vms-misc.c
vms.h
warning.m4
wasm-module.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
wasm-module.h
xcofflink.c
xcofflink.h
xsym.c bfd: Add bfd_find_nearest_line_with_alt 2022-09-06 10:42:50 -04:00
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 in BFD to https://sourceware.org/bugzilla/

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-2022 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.