From 3c630f207bf527977150ef59659b8d0b573f26c3 Mon Sep 17 00:00:00 2001 From: Giulio Benetti Date: Sun, 19 Dec 2021 08:03:32 +0100 Subject: [PATCH] package/erlang-rebar: fix linking failure on shared library Add patch to fix linking failure while creating shared library. As explained in the patch itself, there is no specific variable for when we link a shared library and rebar itself rely on the default LDFLAGS. Since by default every CFLAGS is filled with -fPIC we need to make sure that every LDFLAGS is the same, so not having any other *_LDFLAGS variable to fille with -fPIC let's add it to the main LDFLAGS. Fixes: http://autobuild.buildroot.net/results/602/60296a48210e7ffc6bc9fa50ee586441a8957e85/ Signed-off-by: Giulio Benetti Signed-off-by: Yann E. MORIN (cherry picked from commit b00c034fe58ad2ae87b2289e07912b6c10d19ee1) Signed-off-by: Peter Korsgaard --- ...ompiler-add-fPIC-to-LDFLAGS-by-defau.patch | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch diff --git a/package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch b/package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch new file mode 100644 index 0000000000..a9c1670a1f --- /dev/null +++ b/package/erlang-rebar/0001-src-rebar_port_compiler-add-fPIC-to-LDFLAGS-by-defau.patch @@ -0,0 +1,35 @@ +From 7f54d48ee5db037778ead310e0b8278f3fe70b41 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Sun, 19 Dec 2021 07:52:55 +0100 +Subject: [PATCH] src/rebar_port_compiler: add -fPIC to LDFLAGS by default + +Since both DRV_CFLAGS and EXE_CFLAGS list -fPIC we need also the LDFLAGS +to follow them. Unfortunately adding -fPIC only to DRV_LDFLAGS and +EXE_LDFLAGS is not sufficient, since when linking as a library(.so) it +doesn't take into account those variables. Since -fPIC is needed by default +by any kind of linking, let's add it to the general -fPIC. Rebar seems to +link libraries without taking into account any variable listed in: +src/rebar_port_compiler.erl +this after testing and tracing for every variable. + +Signed-off-by: Giulio Benetti +--- + src/rebar_port_compiler.erl | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl +index 9679c80..bd08b21 100644 +--- a/src/rebar_port_compiler.erl ++++ b/src/rebar_port_compiler.erl +@@ -645,6 +645,8 @@ default_env() -> + {"OBJCOPY", get_tool(Arch, "objcopy", "objcopy")}, + {"OBJDUMP", get_tool(Arch, "objdump", "objdump")}, + ++ {"LDFLAGS", "-fPIC $LDFLAGS"}, ++ + {"DRV_CXX_TEMPLATE", + "$CXX -c $CXXFLAGS $DRV_CFLAGS $PORT_IN_FILES -o $PORT_OUT_FILE"}, + {"DRV_CC_TEMPLATE", +-- +2.25.1 +