[PATCH 2/2] RISC-V: Support assembler modifier %got_pcrel_hi.
Nelson Chu
nelson.chu@sifive.com
Wed Mar 4 01:54:00 GMT 2020
More information about the Binutils mailing list
Wed Mar 4 01:54:00 GMT 2020
- Previous message (by thread): [PATCH 2/2] RISC-V: Support assembler modifier %got_pcrel_hi.
- Next message (by thread): [PATCH 1/2] RISC-V: Add description for RISC-V Modifiers to as doc.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi MaskRay, On Wed, Mar 4, 2020 at 8:07 AM Fangrui Song <i@maskray.me> wrote: > > What if %got_pcrel_hi refers to a STB_LOCAL symbol? For example, > > auipc a0, %got_pcrel_hi(.L1) > > It may be worth a test. > > FWIW, llvm-mc -triple=riscv64 -filetype=obj a.s # create a R_RISCV_GOT_HI20 referencing .L1 > There is no special treatment. Consider the following case tmp.s: .option pic .option norelax .global foo foo: la a0, foo .L1: auipc a0, %got_pcrel_hi(foo) ld a0, %pcrel_lo(.L1)(a0) .L2: auipc a0, %got_pcrel_hi(.L1) addi a0, a0, %pcrel_lo(.L2) la a0, .L1 $ ~/binutils-dev/build-elf64-upstream/build-install/bin/riscv64-unknown-elf-as tmp.s -o tmp.o $ ~/binutils-dev/build-elf64-upstream/build-install/bin/riscv64-unknown-elf-objdump -dr tmp.o tmp.o: file format elf64-littleriscv Disassembly of section .text: 0000000000000000 <foo>: 0: 00000517 auipc a0,0x0 0: R_RISCV_GOT_HI20 foo 4: 00053503 ld a0,0(a0) # 0 <foo> 4: R_RISCV_PCREL_LO12_I .L0 0000000000000008 <.L1>: 8: 00000517 auipc a0,0x0 8: R_RISCV_GOT_HI20 foo c: 00053503 ld a0,0(a0) # 8 <.L1> c: R_RISCV_PCREL_LO12_I .L1 0000000000000010 <.L2>: 10: 00000517 auipc a0,0x0 10: R_RISCV_GOT_HI20 .L1 14: 00050513 mv a0,a0 14: R_RISCV_PCREL_LO12_I .L2 18: 00000517 auipc a0,0x0 18: R_RISCV_GOT_HI20 .L1 1c: 00053503 ld a0,0(a0) # 18 <.L2+0x8> 1c: R_RISCV_PCREL_LO12_I .L0 `foo` is a global symbol. `.L1` and `.L2` are local symbols. I think the current upstream GNU assembler treats them all the same for LA macro with pic and %got_pcrel_hi. So yes, the behavior should be the same as llvm-mc. BTW I get the same result for the linux toolchain. Thanks Nelson
- Previous message (by thread): [PATCH 2/2] RISC-V: Support assembler modifier %got_pcrel_hi.
- Next message (by thread): [PATCH 1/2] RISC-V: Add description for RISC-V Modifiers to as doc.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list