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