This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Differentiate b/w dynamic and static executables.
- From: Umesh Kalappa <umesh dot kalappa0 at gmail dot com>
- To: Binutils <binutils at sourceware dot org>
- Date: Thu, 26 Dec 2019 19:16:49 +0530
- Subject: Differentiate b/w dynamic and static executables.
Hi All,
We have a situation, where we defined the program segments like in the
linker script
PHDRS
{
headers PT_PHDR PHDRS ;
interp PT_INTERP ;
text PT_LOAD FILEHDR PHDRS ;
data PT_LOAD ;
tls PT_TLS ;
dynamic PT_DYNAMIC ;
note PT_NOTE ;
stack PT_GNU_STACK FLAGS(6);
}
for the static executable, where we don't need PT_DYNAMIC segment, but
still the final executable has the program segments like
Elf file type is EXEC (Executable file)
Entry point 0x2000037f1
There are 8 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz
MemSiz Flg Align
PHDR 0x000040 0x0000000200000040 0x0000000200000040 0x0001c0
0x0001c0 R 0x8
INTERP 0x000200 0x0000000200000200 0x0000000200000200 0x00000f
0x00000f R 0x1
[Requesting program interpreter: /lib/ld64.so.1]
LOAD 0x000000 0x0000000200000000 0x0000000200000000 0x011100
0x011100 R E 0x1000
LOAD 0x011fd0 0x0000000200013fd0 0x0000000200013fd0 0x000330
0x000898 RW 0x1000
TLS 0x000000 0x0000000000000000 0x0000000000000000 0x000000
0x000000 0x8
DYNAMIC 0x000000 0x0000000000000000 0x0000000000000000 0x000000
0x000000 0x8
readelf: Warning: the .dynamic section is not contained within the dynamic
segment
NOTE 0x000000 0x0000000000000000 0x0000000000000000 0x000000
0x000000 0x8
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000
0x000000 RW 0x8
Version used :
GNU ld (GNU Binutils) 2.33.1
Copyright (C) 2019 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.
$file final.exe
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked,
interpreter *empty*, not stripped
the same script used both static and dynamic executables, one solution
would be like have two scripts with PT_DYNAMIC and without.
But any inputs or suggestions, how we can use the unified script for both
static and dynamic executables?
Thank you
~Umesh