From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Petr Hracek Newsgroups: gmane.emacs.bugs Subject: bug#20614: Segmentation fault when building on Power8 Little Endian Date: Mon, 5 Oct 2015 13:23:42 +0200 Message-ID: <56125DBE.5090305@redhat.com> References: <555C3E3C.4090700@redhat.com> <1gpp5vi5xn.fsf@fencepost.gnu.org> <555DD5D3.3020207@redhat.com> <55A3A08A.9060905@redhat.com> <55A4BFB7.3010208@redhat.com> <55F95275.4040209@redhat.com> <56012AA6.7010702@redhat.com> <56025D9A.9080608@redhat.com> <838u7xlbsn.fsf@gnu.org> <56028633.3000303@redhat.com> <83zj0djskx.fsf@gnu.org> <56029707.9040100@redhat.com> <83wpvhjpdd.fsf@gnu.org> <5603D8BE.10300@redhat.com> <834mijkf36.fsf@gnu.org> <56043950.7040108@redhat.com> <83k2rdhaso.fsf@gnu.org> <560BBBF3.6000407@redhat.com> <83r3lf9gq4.fsf@gnu.org> <560D1EAA.3080608@redhat.com> <83bnciaidw.fsf@gnu.org> <560D3DC5.2050804@redhat.com> <837fn6a881.fsf@gnu.org> <560E420B.9070200@redhat.com> <83d1wx7j0e.fsf@gnu.org> <560E7F90.1070609@redhat.com> <83wpv55qog.fsf@gnu.org> <5612295F.4000607@redhat.com> <83twq5zpne.fsf@gnu.org> <56123FF0.3040104@redhat.com> <83oagdzmbj.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1444044260 11054 80.91.229.3 (5 Oct 2015 11:24:20 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 5 Oct 2015 11:24:20 +0000 (UTC) Cc: 20614@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Oct 05 13:24:11 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Zj3sI-0008Sb-TB for geb-bug-gnu-emacs@m.gmane.org; Mon, 05 Oct 2015 13:24:11 +0200 Original-Received: from localhost ([::1]:45351 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zj3sI-0006SE-7g for geb-bug-gnu-emacs@m.gmane.org; Mon, 05 Oct 2015 07:24:10 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49204) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zj3sE-0006S8-Eh for bug-gnu-emacs@gnu.org; Mon, 05 Oct 2015 07:24:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zj3sA-0004qB-79 for bug-gnu-emacs@gnu.org; Mon, 05 Oct 2015 07:24:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:37692) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zj3sA-0004q1-4q for bug-gnu-emacs@gnu.org; Mon, 05 Oct 2015 07:24:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Zj3s9-0002kh-Pc for bug-gnu-emacs@gnu.org; Mon, 05 Oct 2015 07:24:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Petr Hracek Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 05 Oct 2015 11:24:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20614 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20614-submit@debbugs.gnu.org id=B20614.144404422710554 (code B ref 20614); Mon, 05 Oct 2015 11:24:01 +0000 Original-Received: (at 20614) by debbugs.gnu.org; 5 Oct 2015 11:23:47 +0000 Original-Received: from localhost ([127.0.0.1]:54896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Zj3ru-0002k9-9k for submit@debbugs.gnu.org; Mon, 05 Oct 2015 07:23:46 -0400 Original-Received: from mx1.redhat.com ([209.132.183.28]:48715) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Zj3rs-0002k2-TL for 20614@debbugs.gnu.org; Mon, 05 Oct 2015 07:23:45 -0400 Original-Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id 99E9E8E694; Mon, 5 Oct 2015 11:23:44 +0000 (UTC) Original-Received: from [10.34.4.133] (unused-4-133.brq.redhat.com [10.34.4.133]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t95BNhI3026088; Mon, 5 Oct 2015 07:23:43 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 In-Reply-To: <83oagdzmbj.fsf@gnu.org> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:107312 Archived-At: On 10/05/2015 11:39 AM, Eli Zaretskii wrote: >> Cc: 20614@debbugs.gnu.org >> From: Petr Hracek >> Date: Mon, 5 Oct 2015 11:16:32 +0200 >> >> (gdb) p old_section_names + NEW_SECTION_H (nn).sh_name >> $2 = 0x4000128ceb51
> We have a function valid_pointer_p in alloc.c. What happens if you > use the same code in unexec, before the series of calls to strcmp that > crash, and only proceed to call strcmp if valid_pointer_p returns a > positive value? I have no problem to do it. I have made a this patch against emacs-24.3 diff --git a/src/unexelf.c b/src/unexelf.c index d365940..677a1af 100644 --- a/src/unexelf.c +++ b/src/unexelf.c @@ -389,6 +389,7 @@ temacs: #include extern void fatal (const char *msgid, ...); +extern int valid_pointer_p (void *); #include #include @@ -845,8 +846,7 @@ unexec (const char *new_name, const char *old_name) ElfW (Word) alignment = (NEW_PROGRAM_H (n)).p_align; if ((OLD_SECTION_H (old_bss_index)).sh_addralign > alignment) alignment = OLD_SECTION_H (old_bss_index).sh_addralign; - -#ifdef __sgi +#if defined __sgi || defined __powerpc64__ /* According to r02kar@x4u2.desy.de (Karsten Kuenne) and oliva@gnu.org (Alexandre Oliva), on IRIX 5.2, we always get "Program segment above .bss" when dumping @@ -866,8 +866,10 @@ unexec (const char *new_name, const char *old_name) == round_up (old_bss_addr, alignment))) break; } +#ifndef __powerpc64__ if (n < 0) fatal ("Couldn't find segment next to .bss in %s\n", old_name, 0); +#endif /* Make sure that the size includes any padding before the old .bss section. */ @@ -1251,6 +1253,12 @@ temacs: be no harm in that provided that r_offset is always the first member. */ nn = section.sh_info; + valid_pointer_p (old_section_names + NEW_SECTION_H (nn).sh_name); if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data") || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), ".sdata") But if fails with /home/phracek/rpmbuild/BUILD/emacs-24.3/src/unexelf.c:1263: undefined reference to `valid_pointer_p' collect2: error: ld returned 1 exit status make[2]: *** [temacs] Error 1 make[2]: Leaving directory `/home/phracek/rpmbuild/BUILD/emacs-24.3/src' make[1]: *** [src] Error 2 make[1]: Leaving directory `/home/phracek/rpmbuild/BUILD/emacs-24.3' make: *** [bootstrap] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.QoDw34 (%build) -- Petr Hracek Software Engineer Developer Experience Red Hat, Inc Mob: +420777056169 email: phracek@redhat.com