diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/configure.ac mainline-mod/configure.ac --- mainline/configure.ac 2012-02-21 14:29:15.000000000 +0100 +++ mainline-mod/configure.ac 2012-02-21 20:18:57.327763779 +0100 @@ -377,7 +377,7 @@ LIBS="" # debug flags. -WARN_FLAGS="-Wall -W -Wshadow -Wold-style-declaration -Wold-style-definition -Wpointer-arith -Wundef -Wextra -Waddress -Warray-bounds -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered -Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equal -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y2k -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-optimizations -Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-noreturn -Wmudflap -Wmultichar -Wnonnull -Woverflow -Wpacked-bitfield-compat -Wparentheses -Wpointer-arith -Wpointer-to-int-cast -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstack-protector -Wstrict-aliasing -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-declarations -Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wstrict-prototypes -Wpointer-sign" +WARN_FLAGS="-Wall -W -Wshadow -Wold-style-declaration -Wold-style-definition -Wpointer-arith -Wundef -Wextra -Waddress -Warray-bounds -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered -Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equal -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y2k -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-optimizations -Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-noreturn -Wmudflap -Wmultichar -Wnonnull -Woverflow -Wpacked-bitfield-compat -Wparentheses -Wpointer-arith -Wpointer-to-int-cast -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstrict-aliasing -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-declarations -Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wstrict-prototypes -Wpointer-sign" HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS" TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes" TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g" diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/commands/testload.c mainline-mod/grub-core/commands/testload.c --- mainline/grub-core/commands/testload.c 2012-02-08 00:13:14.000000000 +0100 +++ mainline-mod/grub-core/commands/testload.c 2012-02-21 20:57:08.003762787 +0100 @@ -100,7 +100,10 @@ { char sector[GRUB_DISK_SECTOR_SIZE]; - pos -= GRUB_DISK_SECTOR_SIZE; + if (pos >= GRUB_DISK_SECTOR_SIZE) + pos -= GRUB_DISK_SECTOR_SIZE; + else + pos = 0; grub_file_seek (file, pos); diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/fs/affs.c mainline-mod/grub-core/fs/affs.c --- mainline/grub-core/fs/affs.c 2012-01-29 18:28:10.000000000 +0100 +++ mainline-mod/grub-core/fs/affs.c 2012-02-21 21:05:56.271763053 +0100 @@ -143,7 +143,7 @@ mod = (grub_uint32_t) fileblock % data->htsize; /* Find the block that points to the fileblock we are looking up by following the chain until the right table is reached. */ - for (curblock = node->last_block_cache + 1; curblock <= target; curblock++) + for (curblock = node->last_block_cache + 1; curblock < target + 1; curblock++) { grub_disk_read (data->disk, node->block_cache[curblock - 1] + data->blocksize - 1, diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/kern/corecmd.c mainline-mod/grub-core/kern/corecmd.c --- mainline/grub-core/kern/corecmd.c 2012-02-12 15:26:18.000000000 +0100 +++ mainline-mod/grub-core/kern/corecmd.c 2012-02-21 20:50:07.351761943 +0100 @@ -128,7 +128,7 @@ else { char *device_name; - grub_device_t dev; + grub_device_t dev = 0; grub_fs_t fs; char *path; diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/kern/disk.c mainline-mod/grub-core/kern/disk.c --- mainline/grub-core/kern/disk.c 2012-02-11 18:19:04.000000000 +0100 +++ mainline-mod/grub-core/kern/disk.c 2012-02-21 19:22:18.931756689 +0100 @@ -660,7 +660,7 @@ goto finish; sector += (1 << (disk->log_sector_size - GRUB_DISK_SECTOR_BITS)); - buf = (char *) buf + len; + buf = (const char *) buf + len; size -= len; real_offset = 0; } @@ -678,7 +678,7 @@ while (n--) grub_disk_cache_invalidate (disk->dev->id, disk->id, sector++); - buf = (char *) buf + len; + buf = (const char *) buf + len; size -= len; } } diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/kern/emu/hostdisk.c mainline-mod/grub-core/kern/emu/hostdisk.c --- mainline/grub-core/kern/emu/hostdisk.c 2012-02-10 00:25:33.000000000 +0100 +++ mainline-mod/grub-core/kern/emu/hostdisk.c 2012-02-21 19:49:41.495760624 +0100 @@ -1145,8 +1145,9 @@ int lineno = 0; struct stat st; - auto void show_error (const char *msg); - void show_error (const char *msg) + auto void show_error (const char *msg) + __attribute__ ((noreturn)); + void __attribute__ ((noreturn)) show_error (const char *msg) { grub_util_error ("%s:%d: %s", dev_map, lineno, msg); } diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/kern/list.c mainline-mod/grub-core/kern/list.c --- mainline/grub-core/kern/list.c 2012-01-24 13:19:05.000000000 +0100 +++ mainline-mod/grub-core/kern/list.c 2012-02-21 20:13:45.891763027 +0100 @@ -68,3 +68,24 @@ if (! inactive) nitem->prio |= GRUB_PRIO_LIST_FLAG_ACTIVE; } + +void +grub_list_push (grub_list_t *head, grub_list_t item) +{ + item->prev = head; + if (*head) + (*head)->prev = &item->next; + item->next = *head; + *head = item; +} + +void +grub_list_remove (grub_list_t item) +{ + if (item->prev) + *item->prev = item->next; + if (item->next) + item->next->prev = item->prev; + item->next = 0; + item->prev = 0; +} diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/lib/pbkdf2.c mainline-mod/grub-core/lib/pbkdf2.c --- mainline/grub-core/lib/pbkdf2.c 2012-02-09 15:13:25.000000000 +0100 +++ mainline-mod/grub-core/lib/pbkdf2.c 2012-02-21 21:00:08.475756929 +0100 @@ -70,13 +70,13 @@ grub_memcpy (tmp, S, Slen); - for (i = 1; i <= l; i++) + for (i = 1; i - 1 < l; i++) { grub_memset (T, 0, hLen); - for (u = 1; u <= c; u++) + for (u = 0; u < c; u++) { - if (u == 1) + if (u == 0) { tmp[Slen + 0] = (i & 0xff000000) >> 24; tmp[Slen + 1] = (i & 0x00ff0000) >> 16; diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/lib/xzembed/xz_dec_bcj.c mainline-mod/grub-core/lib/xzembed/xz_dec_bcj.c --- mainline/grub-core/lib/xzembed/xz_dec_bcj.c 2010-12-01 15:45:43.000000000 +0100 +++ mainline-mod/grub-core/lib/xzembed/xz_dec_bcj.c 2012-02-21 21:10:05.895761645 +0100 @@ -168,7 +168,7 @@ size_t i; uint32_t instr; - for (i = 0; i + 4 <= size; i += 4) { + for (i = 0; i + 3 < size; i += 4) { instr = get_unaligned_be32(buf + i); if ((instr & 0xFC000003) == 0x48000001) { instr &= 0x03FFFFFC; diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/net/net.c mainline-mod/grub-core/net/net.c --- mainline/grub-core/net/net.c 2012-02-21 16:15:54.000000000 +0100 +++ mainline-mod/grub-core/net/net.c 2012-02-21 20:54:22.291756835 +0100 @@ -608,8 +608,8 @@ struct grub_net_network_level_interface **interf) { struct grub_net_route *route; - int depth = 0; - int routecnt = 0; + unsigned depth = 0; + unsigned routecnt = 0; struct grub_net_network_level_protocol *prot = NULL; grub_net_network_level_address_t curtarget = addr; @@ -618,7 +618,7 @@ FOR_NET_ROUTES(route) routecnt++; - for (depth = 0; depth < routecnt + 2; depth++) + for (depth = 0; depth < routecnt + 2 && depth != (unsigned) -1; depth++) { struct grub_net_route *bestroute = NULL; FOR_NET_ROUTES(route) diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/normal/charset.c mainline-mod/grub-core/normal/charset.c --- mainline/grub-core/normal/charset.c 2012-02-09 22:27:51.000000000 +0100 +++ mainline-mod/grub-core/normal/charset.c 2012-02-21 21:04:33.019756480 +0100 @@ -608,7 +608,7 @@ { struct grub_unicode_glyph t; unsigned i, tl; - for (i = 0; i <= (end - start) / 2; i++) + for (i = 0; i < (end - start) / 2 + 1; i++) { t = visual[start + i]; visual[start + i] = visual[end - i]; @@ -665,7 +665,7 @@ { unsigned j; /* FIXME: can be optimized. */ - for (j = max_level; j >= min_odd_level; j--) + for (j = max_level; j > min_odd_level - 1; j--) { unsigned in = 0; unsigned i; @@ -734,7 +734,7 @@ { int right_join = 0; signed i; - for (i = k - 1; i >= (signed) line_start; i--) + for (i = k - 1; i > (signed) line_start - 1; i--) { enum grub_join_type join_type = get_join_type (visual[i].base); if (!(visual[i].attributes diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/grub-core/normal/cmdline.c mainline-mod/grub-core/normal/cmdline.c --- mainline/grub-core/normal/cmdline.c 2012-02-12 15:26:18.000000000 +0100 +++ mainline-mod/grub-core/normal/cmdline.c 2012-02-21 21:09:16.035762789 +0100 @@ -49,13 +49,13 @@ /* Remove the lines that don't fit in the new buffer. */ if (newsize < hist_used) { - int i; - int delsize = hist_used - newsize; + grub_ssize_t i; + grub_ssize_t delsize = hist_used - newsize; hist_used = newsize; - for (i = 1; i <= delsize; i++) + for (i = 1; i < delsize + 1; i++) { - int pos = hist_end - i; + grub_ssize_t pos = hist_end - i; if (pos < 0) pos += hist_size; grub_free (old_hist_lines[pos]); diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/include/grub/list.h mainline-mod/include/grub/list.h --- mainline/include/grub/list.h 2012-02-21 16:15:01.000000000 +0100 +++ mainline-mod/include/grub/list.h 2012-02-21 20:13:45.891763027 +0100 @@ -31,26 +31,8 @@ }; typedef struct grub_list *grub_list_t; -static inline void -grub_list_push (grub_list_t *head, grub_list_t item) -{ - item->prev = head; - if (*head) - (*head)->prev = &item->next; - item->next = *head; - *head = item; -} - -static inline void -grub_list_remove (grub_list_t item) -{ - if (item->prev) - *item->prev = item->next; - if (item->next) - item->next->prev = item->prev; - item->next = 0; - item->prev = 0; -} +void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item); +void EXPORT_FUNC(grub_list_remove) (grub_list_t item); #define FOR_LIST_ELEMENTS(var, list) for ((var) = (list); (var); (var) = (var)->next) diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/Makefile.util.def mainline-mod/Makefile.util.def --- mainline/Makefile.util.def 2012-02-21 18:52:37.000000000 +0100 +++ mainline-mod/Makefile.util.def 2012-02-21 20:29:09.323764500 +0100 @@ -36,7 +36,7 @@ library = { name = libgrubmods.a; - cflags = '$(CFLAGS_POSIX) -Wno-undef'; + cflags = '$(CFLAGS_POSIX) -Wno-undef -Wno-error=logical-op -Wno-error=missing-noreturn'; cppflags = '-I$(top_srcdir)/grub-core/lib/minilzo -I$(srcdir)/grub-core/lib/xzembed -DMINILZO_HAVE_CONFIG_H'; common_nodist = grub_script.tab.c; diff --exclude Makefile.util.am --exclude Makefile.in --exclude grub.info --exclude configure --exclude aclocal.m4 --exclude '*autom4te.cache*' -ur mainline/util/bin2h.c mainline-mod/util/bin2h.c --- mainline/util/bin2h.c 2011-07-05 23:04:16.000000000 +0200 +++ mainline-mod/util/bin2h.c 2012-02-21 20:42:18.695761246 +0100 @@ -31,7 +31,7 @@ {0, 0, 0, 0 } }; -static void +static void __attribute__ ((noreturn)) usage (int status) { if (status)