diff --git a/headers/private/system/elf_common.h b/headers/private/system/elf_common.h index 194d1ca427..3e65305563 100644 --- a/headers/private/system/elf_common.h +++ b/headers/private/system/elf_common.h @@ -132,19 +132,21 @@ /*** program header ***/ // program header segment types -#define PT_NULL 0 -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_TLS 7 -#define PT_STACK 0x6474e551 -#define PT_RELRO 0x6474e552 +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_STACK 0x6474e551 +#define PT_RELRO 0x6474e552 + +#define PT_LOPROC 0x70000000 +#define PT_ARM_UNWIND 0x70000001 +#define PT_HIPROC 0x7fffffff -#define PT_LOPROC 0x70000000 -#define PT_HIPROC 0x7fffffff // program header segment flags #define PF_EXECUTE 0x1 diff --git a/src/system/boot/loader/elf.cpp b/src/system/boot/loader/elf.cpp index 7479463de3..ef0609730e 100644 --- a/src/system/boot/loader/elf.cpp +++ b/src/system/boot/loader/elf.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -220,6 +221,7 @@ ELFLoader::Load(int fd, preloaded_image* _image) continue; case PT_INTERP: case PT_PHDR: + case PT_ARM_UNWIND: // known but unused type continue; default: @@ -275,7 +277,8 @@ ELFLoader::Load(int fd, preloaded_image* _image) // inbetween. totalSize = secondRegion->start + secondRegion->size - firstRegion->start; if (totalSize > image->text_region.size + image->data_region.size - + 16 * 1024) { + + 32 * 1024) { + dprintf("Too much space between segments %" B_PRIuSIZE "!\n", totalSize); status = B_BAD_DATA; goto error1; }