Add openssl and openssh. Fix up UML kernel build.

This commit is contained in:
Eric Andersen 2002-10-17 08:55:05 +00:00
parent f2f69f70b9
commit 365aac205d
9 changed files with 404 additions and 130 deletions

View File

@ -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

17
README
View File

@ -26,3 +26,20 @@ Have fun!
Please feed suggestions, bug reports, insults, and bribes back to:
Erik Andersen <andersen@codepoet.org>
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....

46
make/openssh.mk Normal file
View File

@ -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)

49
make/openssl.mk Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
# Network testing
#
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
#
# 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)
#

Binary file not shown.

View File

@ -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 <linux/isdn.h> /* for ISDN ioctls */
#include <scsi/sg.h> /* for the SG_* ioctls */
+#include <scsi/scsi.h> /* for a few SCSI ioctls */
+#include <scsi/scsi_ioctl.h>/* for even more SCSI ioctls */
#include <sched.h> /* for struct sched_param */
#include <linux/sysctl.h> /* for struct __sysctl_args */
#include <linux/cdrom.h> /* for cd-rom ioctls */
+#include <linux/hdreg.h> /* for ide ioctls */
+#include <sys/mtio.h> /* for tape drive junk */
#define __USE_LARGEFILE64
#include <sys/stat.h> /* 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