From: Fabrice Fontaine Date: Sat, 17 Apr 2021 10:49:19 +0000 (+0200) Subject: package/dmalloc: needs -fPIC X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=19ec872f169a851b48ba04d22432b7c0939847d4;p=buildroot.git package/dmalloc: needs -fPIC 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 Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- diff --git a/package/dmalloc/0001-add-fpic.patch b/package/dmalloc/0001-add-fpic.patch deleted file mode 100644 index 230a9e15f1..0000000000 --- a/package/dmalloc/0001-add-fpic.patch +++ /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 ---- - 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 index 0000000000..3e6b00e361 --- /dev/null +++ b/package/dmalloc/0001-mips.patch @@ -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 index 0000000000..c521a114bb --- /dev/null +++ b/package/dmalloc/0002-fix-parallel-build.patch @@ -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 + +--- 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 index 3e6b00e361..0000000000 --- a/package/dmalloc/0002-mips.patch +++ /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 index c521a114bb..0000000000 --- a/package/dmalloc/0003-fix-parallel-build.patch +++ /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 - ---- 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 index 0000000000..a99d926daf --- /dev/null +++ b/package/dmalloc/0003-fix-shlibs.patch @@ -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 + +--- 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 index a99d926daf..0000000000 --- a/package/dmalloc/0004-fix-shlibs.patch +++ /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 - ---- 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 index 0000000000..5884df6a89 --- /dev/null +++ b/package/dmalloc/0004-fix-strdup.patch @@ -0,0 +1,24 @@ +From 59d73a473f1c1a31bcba90d314f956d0bcc3de95 Mon Sep 17 00:00:00 2001 +From: Siana Gearz +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 +--- + 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 index 5884df6a89..0000000000 --- a/package/dmalloc/0005-fix-strdup.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 59d73a473f1c1a31bcba90d314f956d0bcc3de95 Mon Sep 17 00:00:00 2001 -From: Siana Gearz -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 ---- - 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 index 0000000000..a1865acb85 --- /dev/null +++ b/package/dmalloc/0005-fix-strndup.patch @@ -0,0 +1,24 @@ +From 005d92c2cebbde5c8623daa29725f7a62b18df7c Mon Sep 17 00:00:00 2001 +From: Siana Gearz +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 +--- + 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 index a1865acb85..0000000000 --- a/package/dmalloc/0006-fix-strndup.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 005d92c2cebbde5c8623daa29725f7a62b18df7c Mon Sep 17 00:00:00 2001 -From: Siana Gearz -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 ---- - 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/dmalloc.mk b/package/dmalloc/dmalloc.mk index 38b2c02027..638fe0fcda 100644 --- a/package/dmalloc/dmalloc.mk +++ b/package/dmalloc/dmalloc.mk @@ -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