109ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao/* 209ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * Copyright 2013, The Android Open Source Project 309ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * 409ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License"); 509ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * you may not use this file except in compliance with the License. 609ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * You may obtain a copy of the License at 709ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * 809ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * http://www.apache.org/licenses/LICENSE-2.0 909ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * 1009ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * Unless required by applicable law or agreed to in writing, software 1109ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS, 1209ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1309ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * See the License for the specific language governing permissions and 1409ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao * limitations under the License. 1509ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao */ 1609ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 1709ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao#ifndef BCC_EXECUTION_ENGINE_COMPILER_RT_SYMBOL_RESOLVERS_H 1809ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao#define BCC_EXECUTION_ENGINE_COMPILER_RT_SYMBOL_RESOLVERS_H 1909ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 2009ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao#include "bcc/ExecutionEngine/SymbolResolvers.h" 2109ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 2209ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liaonamespace bcc { 2309ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 2409ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liaoclass CompilerRTSymbolResolver : public DyldSymbolResolver { 2509ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liaopublic: 2609ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao CompilerRTSymbolResolver() : 2709ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao DyldSymbolResolver("/system/lib/libcompiler_rt.so") { } 2809ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 2909ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao virtual void *getAddress(const char *pName) { 303ab9da1e1b3d7794994393af086d096397fb84dbStephen Hines // Compiler runtime functions are always prefixed by "__" 313ab9da1e1b3d7794994393af086d096397fb84dbStephen Hines if (pName && (pName[0] == '_') && (pName[1] == '_')) { 3209ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao return DyldSymbolResolver::getAddress(pName); 3309ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao } else { 3409ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao return NULL; 3509ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao } 3609ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao } 3709ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao}; 3809ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 3909ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao} // end namespace bcc 4009ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao 4109ca95426a7ec66def02e47048bb25289759c6fbShih-wei Liao#endif // BCC_EXECUTION_ENGINE_COMPILER_RT_SYMBOL_RESOLVERS_H 42