bug-binutils
[Top][All Lists]
Advanced

[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.



reply via email to

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