mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
ff6f4d9b2d
We currently delete bytes by shifting an entire BFD backwards to overwrite the bytes we no longer need. The result is that relaxing a BFD is quadratic time. This patch adds an additional relocation that specifies a byte range that will be deleted from the final object file, and adds a relaxation pass (between the existing passes that delete bytes and the alignment pass) that actually deletes the bytes. Note that deletion is still quadratic time, and nothing uses R_RISCV_DELETE yet. I've been meaning to go convert all the other relaxations to use R_RISCV_DELETE and then make it faster, but this patch has been sitting around for months so it looks like that won't happen for a bit. The PCREL->GPREL relaxation that comes next uses this, and since we've been using these two patches out of tree since I wrote them months ago I figure it's better to just get them in now. I (or someone else :)) can convert all the relocations later... R_RISCV_DELETE will never be emitted into ELF objects, so therefor isn't exposed to the rest of binutils. As such, we're not considering this as part of the ABI. bfd/ChangeLog 2017-10-19 Palmer Dabbelt <palmer@dabbelt.com> * elfnn-riscv (R_RISCV_DELETE): New define. (_bfd_riscv_relax_delete): New function. (perform_relocation): Handle R_RISCV_DELETE. (_bfd_riscv_relax_section): Likewise. ld/ChangeLog 2017-10-19 Palmer Dabbelt <palmer@dabbelt.com> * emultempl/riscvelf.em (riscv_elf_before_allocation): Add a third relaxation pass. |
||
---|---|---|
.. | ||
aarch64elf.em | ||
aix.em | ||
alphaelf.em | ||
arclinux.em | ||
armcoff.em | ||
armelf.em | ||
astring.sed | ||
avrelf.em | ||
beos.em | ||
bfin.em | ||
cr16elf.em | ||
crxelf.em | ||
elf32.em | ||
elf-generic.em | ||
epiphanyelf_4x4.em | ||
genelf.em | ||
generic.em | ||
gld960.em | ||
gld960c.em | ||
hppaelf.em | ||
ia64elf.em | ||
irix.em | ||
linux.em | ||
lnk960.em | ||
m68hc1xelf.em | ||
m68kcoff.em | ||
m68kelf.em | ||
metagelf.em | ||
mipself.em | ||
mmix-elfnmmo.em | ||
mmixelf.em | ||
mmo.em | ||
msp430.em | ||
nds32elf.em | ||
needrelax.em | ||
netbsd.em | ||
nios2elf.em | ||
ostring.sed | ||
pe.em | ||
pep.em | ||
ppc32elf.em | ||
ppc64elf.em | ||
pruelf.em | ||
README | ||
riscvelf.em | ||
rxelf.em | ||
s390.em | ||
scoreelf.em | ||
sh64elf.em | ||
solaris2.em | ||
spu_icache.o_c | ||
spu_icache.S | ||
spu_ovl.o_c | ||
spu_ovl.S | ||
spuelf.em | ||
sunos.em | ||
tic6xdsbt.em | ||
ticoff.em | ||
v850elf.em | ||
vanilla.em | ||
vms.em | ||
vxworks.em | ||
xtensaelf.em | ||
z80.em |
The files in this directory are sourced by genscripts.sh, after
setting some variables to substitute in, to produce
C source files that contain jump tables for each emulation.
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.