[GSOC] Building strace mpers 32

deborah brouwer 3563deb6753 at gmail.com
Sun Mar 21 05:11:44 UTC 2021

My name is Deborah and I'm studying computer science at Thompson Rivers University in British Columbia, Canada.  I'm interested in GSOC.

Can you please help me build strace with mpers enabled?  After cloning the repository and running ./bootstrap and ./configure, make gives the error:

echo > .version-t && mv .version-t .version
make  all-recursive
make[1]: Entering directory '~/strace'
Making all in bundled
make[2]: Entering directory '~/strace/bundled'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '~/strace/bundled'
Making all in src
make[2]: Entering directory '~/strace/src'
for f in block.c ...; do \
	D="" \
	READELF="readelf" \
	CC="gcc" \
	CFLAGS="-DHAVE_CONFIG_H   -I./linux/x86_64 -I./linux/x86_64 -I./linux/generic -I./linux/generic -I. -I. -I../bundled/linux/arch/x86/include/uapi -I../bundled/linux/include/uapi -DIN_STRACE=1     -I./bundled/linux/arch/x86/include/uapi -I./bundled/linux/include/uapi -DMPERS_IS_m32" \
	CPP="gcc -E" \
	CPPFLAGS="-DHAVE_CONFIG_H   -I./linux/x86_64 -I./linux/x86_64 -I./linux/generic -I./linux/generic -I. -I. -I../bundled/linux/arch/x86/include/uapi -I../bundled/linux/include/uapi -DIN_STRACE=1     -I./bundled/linux/arch/x86/include/uapi -I./bundled/linux/include/uapi -DIN_MPERS -DMPERS_IS_m32" \
	./mpers.sh m32 "-m32" $f || exit; \
In file included from /usr/include/bits/errno.h:26:0,
                 from /usr/include/errno.h:28,
                 from ./defs.h:32,
                 from mpers-m32/struct_blk_user_trace_setup.c:10:
/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory
 #include <asm/errno.h>
compilation terminated.
Makefile:8785: recipe for target 'mpers-m32.stamp' failed

Unsuccessfully I tried to fix the error by manually creating a new directory "~/strace/src/linux/x86_64/asm" and adding errno.h from my own "/usr/include/asm-generic".  But this led to a chain reaction of additional make errors and I had to add additional headers to the newly created directory.  Finally, make complained that I was missing stat.h, but when I added this header I got an additional errors about the redefinition of 'struct stat'.  In strace/scr/linux/x86-64/asm_stat.h there is a comment that 
 * This is a replacement for x32 <asm/stat.h> which
 * appears to be wrong in older kernel headers.
So, I think I have taken the wrong approach.

Backing up, if I configure without mpers using ./configure --enable-mpers=no then I am able to build and install strace without any problems. However, I assume since enabling mpers is the default, this is something I need to fix.

I have looked at the archives of the mailing list and haven't been able to find the solution.

Can you please point me in the right direction to build strace with mpers enabled?

More information about the Strace-devel mailing list