This commit is contained in:
TriForceX
2019-09-25 20:51:37 -03:00
commit 6203ff3e7c
11215 changed files with 428258 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
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 ./$@
#

View File

@@ -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 */

View File

@@ -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 \

View File

@@ -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)

View File

@@ -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 */

View File

@@ -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);

View File

@@ -0,0 +1,9 @@
config BR2_PACKAGE_DMALLOC
bool "dmalloc"
help
A debug memory allocation library which is a drop in
replacement for the system's malloc, realloc, calloc, free and
other memory management routines while providing powerful
debugging facilities configurable at runtime.
http://dmalloc.com/

View File

@@ -0,0 +1,2 @@
# Locally computed:
sha256 d3be5c6eec24950cb3bd67dbfbcdf036f1278fae5fd78655ef8cdf9e911e428a dmalloc-5.5.2.tgz

View File

@@ -0,0 +1,74 @@
################################################################################
#
# dmalloc
#
################################################################################
DMALLOC_VERSION = 5.5.2
DMALLOC_SOURCE = dmalloc-$(DMALLOC_VERSION).tgz
DMALLOC_SITE = http://dmalloc.com/releases
DMALLOC_LICENSE = MIT-like
# license is in each file, dmalloc.h.1 is the smallest one
DMALLOC_LICENSE_FILES = dmalloc.h.1
DMALLOC_INSTALL_STAGING = YES
DMALLOC_CONF_OPTS = --enable-shlib
DMALLOC_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
DMALLOC_CONF_OPTS += --enable-cxx
else
DMALLOC_CONF_OPTS += --disable-cxx
endif
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
DMALLOC_CONF_OPTS += --enable-threads
else
DMALLOC_CONF_OPTS += --disable-threads
endif
# dmalloc has some assembly function that are not present in thumb1 mode:
# Error: lo register required -- `str lr,[sp,#4]'
# so, we desactivate thumb mode
ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
DMALLOC_CFLAGS += -marm
endif
ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_63261),y)
DMALLOC_CFLAGS += -O0
endif
DMALLOC_CONF_ENV = CFLAGS="$(DMALLOC_CFLAGS)"
define DMALLOC_POST_PATCH
$(SED) 's/^ac_cv_page_size=0$$/ac_cv_page_size=12/' $(@D)/configure
$(SED) 's/(ld -/($${LD-ld} -/' $(@D)/configure
$(SED) 's/'\''ld -/"$${LD-ld}"'\'' -/' $(@D)/configure
$(SED) 's/ar cr/$$(AR) cr/' $(@D)/Makefile.in
endef
DMALLOC_POST_PATCH_HOOKS += DMALLOC_POST_PATCH
# both DESTDIR and PREFIX are ignored..
define DMALLOC_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE) includedir="$(STAGING_DIR)/usr/include" \
bindir="$(STAGING_DIR)/usr/bin" \
libdir="$(STAGING_DIR)/usr/lib" \
shlibdir="$(STAGING_DIR)/usr/lib" \
infodir="$(STAGING_DIR)/usr/share/info/" \
-C $(@D) install
endef
ifeq ($(BR2_STATIC_LIBS),)
define DMALLOC_INSTALL_SHARED_LIB
cp -dpf $(STAGING_DIR)/usr/lib/libdmalloc*.so $(TARGET_DIR)/usr/lib
endef
endif
define DMALLOC_INSTALL_TARGET_CMDS
$(DMALLOC_INSTALL_SHARED_LIB)
cp -dpf $(STAGING_DIR)/usr/bin/dmalloc $(TARGET_DIR)/usr/bin/dmalloc
endef
$(eval $(autotools-package))