1f22ef01cSRoman Divacky //===-- llvm/CodeGen/MachineModuleInfoImpls.cpp ---------------------------===// 2f22ef01cSRoman Divacky // 3f22ef01cSRoman Divacky // The LLVM Compiler Infrastructure 4f22ef01cSRoman Divacky // 5f22ef01cSRoman Divacky // This file is distributed under the University of Illinois Open Source 6f22ef01cSRoman Divacky // License. See LICENSE.TXT for details. 7f22ef01cSRoman Divacky // 8f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 9f22ef01cSRoman Divacky // 10f22ef01cSRoman Divacky // This file implements object-file format specific implementations of 11f22ef01cSRoman Divacky // MachineModuleInfoImpl. 12f22ef01cSRoman Divacky // 13f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 14f22ef01cSRoman Divacky 15f22ef01cSRoman Divacky #include "llvm/CodeGen/MachineModuleInfoImpls.h" 16f22ef01cSRoman Divacky #include "llvm/MC/MCSymbol.h" 17f22ef01cSRoman Divacky using namespace llvm; 18f22ef01cSRoman Divacky 19f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 20f22ef01cSRoman Divacky // MachineModuleInfoMachO 21f22ef01cSRoman Divacky //===----------------------------------------------------------------------===// 22f22ef01cSRoman Divacky 23f22ef01cSRoman Divacky // Out of line virtual method. 24f22ef01cSRoman Divacky void MachineModuleInfoMachO::Anchor() {} 25f22ef01cSRoman Divacky void MachineModuleInfoELF::Anchor() {} 26f22ef01cSRoman Divacky 27f22ef01cSRoman Divacky static int SortSymbolPair(const void *LHS, const void *RHS) { 28f22ef01cSRoman Divacky typedef std::pair<MCSymbol*, MachineModuleInfoImpl::StubValueTy> PairTy; 29f22ef01cSRoman Divacky const MCSymbol *LHSS = ((const PairTy *)LHS)->first; 30f22ef01cSRoman Divacky const MCSymbol *RHSS = ((const PairTy *)RHS)->first; 31f22ef01cSRoman Divacky return LHSS->getName().compare(RHSS->getName()); 32f22ef01cSRoman Divacky } 33f22ef01cSRoman Divacky 34f22ef01cSRoman Divacky /// GetSortedStubs - Return the entries from a DenseMap in a deterministic 35f22ef01cSRoman Divacky /// sorted orer. 36f22ef01cSRoman Divacky MachineModuleInfoImpl::SymbolListTy 37f22ef01cSRoman Divacky MachineModuleInfoImpl::GetSortedStubs(const DenseMap<MCSymbol*, 38f22ef01cSRoman Divacky MachineModuleInfoImpl::StubValueTy>&Map) { 39f22ef01cSRoman Divacky MachineModuleInfoImpl::SymbolListTy List(Map.begin(), Map.end()); 40f22ef01cSRoman Divacky 41f22ef01cSRoman Divacky if (!List.empty()) 42f22ef01cSRoman Divacky qsort(&List[0], List.size(), sizeof(List[0]), SortSymbolPair); 43f22ef01cSRoman Divacky return List; 44f22ef01cSRoman Divacky } 45f22ef01cSRoman Divacky 46