binutils-gdb/bfd
Nelson Chu 8155b8539b RISC-V: Support STO_RISCV_VARIANT_CC and DT_RISCV_VARIANT_CC.
This is the original discussion,
https://github.com/riscv/riscv-elf-psabi-doc/pull/190

And here is the glibc part,
https://sourceware.org/pipermail/libc-alpha/2021-August/129931.html

For binutils part, we need to support a new direcitve: .variant_cc.
The function symbol marked by .variant_cc means it need to be resolved
directly without resolver for dynamic linker.  We also add a new dynamic
entry, STO_RISCV_VARIANT_CC, to indicate there are symbols with the
special attribute in the dynamic symbol table of the object.

I heard that llvm already have supported this in their mainline, so
I think it's time to commit this.

bfd/
	* elfnn-riscv.c (riscv_elf_link_hash_table): Added variant_cc
	flag. It is used to check if relocations for variant CC symbols
	may be present.
	(allocate_dynrelocs): If the symbol has STO_RISCV_VARIANT_CC
	flag, then raise the variant_cc flag of riscv_elf_link_hash_table.
	(riscv_elf_size_dynamic_sections): Added dynamic entry for
	variant_cc.
	(riscv_elf_merge_symbol_attribute): New function, used to merge
	non-visibility st_other attributes, including STO_RISCV_VARIANT_CC.
binutils/
	* readelf.c (get_riscv_dynamic_type): New function.
	(get_dynamic_type): Called get_riscv_dynamic_type for riscv targets.
	(get_riscv_symbol_other): New function.
	(get_symbol_other): Called get_riscv_symbol_other for riscv targets.
gas/
	* config/tc-riscv.c (s_variant_cc): Marked symbol that it follows a
	variant CC convention.
	(riscv_elf_copy_symbol_attributes): Same as elf_copy_symbol_attributes,
	but without copying st_other.  If a function symbol has special st_other
	value set via directives, then attaching an IFUNC resolver to that symbol
	should not override the st_other setting.
	(riscv_pseudo_table): Support variant_cc diretive.
	* config/tc-riscv.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Defined.
	* testsuite/gas/riscv/variant_cc-set.d: New testcase.
	* testsuite/gas/riscv/variant_cc-set.s: Likewise.
	* testsuite/gas/riscv/variant_cc.d: Likewise.
	* testsuite/gas/riscv/variant_cc.s: Likewise.
include/
	* elf/riscv.h (DT_RISCV_VARIANT_CC): Defined to (DT_LOPROC + 1).
	(STO_RISCV_VARIANT_CC): Defined to 0x80.
ld/
	* testsuite/ld-riscv-elf/variant_cc-1.s: New testcase.
	* testsuite/ld-riscv-elf/variant_cc-2.s: Likewise.
	* testsuite/ld-riscv-elf/variant_cc-now.d: Likewise.
	* testsuite/ld-riscv-elf/variant_cc-r.d: Likewise.
	* testsuite/ld-riscv-elf/variant_cc-shared.d: Likewise.
	* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated.
