mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-14 05:49:57 +00:00
a4251575f4
The short version - it ain't working.
The long version:
For shared libraries made from C++ sources, configure
runs some code to determine how to link shared libraries
(from libtool.m4) using g++. In particular, it calls
g++ ${CFLAGS} -c conftest.c
g++ ${CFLAGS} -nostdinc -shared -v conftest.o
to then parse the gcc -v output.
If CFLAGS contains -pie -fpie, g++ adds Scrt1.o to the
objects being linked together to form the final output.
Once Scrt1.o is pulled into a shared library, it becomes
impossible to link this DSO against a final binary. I
didn't investigate why, by I suspect because of
-Wl,relro -Wl,now
libtool takes note of Scrt1.o (and all other libraries
added by gcc, but those don't matter here) and adds it
everywhere a shared library is being created, see
predep_objects= and postdep_objects= in the
'LIBTOOL TAG CONFIG: CXX' section.
In other words, the the shared library created during
the build can't be linked against. This includes
some applications that are part of the libdbus-c++
source tree, but also any other external user.
While I am not sure if the root of the issue is in
- gcc (should it really add Scrt1.o despite -shared),
or in
- libtool (should it filter out -pie -fpie during the
configure step), or even in
- OE (should it really be adding -pie -fpie to
everything, even shared libraries by default and
unconditionally),
we can make things work by using SECURITY_NO_PIE_CFLAGS
instead.
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This layer depends on:
URI: git://github.com/openembedded/oe-core.git
branch: master
revision: HEAD
Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe]' in the subject'
When sending single patches, please use something like:
'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe][PATCH'
You are encouraged to fork the mirror on github https://github.com/openembedded/meta-oe/ to share your patches, this is preferred for patch sets consisting of more than one patch. Other services like gitorious, repo.or.cz or self hosted setups are of course accepted as well, 'git fetch <remote>' works the same on all of them. We recommend github because it is free, easy to use, has been proven to be reliable and has a really good web GUI.
Main layer maintainer: Koen Kooi <koen@dominion.thruhere.net>
Martin Jansa <martin.jansa@gmail.com>