bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/19392] New: Second PT_LOAD starts before the first section in


From: mh-sourceware at glandium dot org
Subject: [Bug gold/19392] New: Second PT_LOAD starts before the first section in some cases
Date: Tue, 22 Dec 2015 00:21:39 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=19392

            Bug ID: 19392
           Summary: Second PT_LOAD starts before the first section in some
                    cases
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: mh-sourceware at glandium dot org
                CC: ian at airs dot com
  Target Milestone: ---

$ gold --version
GNU gold (GNU Binutils for Debian 2.25.90.20151209) 1.11
Copyright (C) 2015 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

$ cat > test.c <<EOF
void foo() {}
EOF
$ gcc -shared -o test.so test.c -fuse-ld=gold -nostartfiles
$ readelf -Sl test.so
There are 16 section headers, starting at offset 0x598:

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .note.gnu.build-i NOTE             00000000000001c8  000001c8
       0000000000000024  0000000000000000   A       0     0     4
  [ 2] .dynsym           DYNSYM           00000000000001f0  000001f0
       0000000000000078  0000000000000018   A       3     1     8
  [ 3] .dynstr           STRTAB           0000000000000268  00000268
       0000000000000027  0000000000000000   A       0     0     1
  [ 4] .gnu.hash         GNU_HASH         0000000000000290  00000290
       0000000000000034  0000000000000000   A       2     0     8
  [ 5] .text             PROGBITS         00000000000002c4  000002c4
       0000000000000007  0000000000000000  AX       0     0     1
  [ 6] .eh_frame         PROGBITS         00000000000002d0  000002d0
       0000000000000038  0000000000000000   A       0     0     8
  [ 7] .eh_frame_hdr     PROGBITS         0000000000000308  00000308
       0000000000000014  0000000000000000   A       0     0     4
  [ 8] .dynamic          DYNAMIC          0000000000001320  00000320
       00000000000000c0  0000000000000010  WA       3     0     8
  [ 9] .data             PROGBITS         00000000000013e0  000003e0
       0000000000000000  0000000000000000  WA       0     0     1
  [10] .bss              NOBITS           00000000000013e0  000003e0
       0000000000000000  0000000000000000  WA       0     0     1
  [11] .comment          PROGBITS         0000000000000000  000003e0
       0000000000000027  0000000000000001  MS       0     0     1
  [12] .note.gnu.gold-ve NOTE             0000000000000000  00000408
       000000000000001c  0000000000000000           0     0     4
  [13] .symtab           SYMTAB           0000000000000000  00000428
       00000000000000a8  0000000000000018          14     3     8
  [14] .strtab           STRTAB           0000000000000000  000004d0
       000000000000002d  0000000000000000           0     0     1
  [15] .shstrtab         STRTAB           0000000000000000  000004fd
       000000000000009a  0000000000000000           0     0     1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

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

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x0000000000000040 0x0000000000000040
                 0x0000000000000188 0x0000000000000188  R      8
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x000000000000031c 0x000000000000031c  R E    1000
  LOAD           0x000000000000031c 0x000000000000131c 0x000000000000131c
                 0x00000000000000c4 0x00000000000000c4  RW     1000
  DYNAMIC        0x0000000000000320 0x0000000000001320 0x0000000000001320
                 0x00000000000000c0 0x00000000000000c0  RW     8
  NOTE           0x00000000000001c8 0x00000000000001c8 0x00000000000001c8
                 0x0000000000000024 0x0000000000000024  R      4
  GNU_EH_FRAME   0x0000000000000308 0x0000000000000308 0x0000000000000308
                 0x0000000000000014 0x0000000000000014  R      4
  GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0

 Section to Segment mapping:
  Segment Sections...
   00     
   01     .note.gnu.build-id .dynsym .dynstr .gnu.hash .text .eh_frame
.eh_frame_hdr 
   02     .dynamic 
   03     .dynamic 
   04     .note.gnu.build-id 
   05     .eh_frame_hdr 
   06    

The relevant parts are that the second PT_LOAD starts at 0x31c and contains
.dynamic, which starts at 0x320. It fortunately compensates on the size to end
at the right address.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]