Page MenuHomeFreeBSD

D18364.id51239.diff
No OneTemporary

D18364.id51239.diff

Index: lib/libc/gen/elf_utils.c
===================================================================
--- lib/libc/gen/elf_utils.c
+++ lib/libc/gen/elf_utils.c
@@ -47,7 +47,16 @@
for (i = 0; i < phdr_info->dlpi_phnum; i++) {
ph = &phdr_info->dlpi_phdr[i];
+ /*
+ * PPC64 ELFv1 ABI is a special case. Since function pointers
+ * point to function descriptors in the .opd section, we can't
+ * skip over non-executable sections.
+ */
+#if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
+ if (ph->p_type != PT_LOAD)
+#else
if (ph->p_type != PT_LOAD || (ph->p_flags & PF_X) == 0)
+#endif
continue;
if (phdr_info->dlpi_addr + ph->p_vaddr <= (uintptr_t)addr &&
(uintptr_t)addr + sizeof(addr) < phdr_info->dlpi_addr +

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 9, 8:40 PM (14 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29456434
Default Alt Text
D18364.id51239.diff (762 B)

Event Timeline