[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/19807] New: [2.26 regression] R_386_GOT32X optimization breaks l
From: |
fvogt at suse dot com |
Subject: |
[Bug ld/19807] New: [2.26 regression] R_386_GOT32X optimization breaks linux kernel |
Date: |
Fri, 11 Mar 2016 08:09:39 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=19807
Bug ID: 19807
Summary: [2.26 regression] R_386_GOT32X optimization breaks
linux kernel
Product: binutils
Version: 2.27 (HEAD)
Status: NEW
Severity: critical
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: fvogt at suse dot com
Target Milestone: ---
Building the i386 linux kernel (tried the latest 4.5 rc7, but all are broken)
with compression causes booting to fail during the decompression stage:
"Failed to allocate space for phdrs".
The kernel decompressor stage is linked to a fixed address, but running at a
different location.
This isn't a problem as it relocates itself by adding the difference to the GOT
entries,
but the optimization "mov $GOTOFF(%ecx), %eax" (R_386_GOT32X) -> "lea $address,
%eax" (R_386_32) breaks this,
as the GOT is no longer referenced in the final ELF.
Result is that some global variables, like free_mem_ptr_end, are overwritten
during decompression, causing weird errors like
malloc returing NULL.
Workaround: specify "--disable-x86-relax-relocations" configure option or
"-mrelax-relocations=no" to as.
See also:
https://bugzilla.opensuse.org/show_bug.cgi?id=970239
https://bugzilla.redhat.com/show_bug.cgi?id=1302071
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/19807] New: [2.26 regression] R_386_GOT32X optimization breaks linux kernel,
fvogt at suse dot com <=
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, rguenth at gcc dot gnu.org, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, hjl.tools at gmail dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, fvogt at suse dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, hjl.tools at gmail dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, hjl.tools at gmail dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, hjl.tools at gmail dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, fvogt at suse dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, hjl.tools at gmail dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, hjl.tools at gmail dot com, 2016/03/11
- [Bug ld/19807] [2.26 regression] R_386_GOT32X optimization breaks linux kernel, fvogt at suse dot com, 2016/03/14