From 98bc25a0f2bf169ef13f4dfc8ad3cc863731a8e7 Mon Sep 17 00:00:00 2001 From: Mandeep Singh Grang Date: Sat, 24 Mar 2018 18:37:19 +0000 Subject: [RISCV] Use init_array instead of ctors for RISCV target, by default Summary: LLVM defaults to the newer .init_array/.fini_array scheme for static constructors rather than the less desirable .ctors/.dtors (the UseCtors flag defaults to false). This wasn't being respected in the RISC-V backend because it fails to call TargetLoweringObjectFileELF::InitializeELF with the the appropriate flag for UseInitArray. This patch fixes this by implementing RISCVELFTargetObjectFile and overriding its Initialize method to call InitializeELF(TM.Options.UseInitArray). Reviewers: asb, apazos Reviewed By: asb Subscribers: mgorny, rbar, johnrusso, simoncook, jordy.potman.lists, sabuasal, niosHD, kito-cheng, shiva0217, llvm-commits Differential Revision: https://reviews.llvm.org/D44750 llvm-svn: 328433 --- llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp (limited to 'llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp') diff --git a/llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp b/llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp new file mode 100644 index 00000000000..46e81b628b6 --- /dev/null +++ b/llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp @@ -0,0 +1,19 @@ +//===-- RISCVTargetObjectFile.cpp - RISCV Object Info -----------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "RISCVTargetObjectFile.h" +#include "RISCVTargetMachine.h" + +using namespace llvm; + +void RISCVELFTargetObjectFile::Initialize(MCContext &Ctx, + const TargetMachine &TM) { + TargetLoweringObjectFileELF::Initialize(Ctx, TM); + InitializeELF(TM.Options.UseInitArray); +} -- cgit v1.2.3