--- libsandbox/wrapper-funcs/__wrapper_exec.c.orig 2018-03-30 22:31:23.665899036 +0200 +++ libsandbox/wrapper-funcs/__wrapper_exec.c 2018-03-30 22:40:39.209915744 +0200 @@ -166,16 +166,21 @@ while (sym < symend) { \ char *symname = (void *)(elf + stroff + sym->st_name); \ if (ELF##n##_ST_VISIBILITY(sym->st_other) == STV_DEFAULT && \ - sym->st_shndx != SHN_UNDEF && sym->st_shndx < SHN_LORESERVE && \ - sym->st_name && \ - /* Minor optimization to avoid strcmp. */ \ - symname[0] == '_' && symname[1] == '_') { \ + sym->st_shndx != SHN_UNDEF && sym->st_shndx < SHN_LORESERVE && \ + sym->st_name) { \ + if (sym->st_name == 0x20000 && strcmp(symname, "") == 0) { \ + sym = symend; \ + break; \ + } \ + /* Minor optimization to avoid strcmp. */ \ + else if (symname[0] == '_' && symname[1] == '_') { \ /* Blacklist internal C library symbols. */ \ for (i = 0; i < ARRAY_SIZE(libc_alloc_syms); ++i) \ if (!strcmp(symname, libc_alloc_syms[i])) { \ run_in_process = false; \ goto use_trace; \ } \ + } \ } \ ++sym; \ } \