Fix building with newer gcc versions. Most changes taken from Debian. --- obj/obj_ia64.c +++ obj/obj_ia64.c @@ -127,6 +127,7 @@ return (*(bundle + 1) >> 23) & 0x1ffffffffff; default: + ; } return (-1); } --- depmod/depmod.c +++ depmod/depmod.c @@ -1133,7 +1133,7 @@ for (ksym = ksyms; so_far < nksyms; ++so_far, ksym++) { if (strncmp((char *)ksym->name, "GPLONLY_", 8) == 0) - ((char *)ksym->name) += 8; + ksym->name = ((char *)ksym->name) + 8; assert(n_syms < MAX_MAP_SYM); symtab[n_syms++] = addsym((char *)ksym->name, mod, SYM_DEFINED, 0); } @@ -1265,7 +1265,7 @@ * error. Use the error() routine but do not count * any errors. Remove in 2.5. */ - int save_errors = errors; + int save_errors = error_count; if (!quiet && nberr == 0) error("*** Unresolved symbols in %s", ptmod->name); @@ -1274,7 +1274,7 @@ nberr++; if (flag_unresolved_error) ret = 1; - errors = save_errors; + error_count = save_errors; } } verbose("%s\n", ptmod->name + skipchars); @@ -1675,6 +1675,6 @@ #else int main(int argc, char **argv) { - return depmod_main(argc, argv) || errors; + return depmod_main(argc, argv) || error_count; } #endif /* defined(COMMON_3264) && defined(ONLY_32) */ --- genksyms/genksyms.c +++ genksyms/genksyms.c @@ -45,7 +45,7 @@ int flag_debug, flag_dump_defs, flag_warnings; int checksum_version = 1, kernel_version = version(2,0,0); -static int errors; +static int num_errors; static int nsyms; static struct symbol *expansion_trail; @@ -458,7 +458,7 @@ va_end(args); putc('\n', stderr); - errors++; + num_errors++; } } @@ -476,7 +476,7 @@ va_end(args); putc('\n', stderr); - errors++; + num_errors++; } } @@ -597,5 +597,5 @@ nsyms, HASH_BUCKETS, (double)nsyms / (double)HASH_BUCKETS); } - return errors != 0; + return num_errors != 0; } --- include/util.h +++ include/util.h @@ -39,8 +39,8 @@ extern int xftw(const char *directory, xftw_func_t); /* Error logging */ -extern int log; -extern int errors; +extern int logging; +extern int error_count; extern const char *error_file; extern int flag_verbose; --- insmod/insmod.c +++ insmod/insmod.c @@ -275,7 +275,7 @@ if (strncmp((char *)s->name, "GPLONLY_", 8) == 0) { gplonly_seen = 1; if (gpl) - ((char *)s->name) += 8; + s->name = ((char *)s->name) + 8; else continue; } @@ -1679,7 +1679,7 @@ error_file = "insmod"; /* To handle repeated calls from combined modprobe */ - errors = optind = 0; + error_count = optind = 0; /* Process the command line. */ while ((o = getopt_long(argc, argv, "fhkLmnpqrsSvVxXyYNe:o:O:P:R:", @@ -2064,7 +2064,7 @@ goto out; /**** No symbols or sections to be changed after kallsyms above ***/ - if (errors) + if (error_count) goto out; /* If we were just checking, we made it. */ @@ -2123,10 +2123,10 @@ test_read.m.read_start = m_addr + sizeof(struct module); test_read.m.read_end = test_read.m.read_start + sizeof(test_read.data); if (sys_init_module(m_name, (struct module *) &test_read)) { - int old_errors = errors; + int old_errors = error_count; error("has persistent data but the kernel is too old to support it." " Expect errors during rmmod as well"); - errors = old_errors; + error_count = old_errors; } } @@ -2152,7 +2152,7 @@ #else init_module(m_name, f, m_size, blob_name, noload, flag_load_map); #endif - if (errors) { + if (error_count) { if (!noload) delete_module(m_name); goto out; --- insmod/kallsyms.c +++ insmod/kallsyms.c @@ -80,7 +80,7 @@ error_file = "kallsyms"; /* To handle repeated calls from combined modprobe */ - errors = optind = 0; + error_count = optind = 0; /* Process the command line. */ while ((c = getopt_long(argc, argv, "Vh", --- insmod/modprobe.c +++ insmod/modprobe.c @@ -1023,7 +1023,7 @@ if (quiet) my_argv[my_argc++] = "-q"; - if (log) + if (logging) my_argv[my_argc++] = "-s"; if (insmod_opt) { --- insmod/rmmod.c +++ insmod/rmmod.c @@ -261,9 +261,9 @@ read_parm.m.read_start = mp->sym->value; read_parm.m.read_end = read_parm.m.read_start + datasize; if (sys_init_module(module, (struct module *) &read_parm)) { - int old_errors = errors; + int old_errors = error_count; error("has persistent data but the kernel is too old to support it."); - errors = old_errors; + error_count = old_errors; return(0); } --- util/logger.c +++ util/logger.c @@ -31,10 +31,10 @@ /*======================================================================*/ -int log; +int logging; static int silent; -int errors; +int error_count; const char *error_file; const char *program_name; @@ -75,7 +75,7 @@ if (silent) ; - else if (log) { + else if (logging) { char buf[2*PATH_MAX]; int n; @@ -100,7 +100,7 @@ putc('\n', stderr); } - errors++; + error_count++; } void lprintf(const char *fmt,...) @@ -108,7 +108,7 @@ va_list args; if (silent); - else if (log) { + else if (logging) { char buf[2*PATH_MAX]; va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); @@ -132,5 +132,5 @@ #ifdef STOREMSG atexit(dumpmsg); #endif - log = 1; + logging = 1; } --- obj/obj_kallsyms.c +++ obj/obj_kallsyms.c @@ -200,8 +200,8 @@ /* Initial contents, header + one entry per input section. No strings. */ osec->header.sh_size = sizeof(*a_hdr) + loaded*sizeof(*a_sec); - a_hdr = (struct kallsyms_header *) osec->contents = - xmalloc(osec->header.sh_size); + osec->contents = xmalloc(osec->header.sh_size); + a_hdr = (struct kallsyms_header *) osec->contents; memset(osec->contents, 0, osec->header.sh_size); a_hdr->size = sizeof(*a_hdr); a_hdr->sections = loaded; @@ -275,8 +275,8 @@ a_hdr->symbol_off + a_hdr->symbols*a_hdr->symbol_size + strings_size - strings_left; - a_hdr = (struct kallsyms_header *) osec->contents = - xrealloc(a_hdr, a_hdr->total_size); + osec->contents = xrealloc(a_hdr, a_hdr->total_size); + a_hdr = (struct kallsyms_header *) osec->contents; p = (char *)a_hdr + a_hdr->symbol_off; memcpy(p, symbols, a_hdr->symbols*a_hdr->symbol_size); free(symbols); --- obj/obj_ppc.c +++ obj/obj_ppc.c @@ -25,6 +25,7 @@ #include <obj.h> #include <util.h> #include <assert.h> +#include <stdlib.h> /*======================================================================*/ @@ -255,7 +256,8 @@ archdata_sec->header.sh_size = 0; sec = obj_find_section(f, "__ftr_fixup"); if (sec) { - ad = (struct archdata *) (archdata_sec->contents) = xmalloc(sizeof(*ad)); + archdata_sec->contents = xmalloc(sizeof(*ad)); + ad = (struct archdata *) (archdata_sec->contents); memset(ad, 0, sizeof(*ad)); archdata_sec->header.sh_size = sizeof(*ad); ad->__start___ftr_fixup = sec->header.sh_addr;