[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.
- [Bug gold/19392] New: Second PT_LOAD starts before the first section in some cases,
mh-sourceware at glandium dot org <=