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