[lld] r201741 - [ELF] Dont generate PHDR when creating dynamic libraries.
Shankar Easwaran
shankare at codeaurora.org
Wed Feb 19 15:46:14 PST 2014
Author: shankare
Date: Wed Feb 19 17:46:13 2014
New Revision: 201741
URL: http://llvm.org/viewvc/llvm-project?rev=201741&view=rev
Log:
[ELF] Dont generate PHDR when creating dynamic libraries.
Modified:
lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h
lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
lld/trunk/test/elf/Hexagon/dynlib-data.test
lld/trunk/test/elf/Hexagon/dynlib-hash.test
lld/trunk/test/elf/Hexagon/dynlib-syms.test
lld/trunk/test/elf/Hexagon/dynlib.test
lld/trunk/test/elf/Mips/dynlib-dynamic.test
lld/trunk/test/elf/Mips/dynlib-dynsym.test
lld/trunk/test/elf/Mips/dynlib-fileheader.test
lld/trunk/test/elf/Mips/got16.test
lld/trunk/test/elf/Mips/hilo16-1.test
lld/trunk/test/elf/symbols.test
Modified: lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h (original)
+++ lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h Wed Feb 19 17:46:13 2014
@@ -129,6 +129,11 @@ public:
/// \brief Does the output have dynamic sections.
virtual bool isDynamic() const;
+ /// \brief Are we creating a shared library ?
+ virtual bool isDynamicLibrary() const {
+ return _outputELFType == llvm::ELF::ET_DYN;
+ }
+
/// \brief Is the relocation a relative relocation
virtual bool isRelativeReloc(const Reference &r) const;
Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Wed Feb 19 17:46:13 2014
@@ -691,7 +691,7 @@ template <class ELFT> void DefaultLayout
}
}
}
- if (_context.isDynamic()) {
+ if (_context.isDynamic() && !_context.isDynamicLibrary()) {
Segment<ELFT> *segment =
new (_allocator) ProgramHeaderSegment<ELFT>(_context);
_segments.push_back(segment);
Modified: lld/trunk/test/elf/Hexagon/dynlib-data.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-data.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-data.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-data.test Wed Feb 19 17:46:13 2014
@@ -4,6 +4,6 @@ RUN: llvm-objdump -s %t > %t1
RUN: FileCheck -check-prefix=CHECKRELOCS %s < %t1
CHECKRELOCS: Contents of section .text:
-CHECKRELOCS: 0118 01c09da0 01d89da1 3b400000 18d4496a ........;@....Ij
-CHECKRELOCS: 0128 ff7fff0f 00ff9897 00c08091 38c09d91 ............8...
-CHECKRELOCS: 0138 1ec01e96 ....
+CHECKRELOCS: 00f8 01c09da0 01d89da1 3c400000 18c4496a ........<@....Ij
+CHECKRELOCS: 0108 ff7fff0f 00ff9897 00c08091 38c09d91 ............8...
+CHECKRELOCS: 0118 1ec01e96 ....
Modified: lld/trunk/test/elf/Hexagon/dynlib-hash.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-hash.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-hash.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-hash.test Wed Feb 19 17:46:13 2014
@@ -4,6 +4,6 @@ RUN: llvm-objdump -s %t > %t1
RUN: FileCheck -check-prefix=CHECKHASH %s < %t1
CHECKHASH: Contents of section .hash:
-CHECKHASH: 00c0 03000000 07000000 06000000 01000000 ................
-CHECKHASH: 00d0 04000000 00000000 00000000 00000000 ................
-CHECKHASH: 00e0 00000000 03000000 02000000 05000000 ................
+CHECKHASH: 00a0 03000000 07000000 06000000 01000000 ................
+CHECKHASH: 00b0 04000000 00000000 00000000 00000000 ................
+CHECKHASH: 00c0 00000000 03000000 02000000 05000000 ................
Modified: lld/trunk/test/elf/Hexagon/dynlib-syms.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-syms.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib-syms.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib-syms.test Wed Feb 19 17:46:13 2014
@@ -3,5 +3,5 @@ RUN: -o %t --noinhibit-exec -shared
RUN: llvm-nm -n -s %t > %t1
RUN: FileCheck -check-prefix=CHECKSYMS %s < %t1
-CHECKSYMS: 0000028c A _DYNAMIC
+CHECKSYMS: 0000026c A _DYNAMIC
CHECKSYMS: 00001008 A _GLOBAL_OFFSET_TABLE_
Modified: lld/trunk/test/elf/Hexagon/dynlib.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Hexagon/dynlib.test (original)
+++ lld/trunk/test/elf/Hexagon/dynlib.test Wed Feb 19 17:46:13 2014
@@ -1,6 +1,7 @@
RUN: lld -flavor gnu -target hexagon %p/Inputs/use-shared.hexagon -shared -o %t1
RUN: llvm-readobj -dyn-symbols %t1 > %t2
RUN: FileCheck -check-prefix=DYNSYMS %s < %t2
+RUN: llvm-readobj -program-headers %t1 | FileCheck %s
DYNSYMS: DynamicSymbols [
DYNSYMS: Symbol {
@@ -31,3 +32,5 @@ DYNSYMS-NEXT: Other:
DYNSYMS-NEXT: Section: .text
DYNSYMS-NEXT: }
DYNSYMS-NEXT: ]
+
+CHECK-NOT: PT_PHDR
Modified: lld/trunk/test/elf/Mips/dynlib-dynamic.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynamic.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/dynlib-dynamic.test (original)
+++ lld/trunk/test/elf/Mips/dynlib-dynamic.test Wed Feb 19 17:46:13 2014
@@ -11,21 +11,21 @@
# CHECK: LoadName:
# CHECK: DynamicSection [ (15 entries)
# CHECK: Tag Type Name/Value
-# CHECK-NEXT: 0x00000004 HASH 0xD4
-# CHECK-NEXT: 0x00000005 STRTAB 0x138
-# CHECK-NEXT: 0x00000006 SYMTAB 0xF8
-# CHECK-NEXT: 0x0000000A STRSZ 17 (bytes)
-# CHECK-NEXT: 0x0000000B SYMENT 16 (bytes)
-# CHECK-NEXT: 0x0000001A FINI_ARRAY 0x0
-# CHECK-NEXT: 0x0000001C FINI_ARRAYSZ 0 (bytes)
-# CHECK-NEXT: 0x70000001 MIPS_RLD_VERSION 1
-# CHECK-NEXT: 0x70000005 MIPS_FLAGS 0x2
-# CHECK-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x0
-# CHECK-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 4
-# CHECK-NEXT: 0x70000011 MIPS_SYMTABNO 4
-# CHECK-NEXT: 0x70000013 MIPS_GOTSYM 0x2
-# CHECK-NEXT: 0x00000003 PLTGOT 0x1000
-# CHECK-NEXT: 0x00000000 NULL 0x0
+# CHECK-NEXT: 0x00000004 HASH 0xB4
+# CHECK-NEXT: 0x00000005 STRTAB 0x118
+# CHECK-NEXT: 0x00000006 SYMTAB 0xD8
+# CHECK-NEXT: 0x0000000A STRSZ 17 (bytes)
+# CHECK-NEXT: 0x0000000B SYMENT 16 (bytes)
+# CHECK-NEXT: 0x0000001A FINI_ARRAY 0x0
+# CHECK-NEXT: 0x0000001C FINI_ARRAYSZ 0 (bytes)
+# CHECK-NEXT: 0x70000001 MIPS_RLD_VERSION 1
+# CHECK-NEXT: 0x70000005 MIPS_FLAGS 0x2
+# CHECK-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x0
+# CHECK-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 4
+# CHECK-NEXT: 0x70000011 MIPS_SYMTABNO 4
+# CHECK-NEXT: 0x70000013 MIPS_GOTSYM 0x2
+# CHECK-NEXT: 0x00000003 PLTGOT 0x1000
+# CHECK-NEXT: 0x00000000 NULL 0x0
# CHECK-NEXT: ]
.abicalls
Modified: lld/trunk/test/elf/Mips/dynlib-dynsym.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/dynlib-dynsym.test (original)
+++ lld/trunk/test/elf/Mips/dynlib-dynsym.test Wed Feb 19 17:46:13 2014
@@ -27,7 +27,7 @@
# CHECK-DYN: }
# CHECK-DYN: Symbol {
# CHECK-DYN: Name: bar@ (5)
-# CHECK-DYN: Value: 0x178
+# CHECK-DYN: Value: 0x158
# CHECK-DYN: Size: 4
# CHECK-DYN: Binding: Global (0x1)
# CHECK-DYN: Type: Function (0x2)
@@ -36,7 +36,7 @@
# CHECK-DYN: }
# CHECK-DYN: Symbol {
# CHECK-DYN: Name: foo@ (1)
-# CHECK-DYN: Value: 0x160
+# CHECK-DYN: Value: 0x140
# CHECK-DYN: Size: 24
# CHECK-DYN: Binding: Global (0x1)
# CHECK-DYN: Type: Function (0x2)
Modified: lld/trunk/test/elf/Mips/dynlib-fileheader.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-fileheader.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/dynlib-fileheader.test (original)
+++ lld/trunk/test/elf/Mips/dynlib-fileheader.test Wed Feb 19 17:46:13 2014
@@ -22,7 +22,7 @@
# CHECK: Type: SharedObject (0x3)
# CHECK: Machine: EM_MIPS (0x8)
# CHECK: Version: 1
-# CHECK: Entry: 0x110
+# CHECK: Entry: 0xF0
# CHECK: ProgramHeaderOffset: 0x34
# CHECK: SectionHeaderOffset: 0x20E0
# CHECK: Flags [ (0x70001007)
@@ -35,7 +35,7 @@
# CHECK: ]
# CHECK: HeaderSize: 52
# CHECK: ProgramHeaderEntrySize: 32
-# CHECK: ProgramHeaderCount: 5
+# CHECK: ProgramHeaderCount: 4
# CHECK: SectionHeaderEntrySize: 40
# CHECK: SectionHeaderCount: 12
# CHECK: StringTableSectionIndex: 9
Modified: lld/trunk/test/elf/Mips/got16.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/got16.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/got16.test (original)
+++ lld/trunk/test/elf/Mips/got16.test Wed Feb 19 17:46:13 2014
@@ -81,11 +81,11 @@
# RAW: Disassembly of section .text:
# RAW: glob:
-# RAW-NEXT: 168: 18 80 84 8f lw $4, -32744($gp)
-# RAW-NEXT: 16c: 00 20 84 24 addiu $4, $4, 8192
-# RAW-NEXT: 170: 1c 80 84 8f lw $4, -32740($gp)
-# RAW-NEXT: 174: 20 80 84 8f lw $4, -32736($gp)
-# RAW-NEXT: 178: 24 80 84 8f lw $4, -32732($gp)
+# RAW-NEXT: 148: 18 80 84 8f lw $4, -32744($gp)
+# RAW-NEXT: 14c: 00 20 84 24 addiu $4, $4, 8192
+# RAW-NEXT: 150: 1c 80 84 8f lw $4, -32740($gp)
+# RAW-NEXT: 154: 20 80 84 8f lw $4, -32736($gp)
+# RAW-NEXT: 158: 24 80 84 8f lw $4, -32732($gp)
# RAW: SYMBOL TABLE:
# RAW: 00000000 *UND* 00000000
Modified: lld/trunk/test/elf/Mips/hilo16-1.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/hilo16-1.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/hilo16-1.test (original)
+++ lld/trunk/test/elf/Mips/hilo16-1.test Wed Feb 19 17:46:13 2014
@@ -5,22 +5,22 @@
# CHECK: Disassembly of section .text:
# CHECK: glob1:
-# CHECK-NEXT: 134: 01 00 01 8c lw $1, 1($zero)
-# CHECK-NEXT: 138: 01 00 02 8c lw $2, 1($zero)
-# CHECK-NEXT: 13c: b8 8e 21 24 addiu $1, $1, -29000
+# CHECK-NEXT: 114: 01 00 01 8c lw $1, 1($zero)
+# CHECK-NEXT: 118: 01 00 02 8c lw $2, 1($zero)
+# CHECK-NEXT: 11c: d8 8e 21 24 addiu $1, $1, -28968
# CHECK: glob2:
-# CHECK-NEXT: 140: 01 00 01 8c lw $1, 1($zero)
-# CHECK-NEXT: 144: 01 00 02 8c lw $2, 1($zero)
-# CHECK-NEXT: 148: ac 8e 21 24 addiu $1, $1, -29012
+# CHECK-NEXT: 120: 01 00 01 8c lw $1, 1($zero)
+# CHECK-NEXT: 124: 01 00 02 8c lw $2, 1($zero)
+# CHECK-NEXT: 128: cc 8e 21 24 addiu $1, $1, -28980
# CHECK: Sections:
# CHECK: Idx Name Size Address Type
-# CHECK: 4 .text 00000018 0000000000000134 TEXT DATA
+# CHECK: 4 .text 00000018 0000000000000114 TEXT DATA
# CHECK: 6 .got 00000008 0000000000001000 DATA
# CHECK: SYMBOL TABLE:
-# CHECK: 00000134 g F .text 0000000c glob1
-# CHECK: 00000140 g F .text 0000000c glob2
+# CHECK: 00000114 g F .text 0000000c glob1
+# CHECK: 00000120 g F .text 0000000c glob2
# CHECK: 00001000 g *ABS* 00000000 _GLOBAL_OFFSET_TABLE_
# CHECK: 00008ff0 g *ABS* 00000000 _gp_disp
Modified: lld/trunk/test/elf/symbols.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/symbols.test?rev=201741&r1=201740&r2=201741&view=diff
==============================================================================
--- lld/trunk/test/elf/symbols.test (original)
+++ lld/trunk/test/elf/symbols.test Wed Feb 19 17:46:13 2014
@@ -28,6 +28,6 @@ CHECKSYMS: 00001004 A _end
CHECKSYMS: 00001004 A end
CHECKSHAREDSYMS: 00000000 a 1.c
-CHECKSHAREDSYMS: 0000012c T main
+CHECKSHAREDSYMS: 0000010c T main
CHECKSHAREDSYMS: 00001000 B a
CHECKSHAREDSYMS: 00001004 A _end
More information about the llvm-commits
mailing list