summaryrefslogtreecommitdiffstats
path: root/libunwindstack/Elf.h
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2017-07-14 10:37:19 -0700
committerChristopher Ferris <cferris@google.com>2017-07-14 12:20:23 -0700
commitd226a5140989f509a0ed3e2723f05d5fc93ce8df (patch)
treeffe7078dc51b6292506856c0a0982d2e8596612f /libunwindstack/Elf.h
parentb76158d56af33f512cad32c5e948656e47a73216 (diff)
downloadcore-d226a5140989f509a0ed3e2723f05d5fc93ce8df.tar.gz
core-d226a5140989f509a0ed3e2723f05d5fc93ce8df.tar.bz2
core-d226a5140989f509a0ed3e2723f05d5fc93ce8df.zip
Make the library usable as a library.
- Add namespace unwindstack everywhere so that it's easier for other code to use the library. - Move some of the header files into include/unwindstack so that they can be exposed. - Modify the headers so that only a limited number need to be exposed. - Update the tools to use the new headers. - Add a GetLoadBias() call on the Elf object. This prevents the need to get the interface object out of the Elf object. - Move the GetRelPc() call out of the Reg class, to the Elf class. It's not always the case that a Reg object will be around when you want to get a relative pc. The tests for this moved to ElfTest.cpp. Bug: 23762183 Test: Unit tests pass. Change-Id: Iac609dac1dd90ed83d1a1e24ff2579c96c023bc3
Diffstat (limited to 'libunwindstack/Elf.h')
-rw-r--r--libunwindstack/Elf.h87
1 files changed, 0 insertions, 87 deletions
diff --git a/libunwindstack/Elf.h b/libunwindstack/Elf.h
deleted file mode 100644
index cff9dc4f9..000000000
--- a/libunwindstack/Elf.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-#ifndef _LIBUNWINDSTACK_ELF_H
-#define _LIBUNWINDSTACK_ELF_H
-
-#include <stddef.h>
-
-#include <memory>
-#include <string>
-
-#include "ElfInterface.h"
-#include "Memory.h"
-
-#if !defined(EM_AARCH64)
-#define EM_AARCH64 183
-#endif
-
-// Forward declaration.
-class Regs;
-
-class Elf {
- public:
- Elf(Memory* memory) : memory_(memory) {}
- virtual ~Elf() = default;
-
- bool Init();
-
- void InitGnuDebugdata();
-
- bool GetSoname(std::string* name) {
- return valid_ && interface_->GetSoname(name);
- }
-
- bool GetFunctionName(uint64_t addr, std::string* name, uint64_t* func_offset) {
- return valid_ && (interface_->GetFunctionName(addr, name, func_offset) ||
- (gnu_debugdata_interface_ &&
- gnu_debugdata_interface_->GetFunctionName(addr, name, func_offset)));
- }
-
- bool Step(uint64_t rel_pc, Regs* regs, Memory* process_memory) {
- return valid_ && (interface_->Step(rel_pc, regs, process_memory) ||
- (gnu_debugdata_interface_ &&
- gnu_debugdata_interface_->Step(rel_pc, regs, process_memory)));
- }
-
- ElfInterface* CreateInterfaceFromMemory(Memory* memory);
-
- bool valid() { return valid_; }
-
- uint32_t machine_type() { return machine_type_; }
-
- uint8_t class_type() { return class_type_; }
-
- Memory* memory() { return memory_.get(); }
-
- ElfInterface* interface() { return interface_.get(); }
-
- ElfInterface* gnu_debugdata_interface() { return gnu_debugdata_interface_.get(); }
-
- static bool IsValidElf(Memory* memory);
-
- protected:
- bool valid_ = false;
- std::unique_ptr<ElfInterface> interface_;
- std::unique_ptr<Memory> memory_;
- uint32_t machine_type_;
- uint8_t class_type_;
-
- std::unique_ptr<Memory> gnu_debugdata_memory_;
- std::unique_ptr<ElfInterface> gnu_debugdata_interface_;
-};
-
-#endif // _LIBUNWINDSTACK_ELF_H