diff options
author | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-03-05 17:59:58 +0000 |
---|---|---|
committer | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-03-05 17:59:58 +0000 |
commit | f10769dda7cd35ad257bfeedbcd4e8d13243133f (patch) | |
tree | fab9b7500bb7bd7c8697f38efd8212139f431f0d /llvm/lib | |
parent | 9bf52a72d129efea94748368ab6ae5fe41c2af0f (diff) | |
download | bcm5719-llvm-f10769dda7cd35ad257bfeedbcd4e8d13243133f.tar.gz bcm5719-llvm-f10769dda7cd35ad257bfeedbcd4e8d13243133f.zip |
Use init_array/fini_array sections for static contructors/destructors when the ABI is AAPCS.
Fix SingleSource/Regression/C/ConstructorDestructorAttributes test on arm-linux-gnueabi.
llvm-svn: 34931
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/ARM/ARMTargetAsmInfo.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMTargetAsmInfo.cpp b/llvm/lib/Target/ARM/ARMTargetAsmInfo.cpp index b4948c5b5b5..ff6de2eee40 100644 --- a/llvm/lib/Target/ARM/ARMTargetAsmInfo.cpp +++ b/llvm/lib/Target/ARM/ARMTargetAsmInfo.cpp @@ -58,8 +58,13 @@ ARMTargetAsmInfo::ARMTargetAsmInfo(const ARMTargetMachine &TM) { } else { PrivateGlobalPrefix = ".L"; WeakRefDirective = "\t.weak\t"; - StaticCtorsSection = "\t.section .ctors,\"aw\",%progbits"; - StaticDtorsSection = "\t.section .dtors,\"aw\",%progbits"; + if (Subtarget->isAAPCS_ABI()) { + StaticCtorsSection = "\t.section .init_array,\"aw\",%init_array"; + StaticDtorsSection = "\t.section .fini_array,\"aw\",%fini_array"; + } else { + StaticCtorsSection = "\t.section .ctors,\"aw\",%progbits"; + StaticDtorsSection = "\t.section .dtors,\"aw\",%progbits"; + } } ZeroDirective = "\t.space\t"; |