summaryrefslogtreecommitdiff
path: root/linker/linker_soinfo.cpp
diff options
context:
space:
mode:
authorEvgenii Stepanov <eugenis@google.com>2020-06-08 16:21:35 -0700
committerEvgenii Stepanov <eugenis@google.com>2020-06-17 17:28:28 -0700
commita8cf3fef2aa2201014c35c3487da222ccfedfc1c (patch)
tree476df9275aa1402085207d231162a49867240378 /linker/linker_soinfo.cpp
parentad4b47c4290d6291e4280707688ce54c9bf9b72c (diff)
Add randomized padding around shared library mappings.
Improve ASLR by increasing the randomly sized gaps between shared library mappings, and keep them mapped PROT_NONE. Bug: 158113540 Test: look at /proc/$$/maps Change-Id: Ie72c84047fb624fe2ac8b7744b2a2d0d255ea974
Diffstat (limited to 'linker/linker_soinfo.cpp')
-rw-r--r--linker/linker_soinfo.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/linker/linker_soinfo.cpp b/linker/linker_soinfo.cpp
index 4f67003b8..088c17dfc 100644
--- a/linker/linker_soinfo.cpp
+++ b/linker/linker_soinfo.cpp
@@ -900,6 +900,24 @@ void soinfo::generate_handle() {
g_soinfo_handles_map[handle_] = this;
}
+void soinfo::set_map_start(ElfW(Addr) map_start) {
+ CHECK(has_min_version(6));
+ map_start_ = map_start;
+}
+ElfW(Addr) soinfo::get_map_start() const {
+ CHECK(has_min_version(6));
+ return map_start_;
+}
+
+void soinfo::set_map_size(size_t map_size) {
+ CHECK(has_min_version(6));
+ map_size_ = map_size;
+}
+size_t soinfo::get_map_size() const {
+ CHECK(has_min_version(6));
+ return map_size_;
+}
+
// TODO(dimitry): Move SymbolName methods to a separate file.
uint32_t calculate_elf_hash(const char* name) {