From 365aac205d456db89a758533b256a5e5b51c8817 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 17 Oct 2002 08:55:05 +0000 Subject: [PATCH] Add openssl and openssh. Fix up UML kernel build. --- Makefile | 2 +- README | 17 ++++ make/openssh.mk | 46 ++++++++++ make/openssl.mk | 49 ++++++++++ make/user-mode-linux.mk | 2 +- sources/busybox.patch | 142 +++++++++++++++++++--------- sources/linux-uml.config | 158 +++++++++++++++----------------- sources/openssh_3.4p1-4.diff.gz | Bin 0 -> 53223 bytes sources/valgrind.patch | 118 ++++++++++++++++++++++++ 9 files changed, 404 insertions(+), 130 deletions(-) create mode 100644 make/openssh.mk create mode 100644 make/openssl.mk create mode 100644 sources/openssh_3.4p1-4.diff.gz diff --git a/Makefile b/Makefile index b2916e44c7..c60c5b0693 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,7 @@ ifeq ($(USE_UCLIBC_TOOLCHAIN),true) TARGETS=uclibc_toolchain endif -TARGETS+=user-mode-linux busybox tinylogin ncurses gdb strace valgrind db +TARGETS+=user-mode-linux busybox tinylogin ncurses gdb strace valgrind db openssl zlib openssh #stlport # Pick your root filesystem type. TARGETS+=ext2root diff --git a/README b/README index aef538959a..533db7340e 100644 --- a/README +++ b/README @@ -26,3 +26,20 @@ Have fun! Please feed suggestions, bug reports, insults, and bribes back to: Erik Andersen + + + +NOTE: + + For './configure' to behave itself with certain applications, you may need + to create a symlink under "/lib" on your system that points to the uClibc + shared library loader in the staging directory. For example, on my system + + $ cd /lib + $ sudo ln -s /home/andersen/buildroot/build/staging_dir/lib/ld-uClibc.so.0 ld-uClibc.so.0 + + If you don't use sudo, run 'su -' to become root when making the link. If + you aren't root it won't work. The reason for this symlink, is it allows + './configure' to actually execute the test applications it compiles against + uClibc during the configuration process.... + diff --git a/make/openssh.mk b/make/openssh.mk new file mode 100644 index 0000000000..1ac8958c25 --- /dev/null +++ b/make/openssh.mk @@ -0,0 +1,46 @@ +############################################################# +# +# openssh +# +############################################################# + +OPENSSH_SITE:=ftp://mirror.cs.wisc.edu/pub/mirrors/OpenBSD/OpenSSH/portable/ +OPENSSH_DIR:=$(BUILD_DIR)/openssh-3.4p1 +OPENSSH_SOURCE:=openssh-3.4p1.tar.gz +OPENSSH_PATCH:=$(SOURCE_DIR)/openssh_3.4p1-4.diff.gz + +$(DL_DIR)/$(OPENSSH_SOURCE): + wget -P $(DL_DIR) --passive-ftp $(OPENSSH_SITE)/$(OPENSSH_SOURCE) + +$(OPENSSH_DIR)/.unpacked: $(DL_DIR)/$(OPENSSH_SOURCE) + zcat $(DL_DIR)/$(OPENSSH_SOURCE) | tar -C $(BUILD_DIR) -xvf - + touch $(OPENSSH_DIR)/.unpacked + +$(OPENSSH_DIR)/.patched: $(OPENSSH_DIR)/.unpacked + zcat $(OPENSSH_PATCH) | patch -d $(OPENSSH_DIR) -p1 + touch $(OPENSSH_DIR)/.patched + +$(OPENSSH_DIR)/.configured: $(OPENSSH_DIR)/.patched + (cd $(OPENSSH_DIR); rm -rf config.cache; CC=$(TARGET_CC1) \ + ./configure --prefix=/usr \ + --includedir=$(STAGING_DIR)/include \ + --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx \ + --disable-nls --without-x); + touch $(OPENSSH_DIR)/.configured + +$(OPENSSH_DIR)/openssh: $(OPENSSH_DIR)/.configured + make CC=$(TARGET_CC1) -C $(OPENSSH_DIR) + -$(STRIP) --strip-unneeded $(OPENSSH_DIR)/*.so* + +$(TARGET_DIR)/usr/bin/openssh: $(OPENSSH_DIR)/openssh + make CC=$(TARGET_CC1) DESTDIR=$(TARGET_DIR) -C $(OPENSSH_DIR) install + rm -rf $(TARGET_DIR)/usr/share/doc/openssh + +openssh: $(TARGET_DIR)/usr/bin/openssh + +openssh-clean: + make -C $(OPENSSH_DIR) clean + +openssh-dirclean: + rm -rf $(OPENSSH_DIR) + diff --git a/make/openssl.mk b/make/openssl.mk new file mode 100644 index 0000000000..14c6379f6d --- /dev/null +++ b/make/openssl.mk @@ -0,0 +1,49 @@ +############################################################# +# +# openssl +# +############################################################# + +# TARGETS +OPENSSL_SITE:=http://www.openssl.org/source +OPENSSL_SOURCE:=openssl-0.9.6g.tar.gz +OPENSSL_DIR:=$(BUILD_DIR)/openssl-0.9.6g + + +$(DL_DIR)/$(OPENSSL_SOURCE): + wget -P $(DL_DIR) --passive-ftp $(OPENSSL_SITE)/$(OPENSSL_SOURCE) + +$(OPENSSL_DIR)/.unpacked: $(DL_DIR)/$(OPENSSL_SOURCE) + gunzip -c $(DL_DIR)/$(OPENSSL_SOURCE) | tar -C $(BUILD_DIR) -xvf - + touch $(OPENSSL_DIR)/.unpacked + +$(OPENSSL_DIR)/Makefile: $(OPENSSL_DIR)/.unpacked + (cd $(OPENSSL_DIR); \ + PATH=$(TARGET_PATH) ./Configure linux-elf --prefix=$(STAGING_DIR) \ + --openssldir=$(STAGING_DIR) -L$(STAGING_DIR)/lib -ldl \ + -I$(STAGING_DIR)/include no-threads shared no-asm) + +$(OPENSSL_DIR)/apps/openssl: $(OPENSSL_DIR)/Makefile + make CC=$(TARGET_CC1) -C $(OPENSSL_DIR) + +$(STAGING_DIR)/bin/openssl: $(OPENSSL_DIR)/apps/openssl + make CC=$(TARGET_CC1) -C $(OPENSSL_DIR) install + +$(TARGET_DIR)/bin/openssl: $(STAGING_DIR)/bin/openssl + cp -fa $(STAGING_DIR)/bin/openssl $(TARGET_DIR)/bin/ + cp -fa $(STAGING_DIR)/lib/libcrypto.so* $(TARGET_DIR)/lib/ + cp -fa $(STAGING_DIR)/lib/libssl.so* $(TARGET_DIR)/lib/ + +openssl-clean: + rm -f $(STAGING_DIR)/bin/openssl $(TARGET_DIR)/bin/openssl + rm -f $(STAGING_DIR)/lib/libcrypto.so* $(TARGET_DIR)/lib/libcrypto.so* + rm -f $(STAGING_DIR)/lib/libssl.so* $(TARGET_DIR)/lib/libssl.so* + $(MAKE) -C $(OPENSSL_DIR) clean + +openssl-dirclean: + rm -rf $(OPENSSL_DIR) + +openssl: uclibc $(TARGET_DIR)/bin/openssl + +#EOF + diff --git a/make/user-mode-linux.mk b/make/user-mode-linux.mk index 36c44a6a6f..90224d08a6 100644 --- a/make/user-mode-linux.mk +++ b/make/user-mode-linux.mk @@ -3,7 +3,7 @@ # Linux kernel targets # ############################################################# -UMLINUX_DIR=$(BUILD_DIR)/linux +UMLINUX_DIR=$(BUILD_DIR)/linux-2.4.19 UMLINUX_SOURCE=linux-2.4.19.tar.bz2 UMLINUX_SITE=http://ftp.us.kernel.org/pub/linux/kernel/v2.4 UMLINUX_PATCH_1:=uml-patch-2.4.19-5.bz2 diff --git a/sources/busybox.patch b/sources/busybox.patch index 99040baf82..f8b60b6542 100644 --- a/sources/busybox.patch +++ b/sources/busybox.patch @@ -1,23 +1,41 @@ ---- busybox/Config.h 6 Apr 2002 04:22:15 -0000 1.116 -+++ busybox/Config.h 30 May 2002 05:10:32 -0000 -@@ -7,8 +7,8 @@ - // +--- busybox/Config.h 17 Sep 2002 22:04:28 -0000 1.118 ++++ busybox/Config.h 17 Sep 2002 23:43:54 -0000 +@@ -8,7 +8,7 @@ // // BusyBox Applications --//#define BB_ADJTIMEX + //#define BB_ADJTIMEX -//#define BB_AR -+#define BB_ADJTIMEX +#define BB_AR #define BB_ASH #define BB_BASENAME #define BB_CAT +@@ -18,14 +18,14 @@ + #define BB_CHROOT + #define BB_CHVT + #define BB_CLEAR +-//#define BB_CMP ++#define BB_CMP + #define BB_CP +-//#define BB_CPIO ++#define BB_CPIO + #define BB_CUT + #define BB_DATE +-//#define BB_DC ++#define BB_DC + #define BB_DD +-//#define BB_DEALLOCVT ++#define BB_DEALLOCVT + #define BB_DF + #define BB_DIRNAME + #define BB_DMESG @@ -37,12 +37,12 @@ //#define BB_DUMPKMAP #define BB_ECHO #define BB_ENV -//#define BB_EXPR +-//#define BB_FBSET +#define BB_EXPR - //#define BB_FBSET ++#define BB_FBSET //#define BB_FDFLUSH #define BB_FIND #define BB_FREE @@ -26,11 +44,13 @@ //#define BB_FSCK_MINIX //#define BB_GETOPT #define BB_GREP -@@ -51,12 +51,12 @@ +@@ -50,13 +50,13 @@ + #define BB_GZIP #define BB_HALT #define BB_HEAD - //#define BB_HOSTID +-//#define BB_HOSTID -//#define BB_HOSTNAME ++#define BB_HOSTID +#define BB_HOSTNAME //#define BB_HUSH #define BB_ID @@ -42,11 +62,13 @@ #define BB_KILL #define BB_KILLALL #define BB_KLOGD -@@ -68,11 +68,11 @@ +@@ -67,77 +67,77 @@ + //#define BB_LOADFONT //#define BB_LOADKMAP #define BB_LOGGER - //#define BB_LOGNAME +-//#define BB_LOGNAME -//#define BB_LOSETUP ++#define BB_LOGNAME +#define BB_LOSETUP #define BB_LS #define BB_LSMOD @@ -56,7 +78,13 @@ #define BB_MKDIR //#define BB_MKFIFO //#define BB_MKFS_MINIX -@@ -85,11 +85,11 @@ + #define BB_MKNOD + #define BB_MKSWAP +-//#define BB_MKTEMP ++#define BB_MKTEMP + #define BB_MODPROBE + #define BB_MORE + #define BB_MOUNT //#define BB_MSH //#define BB_MT #define BB_MV @@ -70,9 +98,16 @@ +#define BB_PING +#define BB_PIVOT_ROOT #define BB_POWEROFF - //#define BB_PRINTF +-//#define BB_PRINTF ++#define BB_PRINTF #define BB_PS -@@ -101,8 +101,8 @@ + #define BB_PWD +-//#define BB_RDATE +-//#define BB_READLINK ++#define BB_RDATE ++#define BB_READLINK + #define BB_REBOOT + //#define BB_RENICE #define BB_RESET #define BB_RM #define BB_RMDIR @@ -83,28 +118,46 @@ //#define BB_RPM2CPIO #define BB_SED //#define BB_SETKEYCODES -@@ -115,13 +115,13 @@ + #define BB_SLEEP + #define BB_SORT +-//#define BB_STTY ++#define BB_STTY + #define BB_SWAPONOFF + #define BB_SYNC + #define BB_SYSLOGD #define BB_TAIL #define BB_TAR - //#define BB_TEE +-//#define BB_TEE -//#define BB_TEST +-//#define BB_TELNET ++#define BB_TEE +#define BB_TEST - //#define BB_TELNET ++#define BB_TELNET //#define BB_TFTP -//#define BB_TIME +-//#define BB_TOP +#define BB_TIME ++#define BB_TOP #define BB_TOUCH - //#define BB_TR +-//#define BB_TR -//#define BB_TRACEROUTE ++#define BB_TR +#define BB_TRACEROUTE #define BB_TRUE_FALSE #define BB_TTY //#define BB_UNIX2DOS -@@ -133,10 +133,10 @@ +-//#define BB_UUENCODE +-//#define BB_UUDECODE ++#define BB_UUENCODE ++#define BB_UUDECODE + #define BB_UMOUNT + #define BB_UNIQ + #define BB_UNAME //#define BB_UPDATE #define BB_UPTIME - //#define BB_USLEEP +-//#define BB_USLEEP -//#define BB_VI ++#define BB_USLEEP +#define BB_VI //#define BB_WATCHDOG #define BB_WC @@ -113,17 +166,21 @@ #define BB_WHICH #define BB_WHOAMI #define BB_XARGS -@@ -217,7 +217,7 @@ - #define BB_FEATURE_USE_INITTAB +@@ -185,7 +185,7 @@ + #define BB_FEATURE_VERBOSE_USAGE // - //Enable init being called as /linuxrc --#define BB_FEATURE_LINUXRC -+//#define BB_FEATURE_LINUXRC + // Use termios to manipulate the screen ('more' is prettier with this on) +-//#define BB_FEATURE_USE_TERMIOS ++#define BB_FEATURE_USE_TERMIOS // - //Have init enable core dumping for child processes (for debugging only) + // calculate terminal & column widths (for more, ls, and telnet) + #define BB_FEATURE_AUTOWIDTH +@@ -224,10 +224,10 @@ //#define BB_FEATURE_INIT_COREDUMPS -@@ -226,7 +226,7 @@ - //#define BB_FEATURE_EXTRA_QUIET + // + //Make sure nothing is printed to the console on boot +-//#define BB_FEATURE_EXTRA_QUIET ++#define BB_FEATURE_EXTRA_QUIET // // enable syslogd -R remotehost -#define BB_FEATURE_REMOTE_LOG @@ -131,7 +188,16 @@ // // enable syslogd -C //#define BB_FEATURE_IPC_SYSLOG -@@ -277,7 +277,7 @@ +@@ -248,7 +248,7 @@ + // + // If you are using uClibc, be sure that you've already compiled + // uClibc with INCLUDE_RPC=true (contained in the Config file) +-//#define BB_FEATURE_NFSMOUNT ++#define BB_FEATURE_NFSMOUNT + // + // Enable support forced filesystem unmounting + // (i.e., in case of an unreachable NFS system). +@@ -278,7 +278,7 @@ #define BB_FEATURE_COMMAND_TAB_COMPLETION // // Attempts to match usernames in a ~-prefixed path @@ -140,7 +206,7 @@ // //Allow the shell to invoke all the compiled in BusyBox applets as if they //were shell builtins. Nice for staticly linking an emergency rescue shell, -@@ -298,7 +298,7 @@ +@@ -299,7 +299,7 @@ // current username and hostname. On systems that don't have usernames // or hostnames, this can look hideous. // Only relevant if a shell is enabled. @@ -149,16 +215,7 @@ // // Uncomment this option to disable job control. Job control lets you // run jobs in the background (which completely useless for is all you -@@ -314,7 +314,7 @@ - //#define BB_FEATURE_FBSET_READMODE - // - // Support insmod/lsmod/rmmod for post 2.1 kernels --//#define BB_FEATURE_NEW_MODULE_INTERFACE -+#define BB_FEATURE_NEW_MODULE_INTERFACE - // - // Support insmod/lsmod/rmmod for pre 2.1 kernels - //#define BB_FEATURE_OLD_MODULE_INTERFACE -@@ -332,16 +332,16 @@ +@@ -333,16 +333,16 @@ //#define BB_FEATURE_MINIX2 // // Enable ifconfig status reporting output -- this feature adds 7k. @@ -166,8 +223,7 @@ +#define BB_FEATURE_IFCONFIG_STATUS // // Enable ifconfig slip-specific options "keepalive" and "outfill" --//#define BB_FEATURE_IFCONFIG_SLIP -+#define BB_FEATURE_IFCONFIG_SLIP + //#define BB_FEATURE_IFCONFIG_SLIP // // Enable ifconfig options "mem_start", "io_addr", and "irq". -//#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ @@ -179,7 +235,7 @@ // // Allows "broadcast +" to set broadcast automatically based on hostaddr // and netmask, at a cost of about 100 bytes of code (i386). -@@ -379,7 +379,7 @@ +@@ -380,7 +380,7 @@ #define BB_FEATURE_FIND_NEWER // // Support for the -A -B and -C context flags in grep diff --git a/sources/linux-uml.config b/sources/linux-uml.config index 02b1e511c7..1e4f9abd8f 100644 --- a/sources/linux-uml.config +++ b/sources/linux-uml.config @@ -1,5 +1,5 @@ # -# Automatically generated by make menuconfig: don't edit +# Automatically generated make config: don't edit # CONFIG_USERMODE=y # CONFIG_ISA is not set @@ -16,7 +16,6 @@ CONFIG_EXPERIMENTAL=y # # General Setup # -CONFIG_STDIO_CONSOLE=y CONFIG_NET=y CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set @@ -24,18 +23,15 @@ CONFIG_SYSCTL=y # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set -CONFIG_UNIX98_PTYS=y -CONFIG_UNIX98_PTY_COUNT=256 -CONFIG_SSL=y CONFIG_HOSTFS=y +# CONFIG_HPPFS is not set CONFIG_MCONSOLE=y CONFIG_MAGIC_SYSRQ=y # CONFIG_HOST_2G_2G is not set # CONFIG_UML_SMP is not set # CONFIG_SMP is not set -CONFIG_CON_ZERO_CHAN="fd:0,fd:1" -CONFIG_CON_CHAN="xterm" -CONFIG_SSL_CHAN="pty" +CONFIG_NEST_LEVEL=0 +CONFIG_KERNEL_HALF_GIGS=1 # # Loadable module support @@ -44,7 +40,32 @@ CONFIG_MODULES=y CONFIG_KMOD=y # -# Devices +# Character Devices +# +CONFIG_STDIO_CONSOLE=y +CONFIG_SSL=y +CONFIG_FD_CHAN=y +CONFIG_NULL_CHAN=y +CONFIG_PORT_CHAN=y +CONFIG_PTY_CHAN=y +CONFIG_TTY_CHAN=y +CONFIG_XTERM_CHAN=y +CONFIG_CON_ZERO_CHAN="fd:0,fd:1" +CONFIG_CON_CHAN="xterm" +CONFIG_SSL_CHAN="pty" +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +# CONFIG_WATCHDOG is not set +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_UML_WATCHDOG is not set +# CONFIG_UML_SOUND is not set +# CONFIG_SOUND is not set +# CONFIG_HOSTAUDIO is not set +# CONFIG_TTY_LOG is not set + +# +# Block Devices # CONFIG_BLK_DEV_UBD=y CONFIG_BLK_DEV_UBD_SYNC=y @@ -54,15 +75,33 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_INITRD=y # CONFIG_MMAPPER is not set -# CONFIG_UML_SOUND is not set -# CONFIG_SOUND is not set -# CONFIG_HOSTAUDIO is not set -CONFIG_FD_CHAN=y -CONFIG_NULL_CHAN=y -CONFIG_PORT_CHAN=y -CONFIG_PTY_CHAN=y -CONFIG_TTY_CHAN=y -CONFIG_XTERM_CHAN=y +CONFIG_NETDEVICES=y + +# +# Network Devices +# +CONFIG_UML_NET=y +CONFIG_UML_NET_ETHERTAP=y +CONFIG_UML_NET_TUNTAP=y +CONFIG_UML_NET_SLIP=y +CONFIG_UML_NET_DAEMON=y +CONFIG_UML_NET_MCAST=y +CONFIG_DUMMY=y +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=y +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +CONFIG_SLIP=y +# CONFIG_SLIP_COMPRESSED is not set +# CONFIG_SLIP_SMART is not set +# CONFIG_SLIP_MODE_SLIP6 is not set # # Networking options @@ -86,8 +125,17 @@ CONFIG_INET=y # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set + +# +# +# # CONFIG_IPX is not set # CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set @@ -105,74 +153,9 @@ CONFIG_INET=y # CONFIG_NET_SCHED is not set # -# Network device support -# -CONFIG_UML_NET=y -CONFIG_UML_NET_ETHERTAP=y -CONFIG_UML_NET_TUNTAP=y -CONFIG_UML_NET_SLIP=y -CONFIG_UML_NET_DAEMON=y -CONFIG_UML_NET_MCAST=y -CONFIG_NETDEVICES=y - -# -# ARCnet devices +# Network testing # -# CONFIG_ARCNET is not set -CONFIG_DUMMY=y -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -CONFIG_TUN=y -CONFIG_ETHERTAP=y - -# -# Ethernet (10 or 100Mbit) -# -# CONFIG_NET_ETHERNET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_MYRI_SBUS is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PLIP is not set -CONFIG_PPP=y -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -# CONFIG_PPP_ASYNC is not set -# CONFIG_PPP_SYNC_TTY is not set -# CONFIG_PPP_DEFLATE is not set -# CONFIG_PPP_BSDCOMP is not set -# CONFIG_PPPOE is not set -CONFIG_SLIP=y -# CONFIG_SLIP_COMPRESSED is not set -# CONFIG_SLIP_SMART is not set -# CONFIG_SLIP_MODE_SLIP6 is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set +# CONFIG_NET_PKTGEN is not set # # File systems @@ -314,6 +297,11 @@ CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=m +# +# SCSI support +# +# CONFIG_SCSI is not set + # # Multi-device support (RAID and LVM) # diff --git a/sources/openssh_3.4p1-4.diff.gz b/sources/openssh_3.4p1-4.diff.gz new file mode 100644 index 0000000000000000000000000000000000000000..b721d94207740628aada03db40f61dc8169c3ac0 GIT binary patch literal 53223 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 /* for ISDN ioctls */ + #include /* for the SG_* ioctls */ ++#include /* for a few SCSI ioctls */ ++#include /* for even more SCSI ioctls */ + #include /* for struct sched_param */ + #include /* for struct __sysctl_args */ + #include /* for cd-rom ioctls */ ++#include /* for ide ioctls */ ++#include /* for tape drive junk */ + + #define __USE_LARGEFILE64 + #include /* for struct stat */ +--- valgrind-1.0pre6.orig/vg_syscall_mem.c Sat Jul 13 06:44:39 2002 ++++ valgrind-1.0pre6/vg_syscall_mem.c Tue Jul 23 23:44:39 2002 +@@ -2050,6 +2050,99 @@ + sizeof(struct cdrom_msf)); + KERNEL_DO_SYSCALL(tid,res); + break; ++ ++ /* Stuff added by Erik Andersen for general device probing/handling */ ++ case CDROM_DRIVE_STATUS: ++ KERNEL_DO_SYSCALL(tid,res); ++ break; ++#define BLKSSZGET _IO(0x12,104) ++ case BLKSSZGET: ++ must_be_writable(tst, "ioctl(BLKSSZGET)", arg3, sizeof(int)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(int)); ++ break; ++#define BLKGETSIZE64 _IOR(0x12,114,sizeof(unsigned long long*)) ++ case BLKGETSIZE64: ++ must_be_writable(tst, "ioctl(BLKGETSIZE64)", arg3, sizeof(unsigned long long)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(unsigned long long)); ++ break; ++ case HDIO_GETGEO: ++ { ++ struct hd_geometry { ++ unsigned char heads; ++ unsigned char sectors; ++ unsigned short cylinders; ++ unsigned long start; ++ }; ++ ++ must_be_writable(tst, "ioctl(HDIO_GETGEO)", arg3, sizeof(struct hd_geometry)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(struct hd_geometry)); ++ } ++ break; ++ case HDIO_GET_IDENTITY: ++ must_be_writable(tst, "ioctl(HDIO_GET_IDENTITY)", arg3, sizeof(struct hd_driveid)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(struct hd_driveid)); ++ break; ++ case SCSI_IOCTL_GET_IDLUN: ++ { ++ struct scsi_idlun ++ { ++ int mux4; ++ int host_unique_id; ++ ++ }; ++ must_be_writable(tst, "ioctl(SCSI_IOCTL_GET_IDLUN)", arg3, sizeof(struct scsi_idlun)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(struct scsi_idlun)); ++ } ++ break; ++ case SCSI_IOCTL_SEND_COMMAND: ++ must_be_writable(tst, "ioctl(SCSI_IOCTL_SEND_COMMAND)", arg3, ++ ((2 * sizeof(unsigned int)) + 6 + 512)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, ((2 * sizeof(unsigned int)) + 6 + 512)); ++ break; ++ case SCSI_IOCTL_GET_BUS_NUMBER: ++ must_be_writable(tst, "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", arg3, sizeof(int)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(int)); ++ break; ++ case SCSI_IOCTL_PROBE_HOST: ++ { ++ int xxxx; ++ char *array = (char*)arg3; ++ xxxx = array[0] + (array[1]<<8) + (array[2]<<16) + (array[3]<<24); ++ must_be_writable(tst, "ioctl(SCSI_IOCTL_PROBE_HOST)", arg3, xxxx); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, xxxx); ++ } ++ break; ++#define BLKFLSBUF _IO(0x12,97) ++ case BLKFLSBUF: ++ KERNEL_DO_SYSCALL(tid,res); ++ break; ++#define BLKRRPART _IO(0x12,95) ++ case BLKRRPART: ++ KERNEL_DO_SYSCALL(tid,res); ++ break; ++ case MTIOCTOP: ++ must_be_writable(tst, "ioctl(MTIOCTOP)", arg3, sizeof(struct mtop)); ++ KERNEL_DO_SYSCALL(tid,res); ++ if (!VG_(is_kerror)(res) && res == 0) ++ make_readable (arg3, sizeof(struct mtop)); ++ break; ++ + /* We don't have any specific information on it, so + try to do something reasonable based on direction and + size bits. The encoding scheme is described in -- 2.30.2