[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