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

Bug#575451: gcc-4.5: -flto doesn't remember -fPIC



Package: gcc-4.5
Version: 4.5-20100227-1
Severity: normal
Tags: experimental

gcc-4.5 with -flto doesn't work with -fPIC properly.

Simple testcase:
int entry(int a)
{
    return bar(a)+1;
}

int bar(int a)
{
    return a+4;
}

$ gcc-4.5 foo1.c -flto -fPIC -DPIC -c
$ gcc-4.5 foo2.c -flto -fPIC -DPIC -c
$ gcc-4.5 foo1.o foo2.o -flto -shared
/usr/bin/ld: /tmp/ccmA7RCK.lto.o: relocation R_X86_64_PC32 against symbol `bar' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status

This works however:
$ gcc-4.5 foo1.o foo2.o -flto -shared -fPIC

Now -fPIC is something libtool automatically adds, and I it doesn't add it at
linktime (perhaps other build systems don't either).
Could gcc's -flto see that all .o files involved in the link are -fPIC... and
make the resulting file -fPIC too?
Or at least it should see the -shared in the linker line, and automatically use
-fPIC when -flto is used.


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.33-00175-g2d1299a0 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages gcc-4.5 depends on:
ii  binutils                2.20.1-3         The GNU assembler, linker and bina
ii  cpp-4.5                 4.5-20100227-1   The GNU C preprocessor
ii  gcc-4.5-base            4.5-20100227-1   The GNU Compiler Collection (base 
ii  libc6                   2.10.2-6         Embedded GNU C Library: Shared lib
ii  libcloog-ppl0           0.15.8-1         the Chunky Loop Generator (runtime
ii  libelfg0                0.8.12-0.1       an ELF object file access library
ii  libgcc1                 1:4.5-20100227-1 GCC support library
ii  libgmp3c2               2:4.3.2+dfsg-1   Multiprecision arithmetic library
ii  libgmpxx4ldbl           2:4.3.2+dfsg-1   Multiprecision arithmetic library 
ii  libgomp1                4.5-20100227-1   GCC OpenMP (GOMP) support library
ii  libmpc2                 0.8.1-1          multiple precision complex floatin
ii  libmpfr1ldbl            2.4.2-3          multiple precision floating-point 
ii  libppl-c2               0.10.2-6         Parma Polyhedra Library (C interfa
ii  libppl7                 0.10.2-6         Parma Polyhedra Library (runtime l
ii  zlib1g                  1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages gcc-4.5 recommends:
ii  libc6-dev                     2.10.2-6   Embedded GNU C Library: Developmen

Versions of packages gcc-4.5 suggests:
pn  gcc-4.5-doc                   <none>     (no description available)
pn  gcc-4.5-locales               <none>     (no description available)
pn  gcc-4.5-multilib              <none>     (no description available)
pn  libgcc1-dbg                   <none>     (no description available)
pn  libgomp1-dbg                  <none>     (no description available)
pn  libmudflap0-4.5-dev           <none>     (no description available)
pn  libmudflap0-dbg               <none>     (no description available)

-- no debconf information



Reply to: