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

From: Petr Hracek <[email-masked]>
Date: Wed, 7 Oct 2015 10:17:38 +0200

On 10/06/2015 04:55 PM, Eli Zaretskii wrote:
>> From: Petr Hracek <[email-masked]>
>> Date: Tue, 6 Oct 2015 13:52:52 +0200
>>
>> I have a question
>> unexec part is called always?
>> Even when make bootstrap is not called?
> It is called each time the Emacs executable is built.
>
>> What is bootstrap used for?
> Fir the first build, when there are no *.elc files.
Our secondary arches expert did awesome research and mention it in bugzilla
https://bugzilla.redhat.com/show_bug.cgi?id=1265271#c11

Basically If you don't have an access to bugzilla:

Hello guys.

I'm affraid it didn't work correctly even with the old binutils. The whole unexec logic is broken and needs a lot of love.

The relocation undoing is done the following way on x86_64:
.rela.plt -> .plt
.rela.bss -> .bss
.rela.got -> .got

... but on ppc64le I get the following with the old binutils:
.rela.plt -> .data
.rela.toc -> empty string (probably some zeros in memory)

... and with the new binutils it probably just attacks a different part of memory and segfaults.

On ppc64be I also get wrong results ...
with binutils-2.23.52.0.1-50.el7.ppc64
.rela.plt -> .data
.rela.toc -> empty string
.rela.data.rel.ro -> .data.rel.ro

with binutils-2.23.52.0.1-54.el7.ppc64
.rela.plt -> .data
.rela.toc -> segfault

Fedora 22 is affected too ...
with binutils-2.25-8.fc22.ppc64le
.rela.plt -> .data
.rela.toc -> empty string
.rela.data.rel.ro -> .data.rel.ro

Fedora 22 for s390x seems ok ...
.rela.plt -> .plt
.rela.got -> .got

Fedora 22 for aarch64 seems ok too ..
.rela.plt -> .plt
.rela.got -> .got

Can anybody from upstream correct it? @Jaromir: Thank you for your time 
and awesome analysis.

-- 
Petr Hracek
Software Engineer
Developer Experience
Red Hat, Inc
Mob: +420777056169
email: [email-masked]