1b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines/* 2b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * Copyright 2011, The Android Open Source Project 3b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * 4b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 5b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * you may not use this file except in compliance with the License. 6b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * You may obtain a copy of the License at 7b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * 8b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * http://www.apache.org/licenses/LICENSE-2.0 9b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * 10b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * Unless required by applicable law or agreed to in writing, software 11b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 12b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * See the License for the specific language governing permissions and 14b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines * limitations under the License. 15b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines */ 16b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 17b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#include "ELFSymbol.h" 18b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#include "ELF.h" 19b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 20b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hineschar const * 21b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen HinesELFSymbolHelperMixin::getTypeStr(uint8_t type) { 22b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines switch (type) { 23b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines default: return "(UNKNOWN)"; 24b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 25b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#define CASE(TYPE) \ 26b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines case STT_##TYPE: return #TYPE; 27b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 28b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(NOTYPE) 29b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(OBJECT) 30b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(FUNC) 31b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(SECTION) 32b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(FILE) 33b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(COMMON) 34b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(TLS) 35b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(LOOS) 36b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(HIOS) 37b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(LOPROC) 38b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(HIPROC) 39b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 40b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#undef CASE 41b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines } 42b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines} 43b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 44b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hineschar const * 45b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen HinesELFSymbolHelperMixin::getBindingAttributeStr(uint8_t type) { 46b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines switch (type) { 47b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines default: return "(UNKNOWN)"; 48b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 49b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#define CASE(TYPE) \ 50b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines case STB_##TYPE: return #TYPE; 51b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 52b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(LOCAL) 53b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(GLOBAL) 54b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(WEAK) 55b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(LOOS) 56b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(HIOS) 57b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(LOPROC) 58b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(HIPROC) 59b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 60b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#undef CASE 61b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines } 62b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines} 63b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hineschar const * 64b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen HinesELFSymbolHelperMixin::getVisibilityStr(uint8_t type) { 65b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines switch (type) { 66b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines default: return "(UNKNOWN)"; 67b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 68b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#define CASE(TYPE) \ 69b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines case STV_##TYPE: return #TYPE; 70b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 71b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(DEFAULT) 72b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(INTERNAL) 73b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(HIDDEN) 74b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines CASE(PROTECTED) 75b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines 76b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines#undef CASE 77b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines } 78b53c8a59e6f21ed36a0c3d9d4ce5834d4cc3c298Stephen Hines} 79