2021-11-19 09:32:19 +08:00
..
doc
hosts
po LoongArch bfd support 2021-10-24 21:36:31 +10:30
.gitignore
acinclude.m4
aclocal.m4
aix5ppc-core.c
aix386-core.c
aout32.c
aout64.c
aout-cris.c
aout-ns32k.c
aout-target.h
aoutx.h bfd: remove use of INLINE 2021-10-28 13:24:37 +10:30
arc-got.h
arc-plt.def
arc-plt.h
archive64.c
archive.c Fix a potential illegal memory access when testing for a special LTO symbol name. 2021-10-19 16:02:49 +01:00
archures.c arm: add armv9-a architecture to -march 2021-11-01 10:51:03 +00:00
bfd-in2.h PowerPC64 @notoc in non-power10 code 2021-11-15 12:20:13 +10:30
bfd-in.h bfd: remove use of INLINE 2021-10-28 13:24:37 +10:30
bfd.c
bfd.m4
bfdio.c
bfdwin.c
binary.c
cache.c
cf-i386lynx.c
ChangeLog Fix the linker script parser so that it will recognise the PT_GNU_RELRO segment type, and the linker itself so that it will gracefully handle being unable to assign any sections to such a segment. 2021-11-17 15:59:16 +00: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 PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10: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-mcore.c
coff-mips.c
coff-rs6000.c PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
coff-sh.c
coff-stgo32.c
coff-tic4x.c
coff-tic30.c
coff-tic54x.c asan: c4x, c54x coff_canonicalize_reloc buffer overflow 2021-10-24 22:05:51 +10:30
coff-x86_64.c Don't include coff/pe.h in coff-x86_64.c 2021-10-31 11:42:52 +10:30
coff-z8k.c
coff-z80.c
coffcode.h PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
coffgen.c COFF: avoid modifications over C_FILE filename aux entries. 2021-11-15 23:07:11 +10:30
cofflink.c PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
coffswap.h PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
compress.c PR28530, Hang in objdump on machine with 196GB RAM 2021-11-05 14:15:18 +10:30
config.bfd LoongArch bfd support 2021-10-24 21:36:31 +10:30
config.in
configure LoongArch bfd support 2021-10-24 21:36:31 +10:30
configure.ac LoongArch bfd support 2021-10-24 21:36:31 +10:30
configure.com
configure.host
COPYING
corefile.c
cpu-aarch64.c
cpu-aarch64.h
cpu-alpha.c
cpu-arc.c
cpu-arm.c arm: enable Cortex-A710 CPU 2021-11-10 14:09:05 +00:00
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-k1om.c
cpu-l1om.c
cpu-lm32.c
cpu-loongarch.c LoongArch bfd support 2021-10-24 21:36:31 +10:30
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-xc16x.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
ecoff-bfd.h
ecoff.c Re: PR28420, ecoff fuzzing failures 2021-10-31 11:42:08 +10:30
ecofflink.c
ecoffswap.h
elf32-am33lin.c
elf32-arc.c
elf32-arm.c arm: add armv9-a architecture to -march 2021-11-01 10:51:03 +00:00
elf32-arm.h
elf32-avr.c
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 elf/x86: Issue an error on discarded output .plt section 2021-11-18 07:58:52 -08: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
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
elf32-ppc.h
elf32-pru.c
elf32-rl78.c
elf32-rx.c
elf32-rx.h
elf32-s12z.c
elf32-s390.c
elf32-score7.c bfd: remove use of INLINE 2021-10-28 13:24:37 +10:30
elf32-score.c
elf32-score.h
elf32-sh-relocs.h
elf32-sh.c
elf32-sparc.c
elf32-spu.c
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-xc16x.c
elf32-xgate.c
elf32-xstormy16.c
elf32-xtensa.c
elf32-z80.c
elf32.c
elf64-alpha.c
elf64-bpf.c
elf64-gen.c
elf64-hppa.c
elf64-hppa.h
elf64-ia64-vms.c
elf64-mips.c
elf64-mmix.c
elf64-nfp.c
elf64-ppc.c PowerPC64 @notoc in non-power10 code 2021-11-15 12:20:13 +10:30
elf64-ppc.h
elf64-s390.c
elf64-sparc.c
elf64-tilegx.c
elf64-tilegx.h
elf64-x86-64.c elf/x86: Issue an error on discarded output .plt section 2021-11-18 07:58:52 -08:00
elf64.c
elf-attrs.c
elf-bfd.h LoongArch bfd support 2021-10-24 21:36:31 +10:30
elf-eh-frame.c bfd: remove use of INLINE 2021-10-28 13:24:37 +10:30
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 Fix the linker script parser so that it will recognise the PT_GNU_RELRO segment type, and the linker itself so that it will gracefully handle being unable to assign any sections to such a segment. 2021-11-17 15:59:16 +00:00
elfcode.h ELF core file size checks 2021-10-29 17:22:32 +10:30
elfcore.h ELF core file size checks 2021-10-29 17:22:32 +10:30
elflink.c
elfn32-mips.c
elfnn-aarch64.c
elfnn-ia64.c
elfnn-loongarch.c LoongArch bfd support 2021-10-24 21:36:31 +10:30
elfnn-riscv.c RISC-V: Support STO_RISCV_VARIANT_CC and DT_RISCV_VARIANT_CC. 2021-11-19 09:32:19 +08:00
elfxx-aarch64.c
elfxx-aarch64.h
elfxx-ia64.c
elfxx-ia64.h
elfxx-loongarch.c LoongArch bfd support 2021-10-24 21:36:31 +10:30
elfxx-loongarch.h LoongArch bfd support 2021-10-24 21:36:31 +10:30
elfxx-mips.c bfd: remove use of INLINE 2021-10-28 13:24:37 +10:30
elfxx-mips.h
elfxx-riscv.c RISC-V: Add instructions and operand set for z[fdq]inx 2021-11-18 14:43:23 +08:00
elfxx-riscv.h RISC-V: Dump objects according to the elf architecture attribute. 2021-11-11 16:59:13 +08:00
elfxx-sparc.c
elfxx-sparc.h
elfxx-target.h
elfxx-tilegx.c
elfxx-tilegx.h
elfxx-x86.c
elfxx-x86.h
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
ihex.c bfd: remove use of INLINE 2021-10-28 13:24:37 +10:30
init.c
irix-core.c
libaout.h
libbfd-in.h
libbfd.c
libbfd.h PowerPC64 @notoc in non-power10 code 2021-11-15 12:20:13 +10:30
libcoff-in.h
libcoff.h PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
libecoff.h
libhppa.h
libpei.h
libxcoff.h
linker.c Fix a potential illegal memory access when testing for a special LTO symbol name. 2021-10-19 16:02:49 +01:00
lynx-core.c
mach-o-aarch64.c
mach-o-arm.c asan: arm-darwin: buffer overflow 2021-10-24 21:45:23 +10:30
mach-o-i386.c
mach-o-target.c
mach-o-x86-64.c
mach-o.c ubsan: undefined shift in mach-o.c 2021-11-06 21:15:49 +10:30
mach-o.h
MAINTAINERS
Makefile.am LoongArch bfd support 2021-10-24 21:36:31 +10:30
Makefile.in LoongArch bfd support 2021-10-24 21:36:31 +10:30
makefile.vms
mep-relocs.pl
merge.c
mmo.c asan: mmo: NULL dereferenc in mmo_xore_32 2021-10-28 13:25:57 +10:30
netbsd-core.c
netbsd.h
ns32k.h
ns32knetbsd.c
opncls.c
osf-core.c
pc532-mach.c
pdp11.c asan: aout: heap buffer overflow 2021-10-24 21:36:32 +10:30
pe-arm-wince.c
pe-arm.c
pe-i386.c
pe-mcore.c
pe-sh.c
pe-x86_64.c Don't include coff/pe.h in coff-x86_64.c 2021-10-31 11:42:52 +10:30
pef-traceback.h
pef.c
pef.h
pei-arm-wince.c
pei-arm.c
pei-i386.c
pei-ia64.c
pei-mcore.c
pei-sh.c
pei-x86_64.c
peicode.h bfd: Remove use of void pointer arithmetic 2021-10-11 19:13:41 +10:30
peXXigen.c PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
plugin.c
plugin.h
PORTING
ppcboot.c
ptrace-core.c
README
reloc16.c
reloc.c PowerPC64 @notoc in non-power10 code 2021-11-15 12:20:13 +10:30
rs6000-core.c
sco5-core.c
section.c
simple.c
som.c
som.h
srec.c
stab-syms.c
stabs.c
stamp-h.in
syms.c
sysdep.h
targets.c LoongArch bfd support 2021-10-24 21:36:31 +10:30
targmatch.sed
tekhex.c
TODO
trad-core.c
vax1knetbsd.c
vaxnetbsd.c
verilog.c
version.h Automatic date update in version.in 2021-11-19 00:00:07 +00:00
version.m4
vms-alpha.c asan: alpha-vms: objdump buffer overflows 2021-11-05 14:15:18 +10:30
vms-lib.c
vms-misc.c
vms.h
warning.m4
wasm-module.c
wasm-module.h
xcofflink.c PR 28447: implement multiple parameters for .file on XCOFF 2021-11-10 14:43:24 +10:30
xcofflink.h
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-2021 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.