[PATCH] D14450: [ELF2] Add mandatory .dynamic section entries on MIPS.

Simon Atanasyan via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 6 11:49:00 PST 2015


atanasyan added inline comments.

================
Comment at: ELF/OutputSections.cpp:491
@@ -480,3 +490,3 @@
     ++NumEntries; // DT_PLTRELSZ
-    ++NumEntries; // DT_PLTGOT
+    ++NumEntries; // DT_PLTGOT or DT_MIPS_PLTGOT
     ++NumEntries; // DT_PLTREL
----------------
ikudrin wrote:
> atanasyan wrote:
> > ikudrin wrote:
> > > atanasyan wrote:
> > > > Do you read MIPS ABI? DT_MIPS_PLTGOT is used in the non-PIC MIPS code only. PIC MIPS code uses DT_PLTGOT entry but this entry points to the .got section.
> > > The logic of this line: if we have .plt.got section, then store its address to DT_MIPS_PLTGOT entry. Is something wrong here?
> > > Please note, the DT_PLTGOT entry for MIPS target is mentioned a bit later in this function.
> > If MIPS dynamic binary has a .got section, DT_PLTGOT entry should point to it. The DT_MIPS_PLTGOT entry should point to the .got.plt entry if MIPS dynamic binary is non-PIC.
> > 
> > https://sourceware.org/ml/binutils/2008-07/txt00000.txt
> Moreover, the logic here is the same as in this patch for the old lld: http://reviews.llvm.org/rL200630.
No, old lld works correctly at least in that case. Do you use any MIPS toolchain as a reference implementation?
```
$ cat test.c
void foo() {}

$ mips-linux-gnu-gcc -fPIC test.c -shared
$ readelf -a a.out
...
[16] .got              PROGBITS        000107c0
...
0x00000003 (PLTGOT)                     0x107c0
```


http://reviews.llvm.org/D14450





More information about the llvm-commits mailing list