Less error messages

Decrease the overall size of the binary, programming errors are caught
with unreachable.
master
LemonBoy 2019-05-07 13:08:19 +02:00
parent 2f041239cb
commit b1db696c10
1 changed files with 23 additions and 26 deletions

View File

@ -128,36 +128,33 @@ pub fn initTLS() void {
var tls_phdr: ?*elf.Phdr = null;
var img_base: usize = 0;
if (std.os.linux_elf_aux_maybe) |auxv| {
var at_phent: usize = undefined;
var at_phnum: usize = undefined;
var at_phdr: usize = undefined;
const auxv = std.os.linux_elf_aux_maybe.?;
var at_phent: usize = undefined;
var at_phnum: usize = undefined;
var at_phdr: usize = undefined;
var i: usize = 0;
while (auxv[i].a_type != std.elf.AT_NULL) : (i += 1) {
switch (auxv[i].a_type) {
elf.AT_PHENT => at_phent = auxv[i].a_un.a_val,
elf.AT_PHNUM => at_phnum = auxv[i].a_un.a_val,
elf.AT_PHDR => at_phdr = auxv[i].a_un.a_val,
else => continue,
}
var i: usize = 0;
while (auxv[i].a_type != std.elf.AT_NULL) : (i += 1) {
switch (auxv[i].a_type) {
elf.AT_PHENT => at_phent = auxv[i].a_un.a_val,
elf.AT_PHNUM => at_phnum = auxv[i].a_un.a_val,
elf.AT_PHDR => at_phdr = auxv[i].a_un.a_val,
else => continue,
}
}
// Sanity check
assert(at_phent == @sizeOf(elf.Phdr));
// Sanity check
assert(at_phent == @sizeOf(elf.Phdr));
// Search the TLS section
const phdrs = (@intToPtr([*]elf.Phdr, at_phdr))[0..at_phnum];
// Search the TLS section
const phdrs = (@intToPtr([*]elf.Phdr, at_phdr))[0..at_phnum];
for (phdrs) |*phdr| {
switch (phdr.p_type) {
elf.PT_PHDR => img_base = at_phdr - phdr.p_vaddr,
elf.PT_TLS => tls_phdr = phdr,
else => continue,
}
for (phdrs) |*phdr| {
switch (phdr.p_type) {
elf.PT_PHDR => img_base = at_phdr - phdr.p_vaddr,
elf.PT_TLS => tls_phdr = phdr,
else => continue,
}
} else {
@panic("no auxv vector available!");
}
if (tls_phdr) |phdr| {
@ -212,7 +209,7 @@ pub fn initTLS() void {
}
pub fn copyTLS(addr: usize) usize {
const tls_img = tls_image orelse @panic("copyTLS called with no TLS section!");
const tls_img = tls_image.?;
// Be paranoid, clear the area we're going to use
@memset(@intToPtr([*]u8, addr), 0, tls_img.alloc_size);
@ -245,7 +242,7 @@ pub fn allocateTLS(size: usize) usize {
const addr = posix.mmap(null, size, posix.PROT_READ | posix.PROT_WRITE,
posix.MAP_PRIVATE | posix.MAP_ANONYMOUS, -1, 0);
if (posix.getErrno(addr) != 0) @panic("allocateTLS failed to allocate memory");
if (posix.getErrno(addr) != 0) @panic("out of memory");
return addr;
}