bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#20614: Segmentation fault when building on Power8 Little Endian


From: Petr Hracek
Subject: bug#20614: Segmentation fault when building on Power8 Little Endian
Date: Wed, 7 Oct 2015 14:26:46 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 10/07/2015 12:56 PM, YAMAMOTO Mitsuharu wrote:
What happens if you apply the following patch?

                                     YAMAMOTO Mitsuharu
                                mituharu@math.s.chiba-u.ac.jp

diff --git a/src/unexelf.c b/src/unexelf.c
index 59e2725..0d67b99 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -730,7 +730,14 @@ unexec (const char *new_name, const char *old_name)
    old_plt_index = find_section (".plt", old_section_names,
                                old_name, old_file_h, old_section_h, 1);
    if (old_plt_index != -1)
-    if (OLD_SECTION_H (old_plt_index).sh_type != SHT_NOBITS)
+    if (OLD_SECTION_H (old_plt_index).sh_type != SHT_NOBITS
+       || ((OLD_SECTION_H (old_plt_index).sh_addr
+            + OLD_SECTION_H (old_plt_index).sh_size
+            != OLD_SECTION_H (old_bss_index).sh_addr)
+           && (old_sbss_index == -1
+               || (OLD_SECTION_H (old_plt_index).sh_addr
+                   + OLD_SECTION_H (old_plt_index).sh_size
+                   != OLD_SECTION_H (old_sbss_index).sh_addr))))
        old_plt_index = -1;
if (old_sbss_index == -1 && old_plt_index == -1)
Awesome. The patch fixes the problem and I can build the emacs under PPC64LE.

By the way .toc is still not fixed. It is specific to ppc64. And it doesn't cause the segfault, though.
It has a data and addresses.
It seems that unexec corrupted it:(

--
Petr Hracek
Software Engineer
Developer Experience
Red Hat, Inc
Mob: +420777056169
email: phracek@redhat.com






reply via email to

[Prev in Thread] Current Thread [Next in Thread]