s2i_dump improvements
This commit is contained in:
		
							
								
								
									
										22
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								Makefile
									
									
									
									
									
								
							| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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) | ||||
| { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user