diff --git a/src/core/sys/dragonflybsd/sys/elf_common.d b/src/core/sys/dragonflybsd/sys/elf_common.d index d4ac93d186..eef6a89e7a 100644 --- a/src/core/sys/dragonflybsd/sys/elf_common.d +++ b/src/core/sys/dragonflybsd/sys/elf_common.d @@ -389,6 +389,7 @@ enum SHF_LINK_ORDER = (1 << 7); enum SHF_OS_NONCONFORMING = (1 << 8); enum SHF_GROUP = (1 << 9); enum SHF_TLS = (1 << 10); +enum SHF_COMPRESSED = (1 << 11); enum SHF_MASKOS = 0x0ff00000; enum SHF_MASKPROC = 0xf0000000; diff --git a/src/core/sys/freebsd/sys/elf_common.d b/src/core/sys/freebsd/sys/elf_common.d index fb8fcba1a4..6188d0ef7a 100644 --- a/src/core/sys/freebsd/sys/elf_common.d +++ b/src/core/sys/freebsd/sys/elf_common.d @@ -265,6 +265,7 @@ enum SHF_LINK_ORDER = (1 << 7); enum SHF_OS_NONCONFORMING = (1 << 8); enum SHF_GROUP = (1 << 9); enum SHF_TLS = (1 << 10); +enum SHF_COMPRESSED = (1 << 11); enum SHF_MASKOS = 0x0ff00000; enum SHF_MASKPROC = 0xf0000000; diff --git a/src/core/sys/linux/elf.d b/src/core/sys/linux/elf.d index 19f7aa4204..45e89eae60 100644 --- a/src/core/sys/linux/elf.d +++ b/src/core/sys/linux/elf.d @@ -314,6 +314,7 @@ enum SHF_LINK_ORDER = (1 << 7); enum SHF_OS_NONCONFORMING = (1 << 8); enum SHF_GROUP = (1 << 9); enum SHF_TLS = (1 << 10); +enum SHF_COMPRESSED = (1 << 11); enum SHF_MASKOS = 0x0ff00000; enum SHF_MASKPROC = 0xf0000000; enum SHF_ORDERED = (1 << 30); diff --git a/src/rt/backtrace/elf.d b/src/rt/backtrace/elf.d index 7a9b44f991..dbfc74dfb7 100644 --- a/src/rt/backtrace/elf.d +++ b/src/rt/backtrace/elf.d @@ -52,6 +52,9 @@ struct Image if (dbgSectionIndex != -1) { auto dbgSectionHeader = ElfSectionHeader(&file, dbgSectionIndex); + // we don't support compressed debug sections + if ((dbgSectionHeader.shdr.sh_flags & SHF_COMPRESSED) != 0) + return null; // debug_line section found and loaded return ElfSection(&file, &dbgSectionHeader); }