aboutsummaryrefslogtreecommitdiff
path: root/lib/std/process.zig
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2020-11-23 12:00:12 +0100
committerLemonBoy <thatlemon@gmail.com>2020-11-23 12:00:12 +0100
commit560043dadfa8bf3a6c15d7f09bfbc60e48e0084c (patch)
tree035eaee95973b7387dd56b4ef6226d5f6d983dbf /lib/std/process.zig
parentc7170e4a5480581db5f30913eebd9ad4f7cd121e (diff)
downloadzig-560043dadfa8bf3a6c15d7f09bfbc60e48e0084c.tar.gz
zig-560043dadfa8bf3a6c15d7f09bfbc60e48e0084c.zip
Fix logic for detecting _DYNAMIC symbol
Prevent spurious crashes for non-PIE executables.
Diffstat (limited to 'lib/std/process.zig')
-rw-r--r--lib/std/process.zig2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/std/process.zig b/lib/std/process.zig
index b083126b31..5fc262e8b0 100644
--- a/lib/std/process.zig
+++ b/lib/std/process.zig
@@ -686,6 +686,8 @@ pub fn getBaseAddress() usize {
if (base != 0) {
return base;
}
+ // XXX: Wrong for PIE executables, it should look at the difference
+ // between _DYNAMIC and the PT_DYNAMIC phdr instead.
const phdr = os.system.getauxval(std.elf.AT_PHDR);
return phdr - @sizeOf(std.elf.Ehdr);
},