[PATCH] Make NaCl's use of .init_array for static constructors match Linux
Derek Schuff
dschuff at google.com
Wed Mar 11 09:18:37 PDT 2015
REPOSITORY
rL LLVM
http://reviews.llvm.org/D8240
Files:
llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
llvm/trunk/lib/Target/X86/X86TargetObjectFile.cpp
llvm/trunk/lib/Target/X86/X86TargetObjectFile.h
llvm/trunk/test/CodeGen/X86/constructor.ll
Index: llvm/trunk/lib/Target/X86/X86TargetObjectFile.cpp
===================================================================
--- llvm/trunk/lib/Target/X86/X86TargetObjectFile.cpp
+++ llvm/trunk/lib/Target/X86/X86TargetObjectFile.cpp
@@ -66,7 +66,8 @@
}
void
-X86LinuxTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM) {
+X86LinuxNaClTargetObjectFile::Initialize(MCContext &Ctx,
+ const TargetMachine &TM) {
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
InitializeELF(TM.Options.UseInitArray);
}
Index: llvm/trunk/lib/Target/X86/X86TargetObjectFile.h
===================================================================
--- llvm/trunk/lib/Target/X86/X86TargetObjectFile.h
+++ llvm/trunk/lib/Target/X86/X86TargetObjectFile.h
@@ -44,9 +44,9 @@
const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;
};
- /// X86LinuxTargetObjectFile - This implementation is used for linux x86
- /// and x86-64.
- class X86LinuxTargetObjectFile : public X86ELFTargetObjectFile {
+ /// X86LinuxNaClTargetObjectFile - This implementation is used for linux and
+ /// Native Client on x86 and x86-64.
+ class X86LinuxNaClTargetObjectFile : public X86ELFTargetObjectFile {
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
};
Index: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
===================================================================
--- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
+++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
@@ -37,8 +37,8 @@
return make_unique<TargetLoweringObjectFileMachO>();
}
- if (TT.isOSLinux())
- return make_unique<X86LinuxTargetObjectFile>();
+ if (TT.isOSLinux() || TT.isOSNaCl())
+ return make_unique<X86LinuxNaClTargetObjectFile>();
if (TT.isOSBinFormatELF())
return make_unique<X86ELFTargetObjectFile>();
if (TT.isKnownWindowsMSVCEnvironment())
Index: llvm/trunk/test/CodeGen/X86/constructor.ll
===================================================================
--- llvm/trunk/test/CodeGen/X86/constructor.ll
+++ llvm/trunk/test/CodeGen/X86/constructor.ll
@@ -1,5 +1,6 @@
; RUN: llc -mtriple x86_64-pc-linux -use-ctors < %s | FileCheck --check-prefix=CTOR %s
; RUN: llc -mtriple x86_64-pc-linux < %s | FileCheck --check-prefix=INIT-ARRAY %s
+; RUN: llc -mtriple x86_64-unknown-nacl < %s | FileCheck --check-prefix=NACL %s
@llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @f, i8* null}, { i32, void ()*, i8* } { i32 15, void ()* @g, i8* @v }]
@v = weak_odr global i8 0
@@ -27,3 +28,10 @@
; INIT-ARRAY-NEXT: .section .init_array,"aw", at init_array
; INIT-ARRAY-NEXT: .align 8
; INIT-ARRAY-NEXT: .quad f
+
+; NACL: .section .init_array.15,"aGw", at init_array,v,comdat
+; NACL-NEXT: .align 4
+; NACL-NEXT: .long g
+; NACL-NEXT: .section .init_array,"aw", at init_array
+; NACL-NEXT: .align 4
+; NACL-NEXT: .long f
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D8240.21735.patch
Type: text/x-patch
Size: 2976 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150311/365d5380/attachment.bin>
More information about the llvm-commits
mailing list