diff options
author | Palmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu> | 2015-09-18 23:30:04 -0700 |
---|---|---|
committer | Palmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu> | 2015-09-18 23:30:04 -0700 |
commit | 0680a1dd43c667aa69a977d13ec35835d0172d6f (patch) | |
tree | 5364f1ba2832a27a88b707922acb2de9aa0474cc /binutils | |
parent | 3f67a37c3331d99dd634bdfe75b0603c05d38fad (diff) | |
download | riscv-gnu-toolchain-0680a1dd43c667aa69a977d13ec35835d0172d6f.zip riscv-gnu-toolchain-0680a1dd43c667aa69a977d13ec35835d0172d6f.tar.gz riscv-gnu-toolchain-0680a1dd43c667aa69a977d13ec35835d0172d6f.tar.bz2 |
binutils: bfd: fit PLT functions on 80 characters
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/bfd/elfnn-riscv.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/binutils/bfd/elfnn-riscv.c b/binutils/bfd/elfnn-riscv.c index 93d9ea2..a8babe3 100644 --- a/binutils/bfd/elfnn-riscv.c +++ b/binutils/bfd/elfnn-riscv.c @@ -187,6 +187,9 @@ riscv_elf_got_plt_val (bfd_vma plt_index, struct bfd_link_info *info) static void riscv_make_plt_header (bfd_vma gotplt_addr, bfd_vma addr, uint32_t *entry) { + bfd_vma gotplt_offset_high = RISCV_PCREL_HIGH_PART (gotplt_addr, addr); + bfd_vma gotplt_offset_low = RISCV_PCREL_LOW_PART (gotplt_addr, addr); + /* auipc t2, %hi(.got.plt) sub t1, t1, t3 # shifted .got.plt offset + hdr size + 12 l[w|d] t3, %lo(.got.plt)(t2) # _dl_runtime_resolve @@ -196,11 +199,11 @@ riscv_make_plt_header (bfd_vma gotplt_addr, bfd_vma addr, uint32_t *entry) l[w|d] t0, PTRSIZE(t0) # link map jr t3 */ - entry[0] = RISCV_UTYPE (AUIPC, X_T2, RISCV_PCREL_HIGH_PART (gotplt_addr, addr)); + entry[0] = RISCV_UTYPE (AUIPC, X_T2, gotplt_offset_high); entry[1] = RISCV_RTYPE (SUB, X_T1, X_T1, X_T3); - entry[2] = RISCV_ITYPE (LREG, X_T3, X_T2, RISCV_PCREL_LOW_PART (gotplt_addr, addr)); + entry[2] = RISCV_ITYPE (LREG, X_T3, X_T2, gotplt_offset_low); entry[3] = RISCV_ITYPE (ADDI, X_T1, X_T1, -(PLT_HEADER_SIZE + 12)); - entry[4] = RISCV_ITYPE (ADDI, X_T0, X_T2, RISCV_PCREL_LOW_PART (gotplt_addr, addr)); + entry[4] = RISCV_ITYPE (ADDI, X_T0, X_T2, gotplt_offset_low); entry[5] = RISCV_ITYPE (SRLI, X_T1, X_T1, 4 - RISCV_ELF_LOG_WORD_BYTES); entry[6] = RISCV_ITYPE (LREG, X_T0, X_T0, RISCV_ELF_WORD_BYTES); entry[7] = RISCV_ITYPE (JALR, 0, X_T3, 0); @@ -209,15 +212,15 @@ riscv_make_plt_header (bfd_vma gotplt_addr, bfd_vma addr, uint32_t *entry) /* Generate a PLT entry. */ static void -riscv_make_plt_entry (bfd_vma got_address, bfd_vma addr, uint32_t *entry) +riscv_make_plt_entry (bfd_vma got, bfd_vma addr, uint32_t *entry) { /* auipc t3, %hi(.got.plt entry) l[w|d] t3, %lo(.got.plt entry)(t3) jalr t1, t3 nop */ - entry[0] = RISCV_UTYPE (AUIPC, X_T3, RISCV_PCREL_HIGH_PART (got_address, addr)); - entry[1] = RISCV_ITYPE (LREG, X_T3, X_T3, RISCV_PCREL_LOW_PART(got_address, addr)); + entry[0] = RISCV_UTYPE (AUIPC, X_T3, RISCV_PCREL_HIGH_PART (got, addr)); + entry[1] = RISCV_ITYPE (LREG, X_T3, X_T3, RISCV_PCREL_LOW_PART(got, addr)); entry[2] = RISCV_ITYPE (JALR, X_T1, X_T3, 0); entry[3] = RISCV_NOP; } |