From: Jody M. <sc...@st...> - 2005-11-28 22:45:34
|
Can someone apply this? This is a continuation of the work Paul sent in a few months ago, and allows the LTP to be built for the Coldfire mmu-less (uClinux) processor. Thanks, Jody - Make the fdopen workaround blackfin-specific (not needed on Coldfire.) - getdents01: gcc 2.95 does not like declarations in the middle of functions, so move getdents to the top. - Add LDFLAGS to the following Makefiles: - Add -D_USC_LIB_ for Coldfire builds to the following Makefiles: creat, execve, fchdir, kill, mkdir, open, rename, rmdir, sched_setscheduler, vhangup, ipc/lib. This avoids symbol conflicts reported by gcc 2.95. - Skip the following syscall tests on Coldfire: madvise, mlock, munlock. These system calls are not implemented. - IPC: Modify the headers and Makefiles to avoid duplicate definitions of msgkey on Coldfire. - msgctl08, msgctl09: Lower MAXNPROCS to a value that will fit in the Coldfire's memory. - mallopt01: Define __MALLOC_STANDARD__ on Coldfire. - Skip mmap01 on Coldfire since it requires sbrk(), which is not available. - rename02: Remove private do_file_setup and use the library version to avoid symbol conflicts. - kill07: Declare semkey as extern on Coldfire to avoid symbol conflicts. - kill11: Move *msg declaration since gcc 2.95 does not understand C99. - sigaction01: Move -lc in the Makefile after -lpthread. Index: ltp-cvs/lib/tst_res.c =================================================================== --- ltp-cvs.orig/lib/tst_res.c +++ ltp-cvs/lib/tst_res.c @@ -567,7 +567,7 @@ tst_exit() int tst_environ() { -#if defined UCLINUX && EMBED +#if defined UCLINUX && EMBED && CONFIG_BLACKFIN FILE *fdopen; #else FILE *fdopen(); Index: ltp-cvs/testcases/kernel/syscalls/getdents/getdents01.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/getdents/getdents01.c +++ ltp-cvs/testcases/kernel/syscalls/getdents/getdents01.c @@ -82,6 +82,20 @@ int main(int ac, char **av) char *dir_name = NULL; struct dirent *dirp; + /* + * Here's a case where invoking the system call directly + * doesn't seem to work. getdents.h has an assembly + * macro to do the job. + * + * equivalent to - getdents(fd, dirp, count); + * if we could call getdents that way. + */ + +#if defined(__ia64__) +#define getdents(arg1, arg2, arg3) syscall(__NR_getdents, arg1, arg2, arg3) +#else + _syscall3(int, getdents, uint, fd, struct dirent *, dirp, uint, count); +#endif /* parse standard options */ if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ @@ -121,21 +135,7 @@ int main(int ac, char **av) if ((fd = open(dir_name, O_RDONLY)) == -1) { tst_brkm(TBROK, cleanup, "open of directory failed"); } - - /* - * Here's a case where invoking the system call directly - * doesn't seem to work. getdents.h has an assembly - * macro to do the job. - * - * equivalent to - getdents(fd, dirp, count); - * if we could call getdents that way. - */ - -#if defined(__ia64__) -#define getdents(arg1, arg2, arg3) syscall(__NR_getdents, arg1, arg2, arg3) -#else - _syscall3(int, getdents, uint, fd, struct dirent *, dirp, uint, count); -#endif + rval = getdents(fd, dirp, count); if (rval < 0) { /* call returned an error */ Index: ltp-cvs/include/usctest.h =================================================================== --- ltp-cvs.orig/include/usctest.h +++ ltp-cvs/include/usctest.h @@ -161,6 +161,8 @@ struct usc_errno_t { extern long TEST_RETURN; extern long TEST_ERRNO; +extern struct usc_errno_t TEST_VALID_ENO[USC_MAX_ERRNO]; +extern long btime, etime, tmptime; #else /*********************************************************************** Index: ltp-cvs/testcases/kernel/syscalls/creat/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/creat/Makefile +++ ltp-cvs/testcases/kernel/syscalls/creat/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall -g CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/execve/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/execve/Makefile +++ ltp-cvs/testcases/kernel/syscalls/execve/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/fchdir/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/fchdir/Makefile +++ ltp-cvs/testcases/kernel/syscalls/fchdir/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/ipc/lib/ipcmsg.h =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/ipc/lib/ipcmsg.h +++ ltp-cvs/testcases/kernel/syscalls/ipc/lib/ipcmsg.h @@ -46,7 +46,11 @@ typedef struct mbuf { /* a generic mess char mtext[MSGSIZE + 1]; /* add 1 here so the message can be 1024 */ } MSGBUF; /* characters long with a '\0' termination */ +#if (!defined CONFIG_COLDFIRE || defined LIBIPC) key_t msgkey; /* the ftok() generated message key */ +#else +extern key_t msgkey; /* the ftok() generated message key */ +#endif void check_root(); void init_buf(MSGBUF *, int, int); Index: ltp-cvs/testcases/kernel/syscalls/ipc/lib/ipcsem.h =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/ipc/lib/ipcsem.h +++ ltp-cvs/testcases/kernel/syscalls/ipc/lib/ipcsem.h @@ -42,7 +42,11 @@ void setup(void); #define PSEMS 10 /* a reasonable value for the number of */ /* "primitive semaphores" per ID */ +#if (!defined CONFIG_COLDFIRE || defined LIBIPC) key_t semkey; /* an IPC key generated by ftok() */ +#else +extern key_t semkey; /* an IPC key generated by ftok() */ +#endif union semun { int val; /* value for SETVAL */ Index: ltp-cvs/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c +++ ltp-cvs/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c @@ -64,7 +64,11 @@ extern int Tst_count; /* Test int exp_enos[]={0}; /* List must end with 0 */ +#ifndef CONFIG_COLDFIRE #define MAXNPROCS 1000000 /* This value is set to an arbitrary high limit. */ +#else +#define MAXNPROCS 100000 /* Coldfire can't deal with 1000000 */ +#endif #define MAXNREPS 100000 #define FAIL 1 #define PASS 0 Index: ltp-cvs/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c +++ ltp-cvs/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c @@ -51,7 +51,11 @@ #include "usctest.h" #define MAXNREPS 1000 -#define MAXNPROCS 1000000 /* This value is set to an arbitrary high limit. */ +#ifndef CONFIG_COLDFIRE +#define MAXNPROCS 1000000 /* This value is set to an arbitrary high limit. */ +#else +#define MAXNPROCS 100000 /* Coldfire can't deal with 1000000 */ +#endif #define MAXNKIDS 10 #define FAIL 1 #define PASS 0 Index: ltp-cvs/testcases/kernel/syscalls/kill/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/kill/Makefile +++ ltp-cvs/testcases/kernel/syscalls/kill/Makefile @@ -21,6 +21,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall -D_GNU_SOURCE CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite -L../ipc -lipc LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/mallopt/mallopt01.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/mallopt/mallopt01.c +++ ltp-cvs/testcases/kernel/syscalls/mallopt/mallopt01.c @@ -34,6 +34,9 @@ */ #include <stdio.h> /* needed by testhead.h */ +#ifdef CONFIG_COLDFIRE +#define __MALLOC_STANDARD__ +#endif #include <malloc.h> #include <errno.h> Index: ltp-cvs/testcases/kernel/syscalls/mkdir/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/mkdir/Makefile +++ ltp-cvs/testcases/kernel/syscalls/mkdir/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/mmap/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/mmap/Makefile +++ ltp-cvs/testcases/kernel/syscalls/mmap/Makefile @@ -25,7 +25,8 @@ CFLAGS+= $(if $(UCLINUX),-DUCLINUX) LOADLIBES+= -L../../../../lib -lltp LOADLIBES+= $(if $(UCLINUX),-lc) -SRCS=$(wildcard *.c) +COLDFIRE_SKIP = $(if ($CONFIG_COLDFIRE),|grep -v mmap01) +SRCS=$(shell ls *.c $(COLDFIRE_SKIP)) TARGETS=$(patsubst %.c,%,$(SRCS)) all: $(TARGETS) Index: ltp-cvs/testcases/kernel/syscalls/open/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/open/Makefile +++ ltp-cvs/testcases/kernel/syscalls/open/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/rename/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/rename/Makefile +++ ltp-cvs/testcases/kernel/syscalls/rename/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/ipc/lib/libipc.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/ipc/lib/libipc.c +++ ltp-cvs/testcases/kernel/syscalls/ipc/lib/libipc.c @@ -35,6 +35,7 @@ * rm_shm() */ +#define LIBIPC #include "ipcmsg.h" #include "ipcsem.h" Index: ltp-cvs/testcases/kernel/syscalls/rename/rename02.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/rename/rename02.c +++ ltp-cvs/testcases/kernel/syscalls/rename/rename02.c @@ -119,8 +119,6 @@ extern void setup(); extern void cleanup(); -void do_file_setup(); - char *TCID="rename02"; /* Test program identifier. */ @@ -180,7 +178,7 @@ main(int ac, char **av) if (unlink(mname) == -1) { tst_resm(TWARN, "unlink(%s) Failed, errno=%d : %s", mname, errno, strerror(errno)); } - do_file_setup(); + do_file_setup(fname); } } /* End for TEST_LOOPING */ @@ -209,7 +207,7 @@ setup() sprintf(fname,"./tfile_%d",getpid()); sprintf(mname,"./rnfile_%d",getpid()); - do_file_setup(); + do_file_setup(fname); } /* End setup() */ @@ -234,18 +232,3 @@ cleanup() tst_exit(); } /* End cleanup() */ - -void -do_file_setup() -{ - if ((fd=open(fname,O_RDWR|O_CREAT,0700)) == -1) { - tst_brkm(TBROK, cleanup, - "open(%s, O_RDWR|O_CREAT,0700) Failed, errno=%d : %s", - fname, errno, strerror(errno)); - } - - if (close(fd) == -1 ) - tst_resm(TWARN, "close(%s) Failed on file create, errno=%d : %s", - fname, errno, strerror(errno)); - -} Index: ltp-cvs/testcases/kernel/syscalls/rmdir/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/rmdir/Makefile +++ ltp-cvs/testcases/kernel/syscalls/rmdir/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/sched_setscheduler/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/sched_setscheduler/Makefile +++ ltp-cvs/testcases/kernel/syscalls/sched_setscheduler/Makefile @@ -22,6 +22,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/vhangup/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/vhangup/Makefile +++ ltp-cvs/testcases/kernel/syscalls/vhangup/Makefile @@ -21,6 +21,7 @@ ########################################################################### CFLAGS+= -I../../../../include -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) LOADLIBES+= -L../../../../lib -lltp -L.. -ltestsuite LOADLIBES+= $(if $(UCLINUX),-lc) Index: ltp-cvs/testcases/kernel/syscalls/ipc/lib/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/ipc/lib/Makefile +++ ltp-cvs/testcases/kernel/syscalls/ipc/lib/Makefile @@ -26,6 +26,7 @@ OBJS=$(SRCS:.c=.o) MAINS=../libipc.a CFLAGS+=-I../../../../../include -g -Wall CFLAGS+= $(if $(UCLINUX),-DUCLINUX) +CFLAGS+= $(if $(CONFIG_COLDFIRE),-D_USC_LIB_) all: ../libipc.a Index: ltp-cvs/testcases/kernel/syscalls/kill/kill07.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/kill/kill07.c +++ ltp-cvs/testcases/kernel/syscalls/kill/kill07.c @@ -76,7 +76,11 @@ void do_child(void); char *TCID= "kill07"; int TST_TOTAL = 1; int shmid1; +#ifndef CONFIG_COLDFIRE key_t semkey; +#else +extern key_t semkey; +#endif int *flag; extern int Tst_count; Index: ltp-cvs/testcases/kernel/syscalls/kill/kill11.c =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/kill/kill11.c +++ ltp-cvs/testcases/kernel/syscalls/kill/kill11.c @@ -86,6 +86,9 @@ int main(int argc, char **argv) /**** int signum[14]; int j; int ret_val = 0; +#ifdef UCLINUX + char *msg; +#endif signum[1]=SIGHUP; signum[2]=SIGINT; signum[3]=SIGQUIT; signum[4]=SIGILL; signum[5]=SIGTRAP; signum[6]=SIGABRT; signum[7]=SIGIOT; signum[8]=SIGFPE; signum[9]=SIGKILL; @@ -93,8 +96,6 @@ int main(int argc, char **argv) /**** signum[13]=SIGPIPE; signum[14]=SIGALRM; #ifdef UCLINUX - char *msg; - /* parse standard options */ if ((msg = parse_opts(argc, argv, (option_t *)NULL, NULL)) != (char *)NULL){ tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg); Index: ltp-cvs/testcases/kernel/syscalls/sigaction/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/sigaction/Makefile +++ ltp-cvs/testcases/kernel/syscalls/sigaction/Makefile @@ -22,7 +22,7 @@ CFLAGS+= -I../../../../include -DGLIBC_SIGACTION_BUG=1 -Wall -D_GNU_SOURCE CFLAGS+= $(if $(UCLINUX),-DUCLINUX) LOADLIBES+= -L../../../../lib -lltp -LOADLIBES+= $(if $(UCLINUX),-lc) +LOADLIBES2= $(if $(UCLINUX),-lc) SRCS=$(wildcard *.c) TARGETS=$(patsubst %.c,%,$(SRCS)) @@ -30,7 +30,7 @@ TARGETS=$(patsubst %.c,%,$(SRCS)) all: $(TARGETS) sigaction01: - $(CC) -o sigaction01 sigaction01.c $(CFLAGS) $(LOADLIBES) -lpthread + $(CC) -o sigaction01 sigaction01.c $(CFLAGS) $(LOADLIBES) -lpthread $(LOADLIBES2) install: @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done Index: ltp-cvs/testcases/kernel/syscalls/Makefile =================================================================== --- ltp-cvs.orig/testcases/kernel/syscalls/Makefile +++ ltp-cvs/testcases/kernel/syscalls/Makefile @@ -34,7 +34,8 @@ EXCLUDE_DIR=epoll # Commented this out since there are directories here we don't want built by default # SUBDIR = `ls */Makefile | sed "s/Makefile//g" | grep -v epoll` -UCLINUX_SUBDIR = `ls */Makefile | sed "s/Makefile//g" | grep -vE "^fork|epoll|capget|capset|chmod|chown|llseek|nftw|clone|profil|getcontext"` +COLDFIRE_SKIP = $(if ($CONFIG_COLDFIRE),|madvise|mlock|munlock) +UCLINUX_SUBDIR = `ls */Makefile | sed "s/Makefile//g" | grep -vE "^fork|epoll|capget|capset|chmod|chown|llseek|nftw|clone|profil|getcontext$(COLDFIRE_SKIP)"` all: @set -e; for i in lib $(SUBDIR); do \ |