[PATCH] powerpc: vmlinux.lds: Drop Binutils 2.18 workarounds

Christophe Leroy christophe.leroy at c-s.fr
Wed Mar 27 20:09:56 AEDT 2019



Le 27/03/2019 à 09:56, Christophe Leroy a écrit :
> 
> 
> Le 26/03/2019 à 21:12, Segher Boessenkool a écrit :
>> On Tue, Mar 26, 2019 at 08:28:58PM +0100, Christophe Leroy wrote:
>>>
>>>
>>> Le 26/03/2019 à 19:19, Segher Boessenkool a écrit :
>>>> On Tue, Mar 26, 2019 at 07:55:33AM +0000, Christophe Leroy wrote:
>>>>>     STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 
>>>>> 2**4
>>>>>           filesz 0x00000000 memsz 0x00000000 flags rwx
>>>>
>>>> You need to prevent this one somehow.  What object file forces this?
>>>
>>> mpc885_ads_defconfig
>>
>> No, which object file, ".o file".  Not defconfig :-)
>>
> 
> Ok, how to I know that ? Is it based on some file flags or some headers ?
> 
> Here is the list of headers in vmlinux.o, is there one that shouldn't 
> exist ?
> 
> 
> vmlinux.o:     file format elf32-powerpc
> 
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>    0 .text         003320c0  00000000  00000000  00001000  2**12
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    1 .head.text    00002340  00000000  00000000  003330c0  2**0
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    2 .init.text    00017cb8  00000000  00000000  00335400  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    3 .text.unlikely 00004154  00000000  00000000  0034d0b8  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    4 .ref.text     000013f0  00000000  00000000  0035120c  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    5 .softirqentry.text 00000258  00000000  00000000  003525fc  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    6 .sched.text   00003930  00000000  00000000  00352854  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    7 .cpuidle.text 0000007c  00000000  00000000  00356184  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    8 .meminit.text 00000584  00000000  00000000  00356200  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>    9 .exit.text    00000800  00000000  00000000  00356784  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>   10 .rodata       0001d7a7  00000000  00000000  00356f90  2**4
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   11 .init.rodata  00000790  00000000  00000000  00374738  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   12 .rodata.str1.4 00022329  00000000  00000000  00374ec8  2**2
>                    CONTENTS, ALLOC, LOAD, READONLY, DATA
>   13 __param       000003c0  00000000  00000000  003971f4  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   14 .note.Linux   00000018  00000000  00000000  003975b4  2**2
>                    CONTENTS, ALLOC, LOAD, READONLY, DATA
>   15 __ex_table    00000ca8  00000000  00000000  003975cc  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   16 __ftr_alt_97  00000008  00000000  00000000  00398274  2**2
>                    CONTENTS, ALLOC, LOAD, READONLY, DATA
>   17 __ftr_fixup   00000198  00000000  00000000  00398280  2**3
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   18 __reservedmem_of_table 000000c4  00000000  00000000  00398418  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   19 __irqchip_of_table_end 000000c4  00000000  00000000  003984dc  2**2
>                    CONTENTS, ALLOC, LOAD, READONLY, DATA
>   20 __modver      00000008  00000000  00000000  003985a0  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   21 __reservedmem_of_table_end 000000c4  00000000  00000000  003985a8  
> 2**2
>                    CONTENTS, ALLOC, LOAD, READONLY, DATA
>   22 .eh_frame     00134eb8  00000000  00000000  0039866c  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
>   23 .fixup        00000cc8  00000000  00000000  004cd524  2**0
>                    CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>   24 .data         00013668  00000000  00000000  004cf000  2**12
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   25 __bug_table   00006ce4  00000000  00000000  004e2668  2**0
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   26 .data..read_mostly 00001ce8  00000000  00000000  004e9350  2**3
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   27 .init.data    0000244c  00000000  00000000  004eb038  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   28 .init.setup   0000039c  00000000  00000000  004ed484  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   29 .initcallrootfs.init 00000004  00000000  00000000  004ed820  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   30 .data..page_aligned 00003000  00000000  00000000  004ee000  2**12
>                    CONTENTS, ALLOC, LOAD, DATA
>   31 .initcall3.init 00000008  00000000  00000000  004f1000  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   32 .initcallearly.init 00000010  00000000  00000000  004f1008  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   33 .initcall6.init 00000120  00000000  00000000  004f1018  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   34 .initcall4.init 00000080  00000000  00000000  004f1138  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   35 .data.once    0000009e  00000000  00000000  004f11b8  2**0
>                    CONTENTS, ALLOC, LOAD, DATA
>   36 .initcall1.init 00000048  00000000  00000000  004f1258  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   37 .initcall7.init 00000030  00000000  00000000  004f12a0  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   38 .machine.desc 000000e0  00000000  00000000  004f12d0  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   39 .data..cacheline_aligned 00005000  00000000  00000000  004f13b0  2**4
>                    CONTENTS, ALLOC, LOAD, DATA
>   40 .data..ro_after_init 000004b8  00000000  00000000  004f63b0  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   41 .initcall2.init 00000018  00000000  00000000  004f6868  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   42 .initcall5.init 00000070  00000000  00000000  004f6880  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   43 .meminit.data 00000010  00000000  00000000  004f68f0  2**2
>                    CONTENTS, ALLOC, LOAD, DATA
>   44 .ref.data     00000578  00000000  00000000  004f6900  2**2
>                    CONTENTS, ALLOC, LOAD, DATA
>   45 .exitcall.exit 000000b0  00000000  00000000  004f6e78  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   46 .initcall0.init 0000000c  00000000  00000000  004f6f28  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   47 .con_initcall.init 00000004  00000000  00000000  004f6f34  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   48 .initcall7s.init 00000004  00000000  00000000  004f6f38  2**2
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   49 .data..shared_aligned 00000118  00000000  00000000  004f6f40  2**4
>                    CONTENTS, ALLOC, LOAD, DATA
>   50 .sdata        00000188  00000000  00000000  004f7058  2**3
>                    CONTENTS, ALLOC, LOAD, RELOC, DATA
>   51 .sbss         000002d4  00000000  00000000  004f71e0  2**3
>                    ALLOC
>   52 .bss          0001e728  00000000  00000000  004f71e0  2**4
>                    ALLOC
>   53 .stab         00000270  00000000  00000000  004f71e0  2**2
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   54 .stabstr      00000335  00000000  00000000  004f7450  2**0
>                    CONTENTS, READONLY, DEBUGGING
>   55 .comment      0000339c  00000000  00000000  004f7785  2**0
>                    CONTENTS, READONLY
>   56 .note.GNU-stack 00000000  00000000  00000000  004fab21  2**0
>                    CONTENTS, READONLY, CODE
>   57 .debug_aranges 000077e8  00000000  00000000  004fab28  2**3
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   58 .debug_info   030a43d8  00000000  00000000  00502310  2**0
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   59 .debug_abbrev 0018bdc0  00000000  00000000  035a66e8  2**0
>                    CONTENTS, READONLY, DEBUGGING
>   60 .debug_line   005d69b9  00000000  00000000  037324a8  2**0
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   61 .debug_frame  00134eb8  00000000  00000000  03d08e64  2**2
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   62 .debug_str    01b24fc1  00000000  00000000  03e3dd1c  2**0
>                    CONTENTS, READONLY, DEBUGGING
>   63 .debug_loc    00242597  00000000  00000000  05962cdd  2**0
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   64 .debug_ranges 001ea010  00000000  00000000  05ba5274  2**0
>                    CONTENTS, RELOC, READONLY, DEBUGGING
>   65 .gnu.attributes 00000012  00000000  00000000  05d8f284  2**0
>                    CONTENTS, READONLY
> 

Using readelf, I get the following output

[root at localhost linux-powerpc]# powerpc64-linux-readelf -l vmlinux

Elf file type is EXEC (Executable file)
Entry point 0xc0000000
There are 3 program headers, starting at offset 52

Program Headers:
   Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
   LOAD           0x010000 0xc0000000 0x00000000 0x3f8ce4 0x417a08 RWE 
0x10000
   NOTE           0x3c3ca8 0xc03b3ca8 0x003b3ca8 0x0003c 0x0003c R   0x4
   GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x10

  Section to Segment mapping:
   Segment Sections...
    00     .head.text .text .rodata __param __modver __ex_table .notes 
.init.text .exit.text .init.data .init.setup .initcall.init 
.con_initcall.init __ftr_fixup .machine.desc .data .data..init_task 
.data..page_aligned .data..cacheline_aligned .data..read_mostly 
__bug_table .sbss .bss
    01     .notes
    02



Is it the section .note.GNU-stack which implies GNU_STACK program header 
? That section seems to be present in most .o files.

Christophe


More information about the Linuxppc-dev mailing list