[Ltrace-devel] [PATCH for-0.7.0] mips: Workaround for breakage in breakpoint_for_symbol()

Sedat Dilek sedat.dilek at gmail.com
Sat Nov 10 10:36:57 UTC 2012


Unfortunately, builds for the MIPS arch are known to be BROKEN (see [1])!

The ifdefs as suggested by Petr (ltrace maintainer) do not work on my system!
 ...
 #ifdef __mips__ <--- This ifdef was used in previous releases.
 #ifdef __mips   <--- Should be OK, too (see my checks below).
 ...
 #endif

The cpp and gcc binaries from my own built cross-toolchain seem to be OK.

 GCC_VER="4.7.2-RC-20120914"
 UCLIBC_VER="0.9.33.2"
 BUILD_DIR="$HOME/src/freetz/freetz-git"

 CROSS_TOOLCHAIN_BIN_DIR="${BUILD_DIR}/toolchain/build/mipsel_gcc-${GCC_VER}_uClibc-${UCLIBC_VER}/mipsel-linux-uclibc/bin"

 export PATH=$PATH:$CROSS_TOOLCHAIN_BIN_DIR

 mipsel-linux-uclibc-cpp  -dM /dev/null | grep '\__mips' | egrep -v 'abicalls|fpr|soft_float'
 [ OUTPUT ]
 #define __mips__ 1
 #define __mips 1

 mipsel-linux-uclibc-gcc -E -Wp,-dM -x c /dev/null -o /dev/stdout | grep '\__mips' | egrep -v 'abicalls|fpr|soft_float'
 [ OUTPUT ] 
 #define __mips__ 1
 #define __mips 1

That line works fine here in my Freetz build-system to fix the issue:
 ...
 #if defined (host_mips) 
 ...
 #endif

The more aggressive fix included here works as well.

Edgar (ltrace MIPS maintainer) is cooking up a "real" fix, so this here is a
temporary workaround!
For a "WIP" patch from Edgar see [2] and as usually feedback is welcome.

[1] http://lists.alioth.debian.org/pipermail/ltrace-devel/2012-November/000764.html
[2] http://lists.alioth.debian.org/pipermail/ltrace-devel/2012-November/000770.html

Signed-off-by: Sedat Dilek <sedat.dilek at gmail.com>
---
 proc.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git proc.c proc.c
index e17b9ed..995ac79 100644
--- proc.c
+++ proc.c
@@ -752,8 +752,10 @@ breakpoint_for_symbol(struct library_symbol *libsym, struct Process *proc)
 	struct breakpoint *bp = dict_find_entry(proc->breakpoints,
 						bp_addr);
 	if (bp != NULL) {
+#if 0
 		assert(bp->libsym == NULL);
 		bp->libsym = libsym;
+#endif
 		return 0;
 	}
 
-- 
1.7.9.5




More information about the Ltrace-devel mailing list