.text .type foo_resolver, @function foo_resolver: ret .size foo_resolver, .-foo_resolver .globl foo .type foo, %gnu_indirect_function .set foo, foo_resolver .globl bar .type bar, @function bar: .L1: auipc x1, %got_pcrel_hi (foo) .ifdef __64_bit__ ld x1, %pcrel_lo (.L1) (x1) .else lw x1, %pcrel_lo (.L1) (x1) .endif .L2: auipc x2, %pcrel_hi (foo_addr) .ifdef __64_bit__ ld x2, %pcrel_lo (.L2) (x2) .else lw x2, %pcrel_lo (.L2) (x2) .endif .L3: auipc x3, %pcrel_hi (foo) addi x3, x3, %pcrel_lo (.L3) call foo call foo@plt ret .size bar, .-bar .data foo_addr: .ifdef __64_bit__ .quad foo .else .long foo .endif