diff mbox

[v3] BINFMT_FLAT_SHARED: is not really shared for buildroot purposes

Message ID 1427490623-24292-1-git-send-email-arnout@mind.be
State Accepted
Headers show

Commit Message

Arnout Vandecappelle March 27, 2015, 9:10 p.m. UTC
From: Sonic Zhang <sonic.zhang@analog.com>

Although BINFMT_FLAT_SHARED is indeed a shared library format, it does
not support dynamic library loading with dlopen(). So for buildroot
purposes, BR2_STATIC_LIBS shouldn't be selected.

As it happens, the compiler options that are added for
BINFMT_FLAT_SHARED also make the compiler ignore the -static option, so
we can simply force BR2_STATIC_LIBS and things work out perfectly.

Therefore, remove the select of BR2_BINFMT_SUPPORTS_SHARED from
BINFMT_FLAT_SHARED, which in turn makes sure that BR2_STATIC_LIBS is
selected.

[Arnout: rewrite commit message, add explanatory comment]

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
v3 (Arnout): Remove accidentally added unrelated part.

v2 (Arnout): rewrite commit message, add explanatory comment.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
 arch/Config.in | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni March 30, 2015, 9:08 p.m. UTC | #1
Dear Arnout Vandecappelle (Essensium/Mind),

On Fri, 27 Mar 2015 22:10:23 +0100, Arnout Vandecappelle
(Essensium/Mind) wrote:
> From: Sonic Zhang <sonic.zhang@analog.com>
> 
> Although BINFMT_FLAT_SHARED is indeed a shared library format, it does
> not support dynamic library loading with dlopen(). So for buildroot
> purposes, BR2_STATIC_LIBS shouldn't be selected.
> 
> As it happens, the compiler options that are added for
> BINFMT_FLAT_SHARED also make the compiler ignore the -static option, so
> we can simply force BR2_STATIC_LIBS and things work out perfectly.
> 
> Therefore, remove the select of BR2_BINFMT_SUPPORTS_SHARED from
> BINFMT_FLAT_SHARED, which in turn makes sure that BR2_STATIC_LIBS is
> selected.
> 
> [Arnout: rewrite commit message, add explanatory comment]
> 
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

Applied, thanks.

Thomas
diff mbox

Patch

diff --git a/arch/Config.in b/arch/Config.in
index 16ad8be..59bf84a 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -295,7 +295,12 @@  config BR2_BINFMT_FLAT_SEP_DATA
 
 config BR2_BINFMT_FLAT_SHARED
 	bool "Shared binary"
-	select BR2_BINFMT_SUPPORTS_SHARED
+	# Even though this really generates shared binaries, there is no libdl
+	# and dlopen() cannot be used. So packages that require shared
+	# libraries cannot be built. Therefore, we don't select
+	# BR2_BINFMT_SUPPORTS_SHARED and therefore force BR2_STATIC_LIBS.
+	# Although this adds -static to the compilation, that's not a problem
+	# because the -mid-shared-library option overrides it.
 	help
 	  Allow to load and link indiviual FLAT binaries at run time.