[PATCH] [lld][ELF] Change MaxAlignment to 2

Shankar Kalpathi Easwaran shankarke at gmail.com
Wed Oct 9 11:11:08 PDT 2013


Hi Bigcheese,

We would want to make sure the target handlers use the same alignment as how they are read. 

Setting the MaxAlignment to 2, makes it safe.

http://llvm-reviews.chandlerc.com/D1871

Files:
  lib/ReaderWriter/ELF/Hexagon/HexagonExecutableAtoms.h
  lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
  lib/ReaderWriter/ELF/Hexagon/HexagonSectionChunks.h
  lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
  lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
  lib/ReaderWriter/ELF/X86/X86TargetHandler.h
  lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h
  lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
  test/elf/Hexagon/Inputs/libMaxAlignment.a
  test/elf/Hexagon/maxalignment.test

Index: lib/ReaderWriter/ELF/Hexagon/HexagonExecutableAtoms.h
===================================================================
--- lib/ReaderWriter/ELF/Hexagon/HexagonExecutableAtoms.h
+++ lib/ReaderWriter/ELF/Hexagon/HexagonExecutableAtoms.h
@@ -14,7 +14,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 4, false> HexagonELFType;
+typedef llvm::object::ELFType<llvm::support::little, 2, false> HexagonELFType;
 class HexagonLinkingContext;
 
 template <class HexagonELFType> class HexagonRuntimeFile
Index: lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
===================================================================
--- lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
+++ lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.h
@@ -15,7 +15,6 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 4, false> HexagonELFType;
 
 class HexagonLinkingContext;
 class HexagonTargetHandler;
Index: lib/ReaderWriter/ELF/Hexagon/HexagonSectionChunks.h
===================================================================
--- lib/ReaderWriter/ELF/Hexagon/HexagonSectionChunks.h
+++ lib/ReaderWriter/ELF/Hexagon/HexagonSectionChunks.h
@@ -13,7 +13,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 4, false> HexagonELFType;
+typedef llvm::object::ELFType<llvm::support::little, 2, false> HexagonELFType;
 template <typename ELFT> class HexagonTargetLayout;
 class HexagonLinkingContext;
 
Index: lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
===================================================================
--- lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
+++ lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
@@ -18,7 +18,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 4, false> HexagonELFType;
+typedef llvm::object::ELFType<llvm::support::little, 2, false> HexagonELFType;
 class HexagonLinkingContext;
 
 /// \brief Handle Hexagon specific Atoms
Index: lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
===================================================================
--- lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
+++ lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
@@ -15,7 +15,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::big, 4, false> PPCELFType;
+typedef llvm::object::ELFType<llvm::support::big, 2, false> PPCELFType;
 class PPCLinkingContext;
 
 class PPCTargetRelocationHandler LLVM_FINAL
Index: lib/ReaderWriter/ELF/X86/X86TargetHandler.h
===================================================================
--- lib/ReaderWriter/ELF/X86/X86TargetHandler.h
+++ lib/ReaderWriter/ELF/X86/X86TargetHandler.h
@@ -15,7 +15,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 4, false> X86ELFType;
+typedef llvm::object::ELFType<llvm::support::little, 2, false> X86ELFType;
 class X86LinkingContext;
 
 class X86TargetRelocationHandler LLVM_FINAL
Index: lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h
===================================================================
--- lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h
+++ lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h
@@ -15,7 +15,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 8, true> X86_64ELFType;
+typedef llvm::object::ELFType<llvm::support::little, 2, true> X86_64ELFType;
 class X86_64LinkingContext;
 
 class X86_64TargetRelocationHandler LLVM_FINAL
Index: lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
===================================================================
--- lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
+++ lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
@@ -19,7 +19,7 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 8, true> X86_64ELFType;
+typedef llvm::object::ELFType<llvm::support::little, 2, true> X86_64ELFType;
 class X86_64LinkingContext;
 
 class X86_64TargetHandler LLVM_FINAL
Index: test/elf/Hexagon/maxalignment.test
===================================================================
--- /dev/null
+++ test/elf/Hexagon/maxalignment.test
@@ -0,0 +1,8 @@
+# This tests that we lld is able to get the contentType properly for archives
+# when they intermittently get loaded at an address whose alignment is 2
+
+RUN: lld -flavor gnu -target hexagon --whole-archive %p/Inputs/libMaxAlignment.a \
+RUN: --noinhibit-exec -static -o %t
+RUN: llvm-nm %t | FileCheck %s
+
+CHECK: {{[0-9a-f]+}} D a
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1871.1.patch
Type: text/x-patch
Size: 4603 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131009/d17e6770/attachment.bin>


More information about the llvm-commits mailing list