<div dir="ltr">Nice. Thanks!</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 11, 2016 at 7:24 PM, Rafael Espindola via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br>
Date: Mon Apr 11 21:24:43 2016<br>
New Revision: 266037<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=266037&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=266037&view=rev</a><br>
Log:<br>
Devide _gp in the same spot as other mips symbols. NFC.<br>
<br>
The test changes are just because of the symbol order.<br>
<br>
Modified:<br>
lld/trunk/ELF/Driver.cpp<br>
lld/trunk/ELF/Writer.cpp<br>
lld/trunk/test/ELF/duplicate-internal.s<br>
lld/trunk/test/ELF/mips-dynamic.s<br>
lld/trunk/test/ELF/mips-got-relocs.s<br>
lld/trunk/test/ELF/mips-hilo-gp-disp.s<br>
<br>
Modified: lld/trunk/ELF/Driver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=266037&r1=266036&r2=266037&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=266037&r1=266036&r2=266037&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Driver.cpp (original)<br>
+++ lld/trunk/ELF/Driver.cpp Mon Apr 11 21:24:43 2016<br>
@@ -415,14 +415,6 @@ template <class ELFT> void LinkerDriver:<br>
Config->EntrySym = Symtab.addUndefined(S);<br>
}<br>
<br>
- if (Config->EMachine == EM_MIPS) {<br>
- // Define _gp for MIPS. st_value of _gp symbol will be updated by Writer<br>
- // so that it points to an absolute address which is relative to GOT.<br>
- // See "Global Data Symbols" in Chapter 6 in the following document:<br>
- // <a href="ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf" rel="noreferrer" target="_blank">ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf</a><br>
- ElfSym<ELFT>::MipsGp = Symtab.addAbsolute("_gp", STV_DEFAULT);<br>
- }<br>
-<br>
for (std::unique_ptr<InputFile> &F : Files)<br>
Symtab.addFile(std::move(F));<br>
if (HasError)<br>
<br>
Modified: lld/trunk/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=266037&r1=266036&r2=266037&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=266037&r1=266036&r2=266037&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Writer.cpp (original)<br>
+++ lld/trunk/ELF/Writer.cpp Mon Apr 11 21:24:43 2016<br>
@@ -928,6 +928,12 @@ OutputSectionFactory<ELFT>::createKey(In<br>
// the linking result. This function defines such symbols.<br>
template <class ELFT> void Writer<ELFT>::addReservedSymbols() {<br>
if (Config->EMachine == EM_MIPS) {<br>
+ // Define _gp for MIPS. st_value of _gp symbol will be updated by Writer<br>
+ // so that it points to an absolute address which is relative to GOT.<br>
+ // See "Global Data Symbols" in Chapter 6 in the following document:<br>
+ // <a href="ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf" rel="noreferrer" target="_blank">ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf</a><br>
+ ElfSym<ELFT>::MipsGp = Symtab.addAbsolute("_gp", STV_DEFAULT);<br>
+<br>
// On MIPS O32 ABI, _gp_disp is a magic symbol designates offset between<br>
// start of function and 'gp' pointer into GOT.<br>
ElfSym<ELFT>::MipsGpDisp = Symtab.addIgnored("_gp_disp");<br>
<br>
Modified: lld/trunk/test/ELF/duplicate-internal.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/duplicate-internal.s?rev=266037&r1=266036&r2=266037&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/duplicate-internal.s?rev=266037&r1=266036&r2=266037&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/duplicate-internal.s (original)<br>
+++ lld/trunk/test/ELF/duplicate-internal.s Mon Apr 11 21:24:43 2016<br>
@@ -3,7 +3,7 @@<br>
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o<br>
# RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s<br>
<br>
-# CHECK: duplicate symbol: _gp in (internal) and {{.*}}<br>
+# CHECK: duplicate symbol: _gp in {{.*}} and (internal)<br>
<br>
# REQUIRES: mips<br>
<br>
<br>
Modified: lld/trunk/test/ELF/mips-dynamic.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-dynamic.s?rev=266037&r1=266036&r2=266037&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-dynamic.s?rev=266037&r1=266036&r2=266037&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/mips-dynamic.s (original)<br>
+++ lld/trunk/test/ELF/mips-dynamic.s Mon Apr 11 21:24:43 2016<br>
@@ -71,9 +71,9 @@<br>
# DSO: ]<br>
# DSO: DynamicSymbols [<br>
# DSO: Name: @<br>
-# DSO: Name: _gp@<br>
# DSO: Name: __start@<br>
# DSO: Name: _foo@<br>
+# DSO: Name: _gp@<br>
# DSO: ]<br>
# DSO: DynamicSection [<br>
# DSO-NEXT: Tag Type Name/Value<br>
<br>
Modified: lld/trunk/test/ELF/mips-got-relocs.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-got-relocs.s?rev=266037&r1=266036&r2=266037&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-got-relocs.s?rev=266037&r1=266036&r2=266037&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/mips-got-relocs.s (original)<br>
+++ lld/trunk/test/ELF/mips-got-relocs.s Mon Apr 11 21:24:43 2016<br>
@@ -47,9 +47,10 @@ v1:<br>
# EXE_SYM: Sections:<br>
# EXE_SYM: .got 0000000c 0000000000030000 DATA<br>
# EXE_SYM: SYMBOL TABLE:<br>
+# EXE_SYM: 00040000 g .data 00000004 v1<br>
# EXE_SYM: 00037ff0 *ABS* 00000000 _gp<br>
# ^-- .got + GP offset (0x7ff0)<br>
-# EXE_SYM: 00040000 g .data 00000004 v1<br>
+<br>
<br>
# EXE_GOT_BE: Contents of section .got:<br>
# EXE_GOT_BE: 30000 00000000 80000000 00040000<br>
@@ -70,9 +71,9 @@ v1:<br>
# DSO_SYM: Sections:<br>
# DSO_SYM: .got 0000000c 0000000000020000 DATA<br>
# DSO_SYM: SYMBOL TABLE:<br>
+# DSO_SYM: 00030000 g .data 00000004 v1<br>
# DSO_SYM: 00027ff0 *ABS* 00000000 _gp<br>
# ^-- .got + GP offset (0x7ff0)<br>
-# DSO_SYM: 00030000 g .data 00000004 v1<br>
<br>
# DSO_GOT_BE: Contents of section .got:<br>
# DSO_GOT_BE: 20000 00000000 80000000 00030000<br>
<br>
Modified: lld/trunk/test/ELF/mips-hilo-gp-disp.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-hilo-gp-disp.s?rev=266037&r1=266036&r2=266037&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-hilo-gp-disp.s?rev=266037&r1=266036&r2=266037&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/mips-hilo-gp-disp.s (original)<br>
+++ lld/trunk/test/ELF/mips-hilo-gp-disp.s Mon Apr 11 21:24:43 2016<br>
@@ -26,8 +26,8 @@ __start:<br>
<br>
# EXE: SYMBOL TABLE:<br>
# EXE: 00020000 .text 00000000 __start<br>
-# EXE: 00037ff0 *ABS* 00000000 _gp<br>
# EXE: 00020010 .text 00000000 _foo<br>
+# EXE: 00037ff0 *ABS* 00000000 _gp<br>
<br>
# SO: Disassembly of section .text:<br>
# SO-NEXT: __start:<br>
@@ -37,6 +37,6 @@ __start:<br>
# ^-- %lo(0x27ff0-0x10004+4)<br>
<br>
# SO: SYMBOL TABLE:<br>
-# SO: 00027ff0 *ABS* 00000000 _gp<br>
# SO: 00010000 .text 00000000 __start<br>
# SO: 00010010 .text 00000000 _foo<br>
+# SO: 00027ff0 *ABS* 00000000 _gp<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>