s2i_dump improvements

This commit is contained in:
Jaroslav Kysela 2015-04-09 19:49:35 +02:00
parent cd1d1a031f
commit 3c9de865d1
3 changed files with 42 additions and 25 deletions

View File

@ -175,27 +175,9 @@ tools/syscall-dump.so.$(HOST_ARCH): tools/syscall-dump.c
.PHONY: s2i_dump
s2i_dump: tools/syscall-dump.so
if test -z "$(SATIP_HOST)"; then echo "Define SATIP_HOST variable"; exit 1; fi
scp tools/syscall-dump.so \
tools/s2i-dump.sh \
firmware/initramfs/root/s2i.bin \
firmware/initramfs/usr/lib/libuuid.so.1 \
firmware/initramfs/usr/lib/libcurl.so.4 \
firmware/initramfs/usr/lib/liboauth.so.0 \
firmware/initramfs/usr/lib/libsoup-2.4.so.1 \
firmware/initramfs/usr/lib/libgio-2.0.so.0 \
firmware/initramfs/usr/lib/libgobject-2.0.so.0 \
firmware/initramfs/usr/lib/libgmodule-2.0.so.0 \
firmware/initramfs/usr/lib/libgthread-2.0.so.0 \
firmware/initramfs/usr/lib/libssl.so.1.0.0 \
firmware/initramfs/usr/lib/libcrypto.so.1.0.0 \
firmware/initramfs/usr/lib/libxml2.so.2 \
root@$(SATIP_HOST):/usr/lib
scp firmware/initramfs/root/default_sl.json \
firmware/initramfs/root/*.txt \
firmware/initramfs/root/*.m3u \
cd firmware/initramfs && tar cvzf ../fw.tgz --owner=root --group=root *
scp tools/syscall-dump.so tools/s2i-dump.sh firmware/fw.tgz \
root@$(SATIP_HOST):/root
scp firmware/initramfs/usr/local/bin/mdnsd root@$(SATIP_HOST):/usr/bin
scp $(TOOLCHAIN)/target/bin/netstat root@$(SATIP_HOST):/bin
#
# minisatip

View File

@ -1,5 +1,18 @@
#!/bin/sh
if test -r /root/fw.tgz; then
if ! test -d /1; then
mkdir /1
fi
cd /1
tar xvzf /root/fw.tgz
mount --bind /dev /1/dev
mount --bind /proc /1/proc
cp -av /root/syscall-dump.so /1/usr/lib
cp -av /root/s2i-dump.sh /1
cp -av /usr/bin/strace /1/usr/bin
exit 0
fi
if ! test -d /mnt/s2i-log; then
mkdir -p /mnt/s2i-log
mount -t tmpfs -o size=300M,mode=0755 tmpfs /mnt/s2i-log
@ -8,10 +21,9 @@ if ! test -d /mnt/ramdisk; then
mkdir -p /mnt/ramdisk
mount -t tmpfs -o size=1024k,mode=0755 tmpfs /mnt/ramdisk
fi
mkdir -p /usr/local/bin
mkdir -p /var/run
ln -sf /usr/bin/mdnsd /usr/local/bin/mdnsd
rm -f /mnt/s2i-log/s2i.log
killall -9 mdnsd
rm -f /mnt/s2i-log/*
#TRACE="strace -r -ff -o /mnt/s2i-log/trace"
LD_PRELOAD=/usr/lib/syscall-dump.so \
SYSCALL_DUMP_LOG=/mnt/s2i-log/s2i.log \
/usr/lib/s2i.bin
$TRACE /root/s2i.bin

View File

@ -15,8 +15,11 @@ Usage:
#include <dlfcn.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <stddef.h>
@ -56,6 +59,7 @@ static int (*real_close)(int fd);
static int (*real_dup)(int oldfd);
static int (*real_dup2)(int oldfd, int newfd);
static int (*real_eventfd)(unsigned int initval, int flags);
static int (*real_bind)(int socket, const struct sockaddr *address, socklen_t address_len);
static int (*real_system)(const char *command);
static FILE *(*real_fopen)(const char *pathname, const char *mode);
static FILE *(*real_freopen)(const char *pathname, const char *mode, FILE *stream);
@ -395,6 +399,25 @@ int eventfd(unsigned int initval, int flags)
return r;
}
/* bind() wrapper */
int bind(int socket, const struct sockaddr *address, socklen_t address_len)
{
int r;
char s[32];
REDIR(real_bind, "bind");
if (address->sa_family == AF_UNIX)
dlog("bind AF_UNIX to '%s'\n", ((struct sockaddr_un *)address)->sun_path);
else if (address->sa_family == AF_INET)
dlog("bind AF_INET to '%s:%d'\n", inet_ntop(AF_INET, &(((struct sockaddr_in*)address)->sin_addr), s, sizeof(s)), ((struct sockaddr_in *)address)->sin_port);
else if (address->sa_family == AF_INET6)
dlog("bind AF_INET to '%s:%d'\n", inet_ntop(AF_INET6, &(((struct sockaddr_in6*)address)->sin6_addr), s, sizeof(s)), ((struct sockaddr_in6 *)address)->sin6_port);
r = real_bind(socket, address, address_len);
dlog("bind(%d, %p, %zi) = %d (%d)\n", socket, address, (size_t)address_len, r, E(r));
return r;
}
/* system() wrapper */
int system(const char *command)
{