summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.wendy/gnu2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.wendy/gnu2.c')
-rwxr-xr-xgcc/testsuite/gcc.wendy/gnu2.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.wendy/gnu2.c b/gcc/testsuite/gcc.wendy/gnu2.c
new file mode 100755
index 0000000..296c34c
--- /dev/null
+++ b/gcc/testsuite/gcc.wendy/gnu2.c
@@ -0,0 +1,122 @@
+/*
+ * Causes gnu cc 1.14 to coredump. Not sure why.
+ * An excerpt from PD tar's "list.c" file.
+ */
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+
+
+
+
+
+
+
+
+typedef struct _physadr { short r[1]; } *physadr;
+typedef struct label_t {
+ int val[13];
+} label_t;
+
+typedef struct _quad { long val[2]; } quad;
+typedef long daddr_t;
+typedef char * caddr_t;
+typedef u_long ino_t;
+typedef long swblk_t;
+
+typedef long time_t;
+typedef short dev_t;
+typedef int off_t;
+typedef long key_t;
+
+typedef struct fd_set { int fds_bits[1]; } fd_set;
+
+
+struct stat {
+ dev_t st_dev;
+ ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ dev_t st_rdev;
+ off_t st_size;
+ time_t st_atime;
+ int st_spare1;
+ time_t st_mtime;
+ int st_spare2;
+ time_t st_ctime;
+ int st_spare3;
+ long st_blksize;
+ long st_blocks;
+ long st_spare4[2];
+};
+
+union record {
+ char charptr[512 ];
+ struct header {
+ char name[100 ];
+ char mode[8];
+ char uid[8];
+ char gid[8];
+ char size[12];
+ char mtime[12];
+ char chksum[8];
+ char linkflag;
+ char linkname[100 ];
+ char magic[8];
+ char uname[32 ];
+ char gname[32 ];
+ char devmajor[8];
+ char devminor[8];
+ } header;
+};
+long from_oct();
+
+decode_header(header, st, stdp, wantug)
+ register union record *header;
+ register struct stat *st;
+ int *stdp;
+ int wantug;
+{
+
+ st->st_mode = from_oct(8, header->header.mode);
+ st->st_mtime = from_oct(1+12, header->header.mtime);
+
+ if (0==strcmp(header->header.magic, "ustar " )) {
+
+ *stdp = 1;
+ if (wantug) {
+ st->st_uid = finduid(header->header.uname);
+ st->st_gid = findgid(header->header.gname);
+ }
+ switch (header->header.linkflag)
+ case '4' : case '3' :
+ st->st_rdev = ((dev_t)(((from_oct(8, header->header.devmajor))<<8) | (
+ from_oct(8, header->header.devminor)))) ;
+ } else {
+ *stdp = 0;
+ st->st_uid = from_oct(8, header->header.uid);
+ st->st_gid = from_oct(8, header->header.gid);
+ st->st_rdev = 0;
+ }
+}
+
+main(){
+ printf("Test passed (if it compiled at all)\n");
+}
+
+long from_oct(x)
+ char *x;
+{
+ return 0;
+}
+
+int finduid(x) char *x;
+{ return 0; }
+
+int findgid(x) char *x;
+{ return 0; }