| 143 | std::string name; |
| 144 | |
| 145 | void dump(std::ostream& sstr) const { |
| 146 | sstr << "section: " << name; |
| 147 | sstr << ", offset: " << header_ptr->offset; |
| 148 | sstr << ", size: " << header_ptr->size; |
| 149 | sstr << ", address: " << header_ptr->address; |
| 150 | if (header_ptr->alignment > 0) { |
| 151 | sstr << ", align: " << header_ptr->alignment; |
| 152 | } |
| 153 | sstr << ", 0x" << std::hex << std::uppercase << (uint64_t)header_ptr->flags << std::nouppercase << std::dec; |
| 154 | if (has_flag<ELF_SECTION_FLAG::ALLOCATE>(header_ptr->flags)) { |
| 155 | sstr << " alloc"; |
| 156 | } |
| 157 | if (has_flag<ELF_SECTION_FLAG::WRITE>(header_ptr->flags)) { |
| 158 | sstr << " w"; |
| 159 | } |
| 160 | if (has_flag<ELF_SECTION_FLAG::EXECUTABLE>(header_ptr->flags)) { |
| 161 | sstr << " x"; |
| 162 | } |
| 163 | if (has_flag<ELF_SECTION_FLAG::MERGABLE>(header_ptr->flags)) { |
| 164 | sstr << " mrg"; |
| 165 | } |
| 166 | if (has_flag<ELF_SECTION_FLAG::GROUP>(header_ptr->flags)) { |
| 167 | sstr << " grp"; |
| 168 | } |
| 169 | if (has_flag<ELF_SECTION_FLAG::TLS>(header_ptr->flags)) { |
| 170 | sstr << " tls"; |
| 171 | } |
| 172 | sstr << "\n"; |
| 173 | } |
| 174 | }; |
| 175 | |
| 176 | enum class ELF_SYMBOL_TYPE : uint8_t { |
nothing calls this directly
no outgoing calls
no test coverage detected