[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gold/14536] New: Unnecessary GOT usages
From: |
hjl.tools at gmail dot com |
Subject: |
[Bug gold/14536] New: Unnecessary GOT usages |
Date: |
Fri, 31 Aug 2012 21:11:02 +0000 |
http://sourceware.org/bugzilla/show_bug.cgi?id=14536
Bug #: 14536
Summary: Unnecessary GOT usages
Product: binutils
Version: 2.23 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: gold
AssignedTo: address@hidden
ReportedBy: address@hidden
CC: address@hidden
Classification: Unclassified
On Linux/x86, gold gives
address@hidden symbolic-6]$ cat foo.S
.text
.globl foo
.type foo, @function
foo:
ret
.size foo, .-foo
.globl _start
.type _start, @function
_start:
#ifdef __x86_64__
movq address@hidden(%rip), %rax
#else
movl address@hidden(%ecx), %eax
#endif
.size _start, .-_start
address@hidden symbolic-6]$ cat foo.t
{
global:
_start;
local:
*;
};
address@hidden symbolic-6]$ make
gcc -m32 -c -o foo.o foo.S
./ld -m elf_i386 -Bsymbolic -shared -o libfoo.so foo.o
./ld -m elf_i386 -pie -o pie foo.o
./ld -m elf_i386 -o static foo.o
./ld -m elf_i386 -shared -o shared foo.o --version-script foo.t
objdump -dw libfoo.so
libfoo.so: file format elf32-i386
Disassembly of section .text:
0000016c <foo>:
16c: c3 ret
0000016d <_start>:
16d: 8b 81 fc ff ff ff mov -0x4(%ecx),%eax
objdump -dw pie
pie: file format elf32-i386
Disassembly of section .text:
00000114 <foo>:
114: c3 ret
00000115 <_start>:
115: 8b 81 fc ff ff ff mov -0x4(%ecx),%eax
objdump -dw static
static: file format elf32-i386
Disassembly of section .text:
08048074 <foo>:
8048074: c3 ret
08048075 <_start>:
8048075: 8b 81 fc ff ff ff mov -0x4(%ecx),%eax
objdump -dw shared
shared: file format elf32-i386
Disassembly of section .text:
000000f8 <foo>:
f8: c3 ret
000000f9 <_start>:
f9: 8b 81 fc ff ff ff mov -0x4(%ecx),%eax
readelf -SW libfoo.so | grep ".got " || true
[ 7] .got PROGBITS 00001204 000204 000004 00 WA 0 0
4
readelf -SW pie | grep ".got " || true
[ 8] .got PROGBITS 000011a4 0001a4 000004 00 WA 0 0
4
readelf -SW static | grep ".got " || true
[ 2] .got PROGBITS 0804907c 00007c 000004 00 WA 0 0
4
readelf -SW shared | grep ".got " || true
[ 7] .got PROGBITS 00001180 000180 000004 00 WA 0 0
4
address@hidden symbolic-6]$
bfd linker gave
address@hidden symbolic-6]$ make LD=./ld.bfd
gcc -m32 -c -o foo.o foo.S
./ld.bfd -m elf_i386 -Bsymbolic -shared -o libfoo.so foo.o
./ld.bfd -m elf_i386 -pie -o pie foo.o
./ld.bfd -m elf_i386 -o static foo.o
./ld.bfd -m elf_i386 -shared -o shared foo.o --version-script foo.t
objdump -dw libfoo.so
libfoo.so: file format elf32-i386
Disassembly of section .text:
00000140 <foo>:
140: c3 ret
00000141 <_start>:
141: 8d 81 98 ef ff ff lea -0x1068(%ecx),%eax
objdump -dw pie
pie: file format elf32-i386
Disassembly of section .text:
00000168 <foo>:
168: c3 ret
00000169 <_start>:
169: 8d 81 98 ef ff ff lea -0x1068(%ecx),%eax
objdump -dw static
static: file format elf32-i386
Disassembly of section .text:
08048074 <foo>:
8048074: c3 ret
08048075 <_start>:
8048075: 8d 81 f8 ef ff ff lea -0x1008(%ecx),%eax
objdump -dw shared
shared: file format elf32-i386
Disassembly of section .text:
000000d0 <foo>:
d0: c3 ret
000000d1 <_start>:
d1: 8d 81 a0 ef ff ff lea -0x1060(%ecx),%eax
readelf -SW libfoo.so | grep ".got " || true
readelf -SW pie | grep ".got " || true
readelf -SW static | grep ".got " || true
readelf -SW shared | grep ".got " || true
address@hidden symbolic-6]$
The same goes for Linux/x86-64.
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
- [Bug gold/14536] New: Unnecessary GOT usages,
hjl.tools at gmail dot com <=