[PATCH] D63132: [ELF][RISCV] Change __global_pointer$ from STV_HIDDEN to STV_DEFAULT and add test
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 11 08:14:35 PDT 2019
MaskRay updated this revision to Diff 204076.
MaskRay retitled this revision from "[ELF][RISCV] Set st_shndx of __global_pointer$ to 1 if .sdata does not exist" to "[ELF][RISCV] Change __global_pointer$ from STV_HIDDEN to STV_DEFAULT and add test".
MaskRay edited the summary of this revision.
MaskRay removed a subscriber: dalias.
MaskRay added a comment.
Repurpose this patch since musl will add a dummy .sdata to its Scrt1.o
Repository:
rLLD LLVM Linker
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D63132/new/
https://reviews.llvm.org/D63132
Files:
ELF/Writer.cpp
test/ELF/riscv-gp.s
Index: test/ELF/riscv-gp.s
===================================================================
--- /dev/null
+++ test/ELF/riscv-gp.s
@@ -0,0 +1,24 @@
+# REQUIRES: riscv
+# RUN: llvm-mc -filetype=obj -triple=riscv32 %s -o %t.32.o
+# RUN: ld.lld -pie %t.32.o -o %t.32
+# RUN: llvm-readelf -s %t.32 | FileCheck --check-prefix=SYM %s
+# RUN: llvm-readelf -S %t.32 | FileCheck --check-prefix=SEC %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t.32 | FileCheck --check-prefix=DIS %s
+
+# RUN: llvm-mc -filetype=obj -triple=riscv64 %s -o %t.64.o
+# RUN: ld.lld -pie %t.64.o -o %t.64
+# RUN: llvm-readelf -s %t.64 | FileCheck --check-prefix=SYM %s
+# RUN: llvm-readelf -S %t.64 | FileCheck --check-prefix=SEC %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t.64 | FileCheck --check-prefix=DIS %s
+
+## __global_pointer$ = .sdata+0x800 = 0x3800
+# SEC: [ 7] .sdata PROGBITS {{0*}}00003000
+# SYM: {{0*}}00003800 0 NOTYPE GLOBAL DEFAULT 7 __global_pointer$
+
+## __global_pointer$ - 0x1000 = 4096*3-2048
+# DIS: 1000: auipc gp, 3
+# DIS-NEXT: addi gp, gp, -2048
+
+lla gp, __global_pointer$
+
+.section .sdata,"aw"
Index: ELF/Writer.cpp
===================================================================
--- ELF/Writer.cpp
+++ ELF/Writer.cpp
@@ -1693,8 +1693,8 @@
// RISC-V's gp can address +/- 2 KiB, set it to .sdata + 0x800 if not defined.
if (Config->EMachine == EM_RISCV)
- if (!dyn_cast_or_null<Defined>(Symtab->find("__global_pointer$")))
- addOptionalRegular("__global_pointer$", findSection(".sdata"), 0x800);
+ addOptionalRegular("__global_pointer$", findSection(".sdata"), 0x800,
+ STV_DEFAULT, STB_GLOBAL);
if (Config->EMachine == EM_X86_64) {
// On targets that support TLSDESC, _TLS_MODULE_BASE_ is defined in such a
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63132.204076.patch
Type: text/x-patch
Size: 1783 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190611/2ba77160/attachment.bin>
More information about the llvm-commits
mailing list