Bug 1265271
Summary: | Emacs is not able to be build up under ppc64le because of binutils | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Petr Hracek <phracek> |
Component: | emacs | Assignee: | Petr Hracek <phracek> |
Status: | CLOSED DUPLICATE | QA Contact: | BaseOS QE Security Team <qe-baseos-security> |
Severity: | urgent | Docs Contact: | |
Priority: | urgent | ||
Version: | 7.2 | CC: | amodra, dhorak, jcapik, ksrot, law, mcermak, mhaicman, nickc, ohudlick, than |
Target Milestone: | rc | Keywords: | BuildBlocker, Regression |
Target Release: | --- | ||
Hardware: | ppc64le | ||
OS: | Unspecified | ||
Whiteboard: | blocker | ||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-10-07 12:45:51 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 1223033 |
Description
Petr Hracek
2015-09-22 14:04:38 UTC
I will try to build up emacs-24.5 if the latest version works or not on PPC64LE. Only for sure I am adding sump dump information. I have made some investigation and here are results: When the dumping failed with message "Program segment above .bss" then I have add a some debug info. Hopefully It helps. Dumping under the name emacs Looking for .bss - found .interp Looking for .bss - found .note.ABI-tag Looking for .bss - found .note.gnu.build-id Looking for .bss - found .gnu.hash Looking for .bss - found .dynsym Looking for .bss - found .dynstr Looking for .bss - found .gnu.version Looking for .bss - found .gnu.version_r Looking for .bss - found .rela.toc Looking for .bss - found .rela.plt Looking for .bss - found .init Looking for .bss - found .text Looking for .bss - found .fini Looking for .bss - found .rodata Looking for .bss - found .eh_frame_hdr Looking for .bss - found .eh_frame Looking for .bss - found .data.rel.ro Looking for .bss - found .dynamic Looking for .bss - found .got Looking for .bss - found .plt Looking for .bss - found .data Looking for .bss - found .bss Looking for .sbss - found .interp Looking for .sbss - found .note.ABI-tag Looking for .sbss - found .note.gnu.build-id Looking for .sbss - found .gnu.hash Looking for .sbss - found .dynsym Looking for .sbss - found .dynstr Looking for .sbss - found .gnu.version Looking for .sbss - found .gnu.version_r Looking for .sbss - found .rela.toc Looking for .sbss - found .rela.plt Looking for .sbss - found .init Looking for .sbss - found .text Looking for .sbss - found .fini Looking for .sbss - found .rodata Looking for .sbss - found .eh_frame_hdr Looking for .sbss - found .eh_frame Looking for .sbss - found .data.rel.ro Looking for .sbss - found .dynamic Looking for .sbss - found .got Looking for .sbss - found .plt Looking for .sbss - found .data Looking for .sbss - found .bss Looking for .sbss - found .comment Looking for .sbss - found .debug_aranges Looking for .sbss - found .debug_info Looking for .sbss - found .debug_abbrev Looking for .sbss - found .debug_line Looking for .sbss - found .debug_str Looking for .sbss - found .debug_loc Looking for .sbss - found .debug_ranges Looking for .sbss - found .shstrtab Looking for .sbss - found .symtab Looking for .sbss - found .strtab Looking for .plt - found .interp Looking for .plt - found .note.ABI-tag Looking for .plt - found .note.gnu.build-id Looking for .plt - found .gnu.hash Looking for .plt - found .dynsym Looking for .plt - found .dynstr Looking for .plt - found .gnu.version Looking for .plt - found .gnu.version_r Looking for .plt - found .rela.toc Looking for .plt - found .rela.plt Looking for .plt - found .init Looking for .plt - found .text Looking for .plt - found .fini Looking for .plt - found .rodata Looking for .plt - found .eh_frame_hdr Looking for .plt - found .eh_frame Looking for .plt - found .data.rel.ro Looking for .plt - found .dynamic Looking for .plt - found .got Looking for .plt - found .plt Looking for .data - found .interp Looking for .data - found .note.ABI-tag Looking for .data - found .note.gnu.build-id Looking for .data - found .gnu.hash Looking for .data - found .dynsym Looking for .data - found .dynstr Looking for .data - found .gnu.version Looking for .data - found .gnu.version_r Looking for .data - found .rela.toc Looking for .data - found .rela.plt Looking for .data - found .init Looking for .data - found .text Looking for .data - found .fini Looking for .data - found .rodata Looking for .data - found .eh_frame_hdr Looking for .data - found .eh_frame Looking for .data - found .data.rel.ro Looking for .data - found .dynamic Looking for .data - found .got Looking for .data - found .plt Looking for .data - found .data old_bss_index 22 old_bss_addr 102b0000 old_bss_size 89798 old_bss_offset 2a0000 new_bss_addr 115d0000 new_data2_addr 102b0000 new_data2_size 1320000 new_data2_offset 2a0000 new_data2_incr 1320000 Old section offset da1ac8 Old section count 34 New section offset 20c1ac8 New section count 35 new_file_h->e_phnum 9 old_sbss_index ffffffff old_bss_addr 102b0000 alignment 10 NEW_PROGRAM_H (n).p_vaddr 102af638 NEW_PROGRAM_H (n).p_filesz 9c8 (OLD_SECTION_H (old_bss_index)).sh_addralign 10 old_sbss_index ffffffff old_bss_addr 102b0000 alignment 10 NEW_PROGRAM_H (n).p_vaddr 0 NEW_PROGRAM_H (n).p_filesz 0 (OLD_SECTION_H (old_bss_index)).sh_addralign 10 old_sbss_index ffffffff old_bss_addr 102b0000 alignment 10 NEW_PROGRAM_H (n).p_vaddr 10269510 NEW_PROGRAM_H (n).p_filesz 73cc (OLD_SECTION_H (old_bss_index)).sh_addralign 10 old_sbss_index ffffffff old_bss_addr 102b0000 alignment 10 NEW_PROGRAM_H (n).p_vaddr 1000024c NEW_PROGRAM_H (n).p_filesz 44 (OLD_SECTION_H (old_bss_index)).sh_addralign 10 old_sbss_index ffffffff old_bss_addr 102b0000 alignment 10 NEW_PROGRAM_H (n).p_vaddr 102afa68 NEW_PROGRAM_H (n).p_filesz 440 (OLD_SECTION_H (old_bss_index)).sh_addralign 10 old_sbss_index ffffffff old_bss_addr 102b0000 alignment 10000 NEW_PROGRAM_H (n).p_vaddr 102af638 NEW_PROGRAM_H (n).p_filesz 2c9756 (OLD_SECTION_H (old_bss_index)).sh_addralign 10 emacs: Program segment above .bss in /home/phracek/rpmbuild/BUILD/emacs-24.3/build-gtk/src/temacs Some useful information taken by command readelf: readelf -h ./temacs ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: PowerPC64 Version: 0x1 Entry point address: 0x100184f0 Start of program headers: 64 (bytes into file) Start of section headers: 14289272 (bytes into file) Flags: 0x2, abiv2 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 9 Size of section headers: 64 (bytes) Number of section headers: 34 Section header string table index: 31 readelf -l ./temacs Elf file type is EXEC (Executable file) Entry point 0x100184f0 There are 9 program headers, starting at offset 64 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align PHDR 0x0000000000000040 0x0000000010000040 0x0000000010000040 0x00000000000001f8 0x00000000000001f8 R E 8 INTERP 0x0000000000000238 0x0000000010000238 0x0000000010000238 0x0000000000000011 0x0000000000000011 R 1 [Requesting program interpreter: /lib64/ld64.so.2] LOAD 0x0000000000000000 0x0000000010000000 0x0000000010000000 0x000000000029e6d8 0x000000000029e6d8 R E 10000 LOAD 0x000000000029f640 0x00000000102af640 0x00000000102af640 0x00000000002c974e 0x0000000000350e90 RW 10000 DYNAMIC 0x000000000029fa70 0x00000000102afa70 0x00000000102afa70 0x0000000000000440 0x0000000000000440 RW 8 NOTE 0x000000000000024c 0x000000001000024c 0x000000001000024c 0x0000000000000044 0x0000000000000044 R 4 GNU_EH_FRAME 0x0000000000268fe0 0x0000000010268fe0 0x0000000010268fe0 0x00000000000073cc 0x00000000000073cc R 4 GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 RW 10 GNU_RELRO 0x000000000029f640 0x00000000102af640 0x00000000102af640 0x00000000000009c0 0x00000000000009c0 R 1 Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.toc .rela.plt .init .text .fini .rodata .eh_frame_hdr .eh_frame 03 .data.rel.ro .dynamic .got .plt .data .bss 04 .dynamic 05 .note.ABI-tag .note.gnu.build-id 06 .eh_frame_hdr 07 08 .data.rel.ro .dynamic .got readelf -S ./temacs There are 34 section headers, starting at offset 0xda0978: Section Headers: [Nr] Name Type Address Offset Size EntSize Flags Link Info Align [ 0] NULL 0000000000000000 00000000 0000000000000000 0000000000000000 0 0 0 [ 1] .interp PROGBITS 0000000010000238 00000238 0000000000000011 0000000000000000 A 0 0 1 [ 2] .note.ABI-tag NOTE 000000001000024c 0000024c 0000000000000020 0000000000000000 A 0 0 4 [ 3] .note.gnu.build-i NOTE 000000001000026c 0000026c 0000000000000024 0000000000000000 A 0 0 4 [ 4] .gnu.hash GNU_HASH 0000000010000290 00000290 00000000000000dc 0000000000000000 A 5 0 8 [ 5] .dynsym DYNSYM 0000000010000370 00000370 00000000000063f0 0000000000000018 A 6 1 8 [ 6] .dynstr STRTAB 0000000010006760 00006760 0000000000004ae9 0000000000000000 A 0 0 1 [ 7] .gnu.version VERSYM 000000001000b24a 0000b24a 0000000000000854 0000000000000002 A 5 0 2 [ 8] .gnu.version_r VERNEED 000000001000baa0 0000baa0 0000000000000160 0000000000000000 A 6 10 8 [ 9] .rela.toc RELA 000000001000bc00 0000bc00 0000000000000330 0000000000000018 A 5 0 8 [10] .rela.plt RELA 000000001000bf30 0000bf30 00000000000060d8 0000000000000018 A 5 20 8 [11] .init PROGBITS 0000000010012020 00012020 000000000000004c 0000000000000000 AX 0 0 32 [12] .text PROGBITS 0000000010012080 00012080 0000000000237140 0000000000000000 AX 0 0 32 [13] .fini PROGBITS 00000000102491c0 002491c0 0000000000000024 0000000000000000 AX 0 0 4 [14] .rodata PROGBITS 00000000102491e8 002491e8 000000000001fdf8 0000000000000000 A 0 0 8 [15] .eh_frame_hdr PROGBITS 0000000010268fe0 00268fe0 00000000000073cc 0000000000000000 A 0 0 4 [16] .eh_frame PROGBITS 00000000102703b0 002703b0 000000000002e328 0000000000000000 A 0 0 8 [17] .data.rel.ro PROGBITS 00000000102af640 0029f640 0000000000000430 0000000000000000 WA 0 0 8 [18] .dynamic DYNAMIC 00000000102afa70 0029fa70 0000000000000440 0000000000000010 WA 6 0 8 [19] .got PROGBITS 00000000102afeb0 0029feb0 0000000000000150 0000000000000008 WA 0 0 8 [20] .plt NOBITS 00000000102b0000 002a0000 0000000000002058 0000000000000008 WA 0 0 8 [21] .data PROGBITS 00000000102b2058 002a2058 00000000002c6d36 0000000000000000 WA 0 0 8 [22] .bss NOBITS 0000000010578d90 00568d8e 0000000000087740 0000000000000000 WA 0 0 16 [23] .comment PROGBITS 0000000000000000 00568d8e 0000000000000058 0000000000000001 MS 0 0 1 [24] .debug_aranges PROGBITS 0000000000000000 00568de6 0000000000001350 0000000000000000 0 0 1 [25] .debug_info PROGBITS 0000000000000000 0056a136 00000000003aeadb 0000000000000000 0 0 1 [26] .debug_abbrev PROGBITS 0000000000000000 00918c11 0000000000021b05 0000000000000000 0 0 1 [27] .debug_line PROGBITS 0000000000000000 0093a716 000000000007d970 0000000000000000 0 0 1 [28] .debug_str PROGBITS 0000000000000000 009b8086 000000000004911a 0000000000000001 MS 0 0 1 [29] .debug_loc PROGBITS 0000000000000000 00a011a0 00000000003277c9 0000000000000000 0 0 1 [30] .debug_ranges PROGBITS 0000000000000000 00d28969 0000000000077ec0 0000000000000000 0 0 1 [31] .shstrtab STRTAB 0000000000000000 00da0829 0000000000000148 0000000000000000 0 0 1 [32] .symtab SYMTAB 0000000000000000 00da11f8 0000000000037bc0 0000000000000018 33 5415 8 [33] .strtab STRTAB 0000000000000000 00dd8db8 000000000002e23b 0000000000000000 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) 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 After enforcing old_plt_index=-1, the plt relocation undoing got fixed. .rela.plt -> .plt .rela.toc -> empty string the good thing is that it doesn't crash with the latest binutils Why is bug #1223033 private? |