printk("winch_tramp : failed to read synchronization byte\n");
                printk("read failed, err = %d\n", -n);
                printk("fd %d will not support SIGWINCH\n", fd);
-               *fd_out = -1;
+                pid = -1;
        }
        return(pid);
 }
        if(!CHOOSE_MODE_PROC(is_tracer_winch, is_skas_winch, pid, fd,
                             tty) && (pid == -1)){
                thread = winch_tramp(fd, tty, &thread_fd);
-               if(fd != -1){
+               if(thread > 0){
                        register_winch_irq(thread_fd, fd, thread, tty);
 
                        count = os_write_file(thread_fd, &c, sizeof(c));
 
        return(0);
 }
 
-void tap_check_ips(char *gate_addr, char *eth_addr)
+void tap_check_ips(char *gate_addr, unsigned char *eth_addr)
 {
        int tap_addr[4];
 
 
        char *addr;
        char *gate_addr;
        int slave;
-       char ibuf[ENC_BUF_SIZE];
-       char obuf[ENC_BUF_SIZE];
+       unsigned char ibuf[ENC_BUF_SIZE];
+       unsigned char obuf[ENC_BUF_SIZE];
        int more; /* more data: do not read fd until ibuf has been drained */
        int pos;
        int esc;
 
 #define SLIP_ESC_END         0334      /* ESC ESC_END means END 'data' */
 #define SLIP_ESC_ESC         0335      /* ESC ESC_ESC means ESC 'data' */
 
-static inline int slip_unesc(unsigned char c,char *buf,int *pos, int *esc)
+static inline int slip_unesc(unsigned char c, unsigned char *buf, int *pos,
+                             int *esc)
 {
        int ret;
 
 
        struct arg_list_dummy_wrapper argw;
        int pid;
        int slave;
-       char ibuf[ENC_BUF_SIZE];
-       char obuf[ENC_BUF_SIZE];
+       unsigned char ibuf[ENC_BUF_SIZE];
+       unsigned char obuf[ENC_BUF_SIZE];
        int more; /* more data: do not read fd until ibuf has been drained */
        int pos;
        int esc;
 
 }
 
 static struct console stderr_console = {
-       .name           "stderr",
-       .write          stderr_console_write,
-       .flags          CON_PRINTBUFFER,
+       .name           = "stderr",
+       .write          = stderr_console_write,
+       .flags          = CON_PRINTBUFFER,
 };
 
 static int __init stderr_console_init(void)
 
        int as_interrupt;
 
        int originating_fd;
-       int originlen;
+       unsigned int originlen;
        unsigned char origin[128];                      /* sockaddr_un */
 
        struct mconsole_request request;
 
 extern void free_output_buffer(void *buffer);
 
 extern int tap_open_common(void *dev, char *gate_addr);
-extern void tap_check_ips(char *gate_addr, char *eth_addr);
+extern void tap_check_ips(char *gate_addr, unsigned char *eth_addr);
 
 extern void read_output(int fd, char *output_out, int len);
 
 
 extern int os_open_file(char *file, struct openflags flags, int mode);
 extern int os_read_file(int fd, void *buf, int len);
 extern int os_write_file(int fd, const void *buf, int count);
-extern int os_file_size(char *file, long long *size_out);
+extern int os_file_size(char *file, unsigned long long *size_out);
 extern int os_file_modtime(char *file, unsigned long *modtime);
 extern int os_pipe(int *fd, int stream, int close_on_exec);
 extern int os_set_fd_async(int fd, int owner);
 
 extern char host_info[];
 
 extern char saved_command_line[];
-extern char command_line[];
-
-extern char *tempdir;
 
 extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end;
 extern unsigned long _unprotected_end;
 
                                elf_aux_hwcap = auxv->a_un.a_val;
                                break;
                        case AT_PLATFORM:
-                               elf_aux_platform = auxv->a_un.a_ptr;
+                                /* elf.h removed the pointer elements from
+                                 * a_un, so we have to use a_val, which is
+                                 * all that's left.
+                                 */
+                               elf_aux_platform = (char *) auxv->a_un.a_val;
                                break;
                        case AT_PAGESZ:
                                page_size = auxv->a_un.a_val;
 
                       (int (*)(int, void *, int)) write, copy_to_user_proc));
 }
 
-int os_file_size(char *file, long long *size_out)
+int os_file_size(char *file, unsigned long long *size_out)
 {
        struct uml_stat buf;
        int err;