Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F147174120
D18364.id51239.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
762 B
Referenced Files
None
Subscribers
None
D18364.id51239.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D18364: Fix PowerPC64 ELFv1-specific problem in __elf_phdr_match_addr() leading to crash in threaded programs that unload libraries.
Attached
Detach File
Event Timeline
Log In to Comment