From: Eric Andersen Date: Thu, 17 Oct 2002 08:55:05 +0000 (-0000) Subject: Add openssl and openssh. Fix up UML kernel build. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=365aac205d456db89a758533b256a5e5b51c8817;p=buildroot.git Add openssl and openssh. Fix up UML kernel build. --- 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 0000000000..b721d94207 Binary files /dev/null and b/sources/openssh_3.4p1-4.diff.gz differ diff --git a/sources/valgrind.patch b/sources/valgrind.patch index 2ce25255ab..a728940bfb 100644 --- a/sources/valgrind.patch +++ b/sources/valgrind.patch @@ -33,3 +33,121 @@ } +--- valgrind-1.0pre6.orig/vg_unsafe.h Thu Jun 13 10:02:37 2002 ++++ valgrind-1.0pre6/vg_unsafe.h Tue Jul 23 23:36:45 2002 +@@ -51,9 +51,13 @@ + + #include /* 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