[GHC] #10779: .so files in 64-bit Debian builds are 4% larger than they have to be

GHC ghc-devs at haskell.org
Wed Aug 19 15:09:39 UTC 2015


#10779: .so files in 64-bit Debian builds are 4% larger than they have to be
-------------------------------------+-------------------------------------
        Reporter:  thomie            |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  low               |               Milestone:
       Component:  Build System      |                 Version:  7.10.2
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by thomie):

 Note the following differences below (I don't know what any of this
 means):
 * filepath-debian.so contains the program header `GNU_EH_FRAME` instead of
 `GNU_RELRO`.
 * filepath-debian.so is missing the section to segment mapping for segment
 05 (.init_array .fini_array .jcr .dynamic .got).

 {{{
 $ readelf --program-headers filepath-ubuntu.so

 Elf file type is DYN (Shared object file)
 Entry point 0xcac0
 There are 6 program headers, starting at offset 64

 Program Headers:
   Type           Offset             VirtAddr           PhysAddr
                  FileSiz            MemSiz              Flags  Align
   LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x000000000001b884 0x000000000001b884  R E    200000
   LOAD           0x000000000001bbe8 0x000000000021bbe8 0x000000000021bbe8
                  0x0000000000001e30 0x0000000000001e38  RW     200000
   DYNAMIC        0x000000000001bc00 0x000000000021bc00 0x000000000021bc00
                  0x0000000000000270 0x0000000000000270  RW     8
   NOTE           0x0000000000000190 0x0000000000000190 0x0000000000000190
                  0x0000000000000024 0x0000000000000024  R      4
   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x0000000000000000 0x0000000000000000  RW     10
   GNU_RELRO      0x000000000001bbe8 0x000000000021bbe8 0x000000000021bbe8
                  0x0000000000000418 0x0000000000000418  R      1

  Section to Segment mapping:
   Segment Sections...
    00     .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version
 .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata
 .eh_frame
    01     .init_array .fini_array .jcr .dynamic .got .got.plt .data .bss
    02     .dynamic
    03     .note.gnu.build-id
    04
    05     .init_array .fini_array .jcr .dynamic .got
 }}}

 {{{
 $ readelf --program-headers filepath-debian.so

 Elf file type is DYN (Shared object file)
 Entry point 0xd480
 There are 6 program headers, starting at offset 64

 Program Headers:
   Type           Offset             VirtAddr           PhysAddr
                  FileSiz            MemSiz              Flags  Align
   LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x000000000001c2b4 0x000000000001c2b4  R E    200000
   LOAD           0x000000000001d000 0x000000000021d000 0x000000000021d000
                  0x0000000000001e38 0x0000000000001e40  RW     200000
   DYNAMIC        0x000000000001d018 0x000000000021d018 0x000000000021d018
                  0x0000000000000280 0x0000000000000280  RW     8
   NOTE           0x0000000000000190 0x0000000000000190 0x0000000000000190
                  0x0000000000000024 0x0000000000000024  R      4
   GNU_EH_FRAME   0x000000000001c258 0x000000000001c258 0x000000000001c258
                  0x0000000000000014 0x0000000000000014  R      4
   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x0000000000000000 0x0000000000000000  RW     8

  Section to Segment mapping:
   Segment Sections...
    00     .note.gnu.build-id .hash .gnu.hash .dynsym .dynstr .gnu.version
 .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata
 .eh_frame_hdr .eh_frame
    01     .init_array .fini_array .jcr .dynamic .got .got.plt .data .bss
    02     .dynamic
    03     .note.gnu.build-id
    04     .eh_frame_hdr
    05
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10779#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list