package/dmalloc: needs -fPIC
authorFabrice Fontaine <fontaine.fabrice@gmail.com>
Sat, 17 Apr 2021 10:49:19 +0000 (12:49 +0200)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Sat, 1 May 2021 13:04:30 +0000 (15:04 +0200)
Drop first patch and pass -fPIC to configure to fix the following build
failure on ARC:

ERROR: architecture for "/usr/lib/libdmalloc.so" is "ARCompact", should be "ARCv2"
ERROR: architecture for "/usr/lib/libdmallocth.so" is "ARCompact", should be "ARCv2"
ERROR: architecture for "/usr/lib/libdmallocthcxx.so" is "ARCompact", should be "ARCv2"
ERROR: architecture for "/usr/lib/libdmallocxx.so" is "ARCompact", should be "ARCv2"

This build failure is due to the following configure error:

checking shared library link args... ./configure: line 4467: 10229 Segmentation fault      ( ${LD-ld} -shared --whole-archive -soname conftest.so -o conftest.so.t conftest.a ) 2>&5
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld -G -o $@.t

This configure error is due to missing -fPIC:

configure:4392: checking shared library link args
configure:4398: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os -g2  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4404: $? = 0
configure:4408: test -z
 || test ! -s conftest.err
configure:4411: $? = 0
configure:4414: test -s conftest.o
configure:4417: $? = 0
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: conftest.a(conftest.o): relocation R_ARC_32_ME against `__stack_chk_guard' can not be used when making a shared object; recompile with -fPIC
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: BFD (GNU Binutils) 2.33.50.20191002 assertion fail elf32-arc.c:1805
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: unrecognized option '-all'
/home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld: use the --help option for usage information
configure:4475: result: /home/buildroot/autobuild/run/instance-0/output-1/host/bin/arc-buildroot-linux-gnu-ld -G -o $@.t

Fixes:
 - http://autobuild.buildroot.org/results/65677d889c27649e1f3ca1f3b6c70df7c89779f6

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
12 files changed:
package/dmalloc/0001-add-fpic.patch [deleted file]
package/dmalloc/0001-mips.patch [new file with mode: 0644]
package/dmalloc/0002-fix-parallel-build.patch [new file with mode: 0644]
package/dmalloc/0002-mips.patch [deleted file]
package/dmalloc/0003-fix-parallel-build.patch [deleted file]
package/dmalloc/0003-fix-shlibs.patch [new file with mode: 0644]
package/dmalloc/0004-fix-shlibs.patch [deleted file]
package/dmalloc/0004-fix-strdup.patch [new file with mode: 0644]
package/dmalloc/0005-fix-strdup.patch [deleted file]
package/dmalloc/0005-fix-strndup.patch [new file with mode: 0644]
package/dmalloc/0006-fix-strndup.patch [deleted file]
package/dmalloc/dmalloc.mk

diff --git a/package/dmalloc/0001-add-fpic.patch b/package/dmalloc/0001-add-fpic.patch
deleted file mode 100644 (file)
index 230a9e1..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-Without -fPIC, dmalloc does not build with:
-
-/home/test/mips-4.4/bin/mips-linux-gnu-ld --sysroot=/home/test/outputs/test-35/staging -shared --whole-archive -soname libdmallocxx.so -o libdmallocxx.so.t libdmallocxx.a
-/home/test/mips-4.4/bin/mips-linux-gnu-ld: libdmalloc.a(arg_check.o): relocation R_MIPS_HI16 against `_dmalloc_flags' can not be used when making a shared object; recompile with -fPIC
-libdmalloc.a(arg_check.o): could not read symbols: Bad value
-
-This patch, taken from
-http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/dmalloc/files/dmalloc-5.2.4-fpic.patch?hideattic=0&view=markup,
-fixes the problem by passing the -fPIC flag. It isn't passed through
-the ./configure environment in order to not clutter the configuration
-cache with incorrect values.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
- Makefile.in |   10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -318,17 +318,17 @@
- # special _th versions of objects with the LOCK_THREADS variable defined to 1
- chunk_th.o : $(srcdir)/chunk.c
-       rm -f $@
--      $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \
-+      $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \
-               -c $(srcdir)/chunk.c -o ./$@
- error_th.o : $(srcdir)/error.c
-       rm -f $@
--      $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \
-+      $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \
-               -c $(srcdir)/error.c -o ./$@
- malloc_th.o : $(srcdir)/malloc.c
-       rm -f $@
--      $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \
-+      $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \
-               -c $(srcdir)/malloc.c -o ./$@
- tests : $(TEST) $(TEST_FC)
-@@ -360,7 +360,7 @@
- .c.o :
-       rm -f $@
--      $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
-+      $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
- #
- # .cc.o auto-target doesn't work on some systems. 
-@@ -368,7 +368,7 @@
- #
- dmallocc.o : $(srcdir)/dmallocc.cc
-       rm -f $@
--      $(CXX) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc \
-+      $(CXX) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc \
-               -o ./$@
- #
diff --git a/package/dmalloc/0001-mips.patch b/package/dmalloc/0001-mips.patch
new file mode 100644 (file)
index 0000000..3e6b00e
--- /dev/null
@@ -0,0 +1,43 @@
+--- a/configure
++++ b/configure
+@@ -7107,7 +7107,7 @@
+ echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+    cat >>confdefs.h <<\_ACEOF
+-#define RETURN_MACROS_WORK 0
++#define RETURN_MACROS_WORK 1
+ _ACEOF
+  echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+--- a/return.h
++++ b/return.h
+@@ -106,26 +106,16 @@
+ /*************************************/
+ /*
+- * For DEC Mips machines running Ultrix
++ * For Mips machines running Linux
+  */
+ #if __mips
+ /*
+- * I have no idea how to get inline assembly with the default cc.
+- * Anyone know how?
+- */
+-
+-#if 0
+-
+-/*
+  * NOTE: we assume here that file is global.
+  *
+- * $31 is the frame pointer.  $2 looks to be the return address but maybe
+- * not consistently.
++ * $31 is the return address.
+  */
+-#define GET_RET_ADDR(file)    asm("sw $2, file")
+-
+-#endif
++#define GET_RET_ADDR(file)    asm("sw $31, %0" : "=m" (file))
+ #endif /* __mips */
diff --git a/package/dmalloc/0002-fix-parallel-build.patch b/package/dmalloc/0002-fix-parallel-build.patch
new file mode 100644 (file)
index 0000000..c521a11
--- /dev/null
@@ -0,0 +1,18 @@
+Fix parallel build issue
+
+Missing dmallocc.o <- dmalloc.h dependency may break parallel builds.
+dmalloc.h is generated,and may not be around by the time gcc starts
+parsing dmallocc.cc.
+
+Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -401,6 +401,7 @@
+ compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h
+ dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \
+   debug_tok.h dmalloc_loc.h env.h error_val.h version.h
++dmallocc.o: dmallocc.cc dmalloc.h return.h conf.h settings.h
+ dmalloc_argv.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \
+   dmalloc_argv_loc.h compat.h
+ dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \
diff --git a/package/dmalloc/0002-mips.patch b/package/dmalloc/0002-mips.patch
deleted file mode 100644 (file)
index 3e6b00e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
---- a/configure
-+++ b/configure
-@@ -7107,7 +7107,7 @@
- echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6
- if test "$cross_compiling" = yes; then
-    cat >>confdefs.h <<\_ACEOF
--#define RETURN_MACROS_WORK 0
-+#define RETURN_MACROS_WORK 1
- _ACEOF
-  echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
---- a/return.h
-+++ b/return.h
-@@ -106,26 +106,16 @@
- /*************************************/
- /*
-- * For DEC Mips machines running Ultrix
-+ * For Mips machines running Linux
-  */
- #if __mips
- /*
-- * I have no idea how to get inline assembly with the default cc.
-- * Anyone know how?
-- */
--
--#if 0
--
--/*
-  * NOTE: we assume here that file is global.
-  *
-- * $31 is the frame pointer.  $2 looks to be the return address but maybe
-- * not consistently.
-+ * $31 is the return address.
-  */
--#define GET_RET_ADDR(file)    asm("sw $2, file")
--
--#endif
-+#define GET_RET_ADDR(file)    asm("sw $31, %0" : "=m" (file))
- #endif /* __mips */
diff --git a/package/dmalloc/0003-fix-parallel-build.patch b/package/dmalloc/0003-fix-parallel-build.patch
deleted file mode 100644 (file)
index c521a11..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Fix parallel build issue
-
-Missing dmallocc.o <- dmalloc.h dependency may break parallel builds.
-dmalloc.h is generated,and may not be around by the time gcc starts
-parsing dmallocc.cc.
-
-Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -401,6 +401,7 @@
- compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h
- dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \
-   debug_tok.h dmalloc_loc.h env.h error_val.h version.h
-+dmallocc.o: dmallocc.cc dmalloc.h return.h conf.h settings.h
- dmalloc_argv.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \
-   dmalloc_argv_loc.h compat.h
- dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \
diff --git a/package/dmalloc/0003-fix-shlibs.patch b/package/dmalloc/0003-fix-shlibs.patch
new file mode 100644 (file)
index 0000000..a99d926
--- /dev/null
@@ -0,0 +1,46 @@
+Fix shared library rules
+
+dmalloc uses ld -shared --whole-archive -o lib.so lib.a,
+but for some reason lists regular objects in addition
+to the archive, ending up with two copies of each symbol.
+
+Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -257,7 +257,7 @@ shlib : $(BUILD_SL)
+ # via: http://256.com/gray/email.html
+ $(LIB_SL) : $(LIBRARY)
+       rm -f $@ $@.t
+-      @shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS)
++      @shlinkargs@ $(LIBRARY)
+       mv $@.t $@
+ $(LIBRARY) : $(OBJS) $(NORMAL_OBJS)
+@@ -270,7 +270,7 @@ $(LIB_TH) : $(OBJS) $(THREAD_OBJS)
+ $(LIB_TH_SL) : $(LIB_TH)
+       rm -f $@ $@.t
+-      @shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS)
++      @shlinkargs@ $(LIB_TH)
+       mv $@.t $@
+ $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
+@@ -279,7 +279,7 @@ $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
+ $(LIB_CXX_SL) : $(LIB_CXX)
+       rm -f $@ $@.t
+-      @shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
++      @shlinkargs@ $(LIB_CXX)
+       mv $@.t $@
+ $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
+@@ -288,7 +288,7 @@ $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
+ $(LIB_TH_CXX_SL) : $(LIB_TH_CXX)
+       rm -f $@ $@.t
+-      @shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
++      @shlinkargs@ $(LIB_TH_CXX)
+       mv $@.t $@
+ threadssl : $(LIB_TH_SL)
diff --git a/package/dmalloc/0004-fix-shlibs.patch b/package/dmalloc/0004-fix-shlibs.patch
deleted file mode 100644 (file)
index a99d926..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-Fix shared library rules
-
-dmalloc uses ld -shared --whole-archive -o lib.so lib.a,
-but for some reason lists regular objects in addition
-to the archive, ending up with two copies of each symbol.
-
-Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -257,7 +257,7 @@ shlib : $(BUILD_SL)
- # via: http://256.com/gray/email.html
- $(LIB_SL) : $(LIBRARY)
-       rm -f $@ $@.t
--      @shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS)
-+      @shlinkargs@ $(LIBRARY)
-       mv $@.t $@
- $(LIBRARY) : $(OBJS) $(NORMAL_OBJS)
-@@ -270,7 +270,7 @@ $(LIB_TH) : $(OBJS) $(THREAD_OBJS)
- $(LIB_TH_SL) : $(LIB_TH)
-       rm -f $@ $@.t
--      @shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS)
-+      @shlinkargs@ $(LIB_TH)
-       mv $@.t $@
- $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
-@@ -279,7 +279,7 @@ $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
- $(LIB_CXX_SL) : $(LIB_CXX)
-       rm -f $@ $@.t
--      @shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
-+      @shlinkargs@ $(LIB_CXX)
-       mv $@.t $@
- $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
-@@ -288,7 +288,7 @@ $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
- $(LIB_TH_CXX_SL) : $(LIB_TH_CXX)
-       rm -f $@ $@.t
--      @shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
-+      @shlinkargs@ $(LIB_TH_CXX)
-       mv $@.t $@
- threadssl : $(LIB_TH_SL)
diff --git a/package/dmalloc/0004-fix-strdup.patch b/package/dmalloc/0004-fix-strdup.patch
new file mode 100644 (file)
index 0000000..5884df6
--- /dev/null
@@ -0,0 +1,24 @@
+From 59d73a473f1c1a31bcba90d314f956d0bcc3de95 Mon Sep 17 00:00:00 2001
+From: Siana Gearz <siana.sg@live.de>
+Date: Sat, 8 Sep 2012 22:55:17 +0200
+Subject: [PATCH] Fix strdup
+
+[Retrieved from:
+https://github.com/siana/dmalloc/commit/59d73a473f1c1a31bcba90d314f956d0bcc3de95]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ dmalloc.h.3 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dmalloc.h.3 b/dmalloc.h.3
+index d3d1c13..3fc573a 100644
+--- a/dmalloc.h.3
++++ b/dmalloc.h.3
+@@ -459,6 +459,7 @@ DMALLOC_PNT        valloc(DMALLOC_SIZE size);
+  *
+  * string -> String we are duplicating.
+  */
++#undef strdup
+ extern
+ char  *strdup(const char *string);
+ #endif /* ifndef DMALLOC_STRDUP_MACRO */
diff --git a/package/dmalloc/0005-fix-strdup.patch b/package/dmalloc/0005-fix-strdup.patch
deleted file mode 100644 (file)
index 5884df6..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-From 59d73a473f1c1a31bcba90d314f956d0bcc3de95 Mon Sep 17 00:00:00 2001
-From: Siana Gearz <siana.sg@live.de>
-Date: Sat, 8 Sep 2012 22:55:17 +0200
-Subject: [PATCH] Fix strdup
-
-[Retrieved from:
-https://github.com/siana/dmalloc/commit/59d73a473f1c1a31bcba90d314f956d0bcc3de95]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- dmalloc.h.3 | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/dmalloc.h.3 b/dmalloc.h.3
-index d3d1c13..3fc573a 100644
---- a/dmalloc.h.3
-+++ b/dmalloc.h.3
-@@ -459,6 +459,7 @@ DMALLOC_PNT        valloc(DMALLOC_SIZE size);
-  *
-  * string -> String we are duplicating.
-  */
-+#undef strdup
- extern
- char  *strdup(const char *string);
- #endif /* ifndef DMALLOC_STRDUP_MACRO */
diff --git a/package/dmalloc/0005-fix-strndup.patch b/package/dmalloc/0005-fix-strndup.patch
new file mode 100644 (file)
index 0000000..a1865ac
--- /dev/null
@@ -0,0 +1,24 @@
+From 005d92c2cebbde5c8623daa29725f7a62b18df7c Mon Sep 17 00:00:00 2001
+From: Siana Gearz <siana.sg@live.de>
+Date: Sat, 8 Sep 2012 22:44:35 +0200
+Subject: [PATCH] Fix strndup
+
+[Retrieved from:
+https://github.com/siana/dmalloc/commit/005d92c2cebbde5c8623daa29725f7a62b18df7c]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ dmalloc.h.3 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dmalloc.h.3 b/dmalloc.h.3
+index 8bda997..fb538a8 100644
+--- a/dmalloc.h.3
++++ b/dmalloc.h.3
+@@ -429,6 +429,7 @@ char       *strdup(const char *string);
+  *
+  * len -> Length of the string to duplicate.
+  */
++#undef strndup
+ extern
+ char  *strndup(const char *string, const DMALLOC_SIZE len);
diff --git a/package/dmalloc/0006-fix-strndup.patch b/package/dmalloc/0006-fix-strndup.patch
deleted file mode 100644 (file)
index a1865ac..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-From 005d92c2cebbde5c8623daa29725f7a62b18df7c Mon Sep 17 00:00:00 2001
-From: Siana Gearz <siana.sg@live.de>
-Date: Sat, 8 Sep 2012 22:44:35 +0200
-Subject: [PATCH] Fix strndup
-
-[Retrieved from:
-https://github.com/siana/dmalloc/commit/005d92c2cebbde5c8623daa29725f7a62b18df7c]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- dmalloc.h.3 | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/dmalloc.h.3 b/dmalloc.h.3
-index 8bda997..fb538a8 100644
---- a/dmalloc.h.3
-+++ b/dmalloc.h.3
-@@ -429,6 +429,7 @@ char       *strdup(const char *string);
-  *
-  * len -> Length of the string to duplicate.
-  */
-+#undef strndup
- extern
- char  *strndup(const char *string, const DMALLOC_SIZE len);
index 38b2c020271f2ed607facacd720fd675c55b02eb..638fe0fcda7d9e83ad035188085fb818ec4b6ff2 100644 (file)
@@ -16,6 +16,10 @@ DMALLOC_INSTALL_STAGING = YES
 DMALLOC_CONF_OPTS = --enable-shlib
 DMALLOC_CFLAGS = $(TARGET_CFLAGS)
 
+ifeq ($(BR2_STATIC_LIBS),)
+DMALLOC_CFLAGS += -fPIC
+endif
+
 ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
 DMALLOC_CONF_OPTS += --enable-cxx
 else