aboutsummaryrefslogtreecommitdiff
path: root/binutils
AgeCommit message (Collapse)AuthorFilesLines
2014-10-22binutils, glibc, gcc: support TLS copy relocationsAndrew Waterman3-194/+38
This allows the local-exec model to be used for any non-PIC TLS reference, even if it cannot be proven at compile time that the access binds locally. It essentially obviates the need for IE -> LE relaxations.
2014-10-22binutils: refactor check_relocsAndrew Waterman1-62/+70
2014-10-21binutils: support subword local label subtractionAndrew Waterman3-16/+110
Things like .half .L2 - .L3 are now supported. This required some new relocs.
2014-10-21binutils, glibc: renumber relocsAndrew Waterman2-286/+241
The ones that are part of the dynamic linking ABI should now be finalized.
2014-10-20binutils: clean up disassemblerAndrew Waterman1-251/+27
2014-10-19binutils: remove some pc-relative relocsAndrew Waterman3-65/+8
Previously, we had multiple low-part PC-relative relocs, e.g. R_RISCV_GOT_LO12 and R_RISCV_TLS_GD_LO12. But since these are indirect relocs and enough info is encoded in the high part, they are redundant. Now, we only have two: R_RISCV_PCREL_LO12_I and R_RISCV_PCREL_LO12_S. For example, the following PIC code adds TLS variables x and y: .L1: auipc a0, %tls_ie_pcrel_hi(x) .L2: auipc a1, %tls_ie_pcrel_hi(y) ld a0, %pcrel_lo(.L1)(a0) ld a1, %pcrel_lo(.L2)(a1) ld a0, 0(a0) ld a1, 0(a1) add a0, a0, a1
2014-10-18binutils: improve GAS's constant-generation codeAndrew Waterman1-28/+30
2014-10-18binutils: clean up GAS port a bitAndrew Waterman2-1090/+264
2014-10-18binutils, glibc: rewrite bfd; employ sane ELF ABIAndrew Waterman12-4245/+2203
The new BFD port is primarily based upon TILE-Gx, which is conveniently simple and vanilla. We no longer have dynamic REL relocations, and the GOT no longer needs to be sorted a la MIPS. So GNU-style shared object hashes are now supported. Note that there are probably a few lingering issues.
2014-09-30binutils, glibc: remove unused relocAndrew Waterman2-16/+1
Also, clean up dl-machine.h a bit.
2014-09-30binutils: create PLT entries for unknown symbolsAndrew Waterman1-1/+1
Previously, we were failing to create them unless they were known to be STT_FUNC. But if they have yet to be seen, they're STT_NOTYPE.
2014-09-29binutils: allow splitting of AUIPC-based relocsAndrew Waterman2-180/+270
The low part uses an indirect relocation to the high part to determine how to fill itself in. For example: .L1: auipc t0, %pcrel_hi(foo) [unrelated code] addi t0, t0, %pcrel_lo(.L1) will correctly load &foo into t0.
2014-09-28binutils: remove unused macroAndrew Waterman1-5/+0
2014-09-27binutils: clean up code; adhere to FSF spacingAndrew Waterman7-36/+99
h/t Matt Thomas
2014-09-20Print absolute addresses for auli/jalr pairMatt Thomas1-1/+1
It turns out that this instruction sequence can be generated to call an absolute address. This adds a comment to the JALR with the full expanded address, which is useful for debugging (it turns out it's easier to just let my PC do addition rather than having to do it in my head). Note that amd64 does this exact thing, so it's probably correct... :) Signed-off-by: Palmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu>
2014-09-17binutils: remove legacy cruft and s/MIPS/RISC-V/Andrew Waterman14-836/+671
h/t Matt Thomas
2014-09-16binutils: don't needlessly set needs_plt flagAndrew Waterman1-5/+5
2014-09-16binutils: try copy relocs only for static linkingAndrew Waterman1-27/+22
This fixes some assertion failures when R_RISCV_64 and R_RISCV_CALL_PLT were used against the same global symbol.
2014-09-12binutils: fix printf formats in disassemblerAndrew Waterman1-4/+4
2014-09-08binutils: initial binutils 2.24 portAndrew Waterman17-0/+12831