Re: 3.18+: soft-float userland unusable due to .MIPS.abiflags patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 16, 2015 at 8:12 PM, Matthew Fortune
<Matthew.Fortune@xxxxxxxxxx> wrote:
>> On Fri, Jan 16, 2015 at 6:59 PM, Manuel Lauss <manuel.lauss@xxxxxxxxx>
>> wrote:
>> > Hi Paul,
>> >
>> > Your patch commit 90cee759f08a6b7a8daab9977d3e163ebbcac220
>> > ("MIPS: ELF: Set FP mode according to .MIPS.abiflags") completely
>> > breaks my pure soft-float o32 userland:
>> >
>> > [...]
>> > Freeing unused kernel memory: 244K (80993000 - 809d0000) Failed to
>> > execute /usr/lib/systemd/systemd (error -84).  Attempting defaults...
>> > Starting init: /sbin/init exists but couldn't execute it (error -84)
>> > sh: cannot set terminal process group (-1): Inappropriate ioctl for
>> > device
>> > sh: no job control in this shell
>> > sh-4.3# ls
>> > sh: /bin/ls: Accessing a corrupted shared library sh-4.3#
>> >
>> > I've recently rebuilt bash, ncurses, readline and glibc-2.20 (with
>> > binutils 2.25+) to track down another userland issue, so that may
>> > explain why at least sh is able to run.
>>
>> Although ls and all its dependencies have the following soft-float abi
>> tag:
>> Displaying notes found at file offset 0x00000164 with length 0x00000020:
>>   Owner                 Data size       Description
>>   GNU                  0x00000010       NT_GNU_ABI_TAG (ABI version tag)
>>     OS: Linux, ABI: 2.6.32
>> Attribute Section: gnu
>> File Attributes
>>   Tag_GNU_MIPS_ABI_FP: Soft float
>
> Can you provide the output of readelf -hl for 'ls', 'init' and whatever is
> listed as the interpreter for those executables in the header output shown
> like:
>
>   INTERP         0x0000000000000238 0x0000000000400238 0x0000000000400238
>                  0x000000000000001c 0x000000000000001c  R      1
>       [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]


Here's the output, identical on all tested binaries and libs:

# readelf -hl /bin/ls
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           MIPS R3000
  Version:                           0x1
  Entry point address:               0x403f20
  Start of program headers:          52 (bytes into file)
  Start of section headers:          131784 (bytes into file)
  Flags:                             0x50001005, noreorder, cpic, o32, mips32
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         9
  Size of section headers:           40 (bytes)
  Number of section headers:         33
  Section header string table index: 32

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x00400034 0x00400034 0x00120 0x00120 R E 0x4
  INTERP         0x000154 0x00400154 0x00400154 0x0000d 0x0000d R   0x1
      [Requesting program interpreter: /lib/ld.so.1]
  REGINFO        0x000184 0x00400184 0x00400184 0x00018 0x00018 R   0x4
  LOAD           0x000000 0x00400000 0x00400000 0x1d290 0x1d290 R E 0x10000
  LOAD           0x01e000 0x0042e000 0x0042e000 0x00378 0x00fb0 RW  0x10000
  DYNAMIC        0x00019c 0x0040019c 0x0040019c 0x00140 0x00140 R   0x4
  NOTE           0x000164 0x00400164 0x00400164 0x00020 0x00020 R   0x4
  GNU_EH_FRAME   0x01cb30 0x0041cb30 0x0041cb30 0x0002c 0x0002c R   0x4
  NULL           0x000000 0x00000000 0x00000000 0x00000 0x00000     0x4

 Section to Segment mapping:
  Segment Sections...
   00
   01     .interp
   02     .reginfo
   03     .interp .note.ABI-tag .reginfo .dynamic .hash .dynsym
.dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .text
.MIPS.stubs .fini .rodata .eh_frame_hdr .eh_frame .plt
   04     .init_array .fini_array .jcr .got.plt .data .rld_map .got .sdata .bss
   05     .dynamic
   06     .note.ABI-tag
   07     .eh_frame_hdr
   08


# readelf -hl /usr/lib/systemd/systemd
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           MIPS R3000
  Version:                           0x1
  Entry point address:               0x165a0
  Start of program headers:          52 (bytes into file)
  Start of section headers:          1574780 (bytes into file)
  Flags:                             0x50001005, noreorder, cpic, o32, mips32
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         10
  Size of section headers:           40 (bytes)
  Number of section headers:         32
  Section header string table index: 31

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x00000034 0x00000034 0x00140 0x00140 R   0x4
  INTERP         0x000174 0x00000174 0x00000174 0x0000d 0x0000d R   0x1
      [Requesting program interpreter: /lib/ld.so.1]
  LOAD           0x000000 0x00000000 0x00000000 0x148bf8 0x148bf8 R E 0x10000
  LOAD           0x14ef68 0x0015ef68 0x0015ef68 0x1a788 0x1b06c RW  0x10000
  NULL           0x000000 0x00000000 0x00000000 0x00000 0x00000     0
  DYNAMIC        0x15feb0 0x0016feb0 0x0016feb0 0x00150 0x00150 RW  0x4
  NOTE           0x000184 0x00000184 0x00000184 0x00020 0x00020 R   0x4
  GNU_EH_FRAME   0x148bd4 0x00148bd4 0x00148bd4 0x00024 0x00024 R   0x4
  TLS            0x14ef68 0x0015ef68 0x0015ef68 0x00008 0x00061 R   0x8
  GNU_RELRO      0x14ef68 0x0015ef68 0x0015ef68 0x11098 0x11098 RW  0x8




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux