/* * Copyright 2011, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ELFSectionHeader.h" #include "ELF.h" // ARM Section Header Type Definitions // TODO: These definitions are not defined in external/elfutils/libelf/ // elf.h. So we to this by ourself. Maybe we should update elf.h // instead. #ifndef SHT_ARM_EXIDX #define SHT_ARM_EXIDX (SHT_LOPROC + 1) #endif #ifndef SHT_ARM_PREEMPTMAP #define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) #endif #ifndef SHT_ARM_ATTRIBUTES #define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) #endif char const *ELFSectionHeaderHelperMixin::getSectionTypeStr(uint32_t type) { switch (type) { default: return "(UNKNOWN)"; #define CASE(TYPE) \ case SHT_##TYPE: return #TYPE; // General section header type CASE(NULL) CASE(PROGBITS) CASE(SYMTAB) CASE(STRTAB) CASE(RELA) CASE(HASH) CASE(DYNAMIC) CASE(NOTE) CASE(NOBITS) CASE(REL) CASE(SHLIB) CASE(DYNSYM) CASE(INIT_ARRAY) CASE(FINI_ARRAY) CASE(PREINIT_ARRAY) CASE(GROUP) CASE(SYMTAB_SHNDX) CASE(LOOS) CASE(HIOS) CASE(LOPROC) CASE(HIPROC) CASE(LOUSER) CASE(HIUSER) // ARM-specific section header type CASE(ARM_EXIDX) CASE(ARM_PREEMPTMAP) CASE(ARM_ATTRIBUTES) #undef CASE } }