diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2021-11-01 14:52:55 +0100 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2021-11-01 17:54:02 +0000 |
commit | c1976e57ce869d6d2a273ecbbe4fc071e53a181e (patch) | |
tree | 1df8a9bbfc358996841c011c26d897310fde8513 | |
parent | 1056fc4cf36a99f9ca2bf0857d9291e8d33d95ad (diff) | |
download | procd-c1976e57ce869d6d2a273ecbbe4fc071e53a181e.tar.gz |
jail: elf: Remove MIPS 64 warning
Revert commit 33b799b ("ujail: elf: work around GCC bug on MIPS64")
The procd jails are working fine on MIPS64 too now.
I saw this error message when add_path_and_deps() was called which calls
elf_load_deps() again under some conditions. This is happening because
gcc_mips64_bug_work_around is stored in the data segment.
We have a call trace like this:
elf_load_deps()
gcc_mips64_bug_work_around = 1;
call add_path_and_deps()
call elf_load_deps()
gcc_mips64_bug_work_around = 1;
error if gcc_mips64_bug_work_around =! 1
gcc_mips64_bug_work_around = 0;
return;
return;
error if gcc_mips64_bug_work_around =! 1
return;
I got the same error messages on MIPS 32 BE, when I removed the compile
check.
This was tested in qemu on MIPS 64 BE and MIPS64 LE.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r-- | jail/elf.c | 12 |
1 files changed, 0 insertions, 12 deletions
@@ -235,11 +235,7 @@ int elf_load_deps(const char *path, const char *map) unsigned long dyn_offset, dyn_size; unsigned long load_offset, load_vaddr; unsigned long interp_offset; -#if defined(__mips__) && (__mips == 64) - static int gcc_mips64_bug_work_around; - gcc_mips64_bug_work_around = 1; -#endif if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) { ERROR("failed to load the .load section from %s\n", path); return -1; @@ -256,14 +252,6 @@ int elf_load_deps(const char *path, const char *map) int clazz = map[EI_CLASS]; -#if defined(__mips__) && (__mips == 64) - if (gcc_mips64_bug_work_around != 1) { - ERROR("compiler bug: GCC for MIPS64 should be fixed!\n"); - return -1; - } - gcc_mips64_bug_work_around = 0; -#endif - if (clazz == ELFCLASS32) return elf32_scan_dynamic(map, dyn_offset, dyn_size, load_vaddr - load_offset); else if (clazz == ELFCLASS64) |