diff options
author | Chris Lattner <sabre@nondot.org> | 2009-08-02 00:34:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-08-02 00:34:36 +0000 |
commit | 80ec2792b2b271eca55743a3cc4c8bca214fa705 (patch) | |
tree | 6315c4827b431ed704a0a998ebe2ebb076a45d94 /lib/Target/ARM/ARMTargetObjectFile.h | |
parent | f9f1adbcbbf2420c7acf13946c1877473d650294 (diff) | |
download | llvm-80ec2792b2b271eca55743a3cc4c8bca214fa705.tar.gz llvm-80ec2792b2b271eca55743a3cc4c8bca214fa705.tar.bz2 llvm-80ec2792b2b271eca55743a3cc4c8bca214fa705.tar.xz |
convert ctors/dtors section to be in TLOF instead of
TAI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77842 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMTargetObjectFile.h')
-rw-r--r-- | lib/Target/ARM/ARMTargetObjectFile.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMTargetObjectFile.h b/lib/Target/ARM/ARMTargetObjectFile.h new file mode 100644 index 0000000000..604dd83bc8 --- /dev/null +++ b/lib/Target/ARM/ARMTargetObjectFile.h @@ -0,0 +1,38 @@ +//===-- llvm/Target/ARMTargetObjectFile.h - ARM Object Info -----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TARGET_ARM_TARGETOBJECTFILE_H +#define LLVM_TARGET_ARM_TARGETOBJECTFILE_H + +#include "llvm/Target/TargetLoweringObjectFile.h" + +namespace llvm { + + class ARMElfTargetObjectFile : public TargetLoweringObjectFileELF { + public: + ARMElfTargetObjectFile() : TargetLoweringObjectFileELF(true) {} + + void Initialize(MCContext &Ctx, const TargetMachine &TM) { + TargetLoweringObjectFileELF::Initialize(Ctx, TM); + + // FIXME: Add new attribute/flag to MCSection for init_array/fini_array. + // That will allow not treating these as "directives". + if (TM.getSubtarget<ARMSubtarget>().isAAPCS_ABI()) { + StaticCtorSection = + getOrCreateSection("\t.section .init_array,\"aw\",%init_array", false, + SectionKind::getDataRel()); + StaticDtorSection = + getOrCreateSection("\t.section .fini_array,\"aw\",%fini_array", false, + SectionKind::getDataRel()); + } + } + }; +} // end namespace llvm + +#endif |