On 03/06/2016 04:50 AM, Oron Peled wrote:
Hi,

On Saturday 05 March 2016 18:07:48 sean darcy wrote:
...
Running standard Fedora 23.

Me too (but didn't use it for RPM build).

Here's the bootstrap and configure in the rpm build:
...
+ LDFLAGS='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld'

Bingo. A failure can now be achieved by:
    ./configure LDFLAGS='-specs=/usr/lib/rpm/redhat/redhat-hardened-ld'

FWIW, if -fPIC is not in CFLAGS the .configure compiler check fails:
configure:3875: checking whether we are cross compiling
configure:3883: gcc -o conftest -O2 -march=native -mtune=native
-ftree-vectorize -ffast-math  -Wl,-z,relro
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld conftest.c  >&5
/usr/bin/ld: /tmp/cciqZ1hg.o: relocation R_X86_64_32 against
`.rodata.str1.1' can not be used when making a shared object; recompile with 
-fPIC
/tmp/cciqZ1hg.o: error adding symbols: Bad value

OK, the /usr/lib/rpm/redhat/redhat-hardended-ld contain:
   *self_spec:
   + %{!shared:%{!r:-pie}}
   *link:
   + -z now

So generating a "pie" (Position-Independent-Executable) logically require
linking object files compiled with -fPIC (Position-Independent-Code)
just like a shared library.

Now I add '-fPIC' (and --with-dahdi=..., so configure can complete):
    ./configure LDFLAGS='-specs=/usr/lib/rpm/redhat/redhat-hardened-ld' 
CFLAGS=-fPIC --with-dahdi=$PWD/../linux

And it pass the ./configure step.

However, with the original Makefile.am any executable we try to link fails
with the same error as the previous "conftest". By running "make V=1"
we can verify that the "-fPIC" isn't passed to the compiler.

Replacing in Makefile.am "CFLAGS = ..." with "CFLAGS += ..." fixed the bug.

I'll bet that until now this bug caused many compilations to pass with
wrong (but non-fatal) CFLAGS.

Thanks,


Interestingly, fedora koji doesn't need -fPIC to build dahdi-tools (at least 2.10.0, the latest package), even though LDFLAGS includes -specs=/usr/lib/rpm/redhat/redhat-hardened-ld

https://kojipkgs.fedoraproject.org//packages/dahdi-tools/2.10.0/6.fc23/data/logs/x86_64/build.log

sean




--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to