From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: Lists and aliasing (Re: Freeze on 27 February)
Date: Thu, 23 Feb 2012 07:17:49 +0100 [thread overview]
Message-ID: <4F45DA0D.10901@gmail.com> (raw)
In-Reply-To: <20120222230307.GC13612@caffeine.csclub.uwaterloo.ca>
[-- Attachment #1: Type: text/plain, Size: 611 bytes --]
>../../../grub-core/normal/charset.c: In function
'grub_bidi_line_logical_to_visual':
../../../grub-core/normal/charset.c:737: error: cannot optimize possibly
infinite
> loops If I do what is already done for GRUB_LONG_MIN and use: #define
GRUB_INT_MIN (-0x7fffffff - 1) ...then gcc 4.6 is happy. gcc 4.4 goes on
complaining
> about the inability to optimize possibly infinite loops.
in charset.c we actually want to ensure that it doesn't go negative. In
grub-mkfont.c it's ok to disable warning altogether. Here is the patch
(+grub-install fix)
--
Regards
Vladimir 'φ-coder/phcoder' Serbinenko
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: warn+install.diff --]
[-- Type: text/x-diff; name="warn+install.diff", Size: 14307 bytes --]
=== modified file 'conf/Makefile.common'
--- conf/Makefile.common 2012-02-22 15:27:39 +0000
+++ conf/Makefile.common 2012-02-22 17:26:03 +0000
@@ -104,7 +104,7 @@
CFLAGS_GCRY = -Wno-error -Wno-missing-field-initializers
CPPFLAGS_GCRY = -I$(top_srcdir)/grub-core/lib/libgcrypt_wrap
-CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion -Wno-old-style-definition
+CFLAGS_GNULIB = -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion -Wno-old-style-definition -Wno-unsafe-loop-optimizations
CPPFLAGS_GNULIB = -I$(top_builddir)/grub-core/gnulib -I$(top_srcdir)/grub-core/gnulib
CFLAGS_POSIX = -fno-builtin
=== modified file 'configure.ac'
--- configure.ac 2012-02-22 03:56:45 +0000
+++ configure.ac 2012-02-22 16:51:06 +0000
@@ -377,9 +377,9 @@
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 -Wstrict-aliasing -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -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-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-parameter-type -Wnested-externs -Wstrict-prototypes -Wpointer-sign"
HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS"
-TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes"
+TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
# Force no alignment to save space on i386.
=== modified file 'grub-core/commands/legacycfg.c'
--- grub-core/commands/legacycfg.c 2012-02-12 14:25:25 +0000
+++ grub-core/commands/legacycfg.c 2012-02-22 18:58:57 +0000
@@ -543,15 +543,17 @@
grub_uint8_t hash[MD5_HASHLEN];
};
+#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
+
static int
check_password_md5_real (const char *entered,
struct legacy_md5_password *pw)
{
- int enteredlen = grub_strlen (entered);
+ grub_size_t enteredlen = grub_strlen (entered);
unsigned char alt_result[MD5_HASHLEN];
unsigned char *digest;
grub_uint8_t ctx[GRUB_MD_MD5->contextsize];
- int i;
+ grub_size_t i;
GRUB_MD_MD5->init (ctx);
GRUB_MD_MD5->write (ctx, entered, enteredlen);
=== modified file 'grub-core/commands/testload.c'
--- grub-core/commands/testload.c 2012-02-22 04:04:54 +0000
+++ grub-core/commands/testload.c 2012-02-22 16:25:36 +0000
@@ -77,19 +77,24 @@
grub_printf ("Reading %s sequentially again", argv[0]);
grub_file_seek (file, 0);
- for (pos = 0; pos < size; pos += GRUB_DISK_SECTOR_SIZE)
+ for (pos = 0; pos < size;)
{
char sector[GRUB_DISK_SECTOR_SIZE];
-
- if (grub_file_read (file, sector, GRUB_DISK_SECTOR_SIZE)
- != GRUB_DISK_SECTOR_SIZE)
+ grub_size_t curlen = GRUB_DISK_SECTOR_SIZE;
+
+ if (curlen > size - pos)
+ curlen = size - pos;
+
+ if (grub_file_read (file, sector, curlen)
+ != (grub_ssize_t) curlen)
goto fail;
- if (grub_memcmp (sector, buf + pos, GRUB_DISK_SECTOR_SIZE) != 0)
+ if (grub_memcmp (sector, buf + pos, curlen) != 0)
{
grub_printf ("\nDiffers in %lld\n", (unsigned long long) pos);
goto fail;
}
+ pos += curlen;
}
grub_printf (" Done.\n");
=== modified file 'grub-core/disk/diskfilter.c'
--- grub-core/disk/diskfilter.c 2012-02-12 14:25:25 +0000
+++ grub-core/disk/diskfilter.c 2012-02-23 05:42:14 +0000
@@ -972,35 +972,40 @@
: (pv->id.id == id->id))
{
struct grub_diskfilter_lv *lv;
+ grub_disk_t disk;
/* FIXME: Check whether the update time of the superblocks are
the same. */
+ disk = grub_disk_open (disk->name);
+ if (!disk)
+ return grub_errno;
+ if (disk && pv->disk && grub_disk_get_size (disk) >= pv->part_size)
+ {
+ grub_disk_close (disk);
+ return GRUB_ERR_NONE;
+ }
+ pv->disk = disk;
/* This could happen to LVM on RAID, pv->disk points to the
raid device, we shouldn't change it. */
- if (! pv->disk)
- {
- pv->disk = grub_disk_open (disk->name);
- if (! pv->disk)
- return grub_errno;
- pv->part_start = grub_partition_get_start (disk->partition);
- pv->part_size = grub_disk_get_size (disk);
+ pv->start_sector -= pv->part_start;
+ pv->part_start = grub_partition_get_start (disk->partition);
+ pv->part_size = grub_disk_get_size (disk);
#ifdef GRUB_UTIL
- {
- grub_size_t s = 1;
- grub_partition_t p;
- for (p = disk->partition; p; p = p->parent)
- s++;
- pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));
- s = 0;
- for (p = disk->partition; p; p = p->parent)
- pv->partmaps[s++] = xstrdup (p->partmap->name);
- pv->partmaps[s++] = 0;
- }
+ {
+ grub_size_t s = 1;
+ grub_partition_t p;
+ for (p = disk->partition; p; p = p->parent)
+ s++;
+ pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));
+ s = 0;
+ for (p = disk->partition; p; p = p->parent)
+ pv->partmaps[s++] = xstrdup (p->partmap->name);
+ pv->partmaps[s++] = 0;
+ }
#endif
- if (start_sector != (grub_uint64_t)-1)
- pv->start_sector = start_sector;
- pv->start_sector += pv->part_start;
- }
+ if (start_sector != (grub_uint64_t)-1)
+ pv->start_sector = start_sector;
+ pv->start_sector += pv->part_start;
/* Add the device to the array. */
for (lv = array->lvs; lv; lv = lv->next)
if (!lv->became_readable_at && lv->fullname && is_lv_readable (lv))
=== modified file 'grub-core/disk/ldm.c'
--- grub-core/disk/ldm.c 2012-02-10 11:36:02 +0000
+++ grub-core/disk/ldm.c 2012-02-22 17:26:19 +0000
@@ -831,7 +831,7 @@
{
struct grub_diskfilter_pv *pv = NULL;
struct grub_diskfilter_vg *vg = NULL;
- struct grub_diskfilter_lv *res, *lv;
+ struct grub_diskfilter_lv *res = 0, *lv, *res_lv = 0;
pv = grub_diskfilter_get_pv_from_disk (disk, &vg);
@@ -844,19 +844,21 @@
&& lv->segments->nodes->pv == pv
&& lv->segments->nodes->start + pv->start_sector == start)
{
- res = lv;
+ res_lv = lv;
break;
}
+ if (!res_lv)
+ return NULL;
for (lv = vg->lvs; lv; lv = lv->next)
if (lv->segment_count == 1 && lv->segments->node_count == 1
&& lv->segments->type == GRUB_DISKFILTER_MIRROR
- && lv->segments->nodes->lv == lv)
+ && lv->segments->nodes->lv == res_lv)
{
res = lv;
break;
}
- if (res->fullname)
- return grub_strdup (lv->fullname);
+ if (res && res->fullname)
+ return grub_strdup (res->fullname);
return NULL;
}
=== modified file 'grub-core/fs/zfs/zfs_sha256.c'
--- grub-core/fs/zfs/zfs_sha256.c 2010-12-01 21:55:26 +0000
+++ grub-core/fs/zfs/zfs_sha256.c 2012-02-22 16:17:39 +0000
@@ -129,7 +129,7 @@
for (i = 0; i < 8; i++)
pad[padsize++] = (size << 3) >> (56 - 8 * i);
- for (i = 0; i < padsize; i += 64)
+ for (i = 0; i < padsize && i <= 64; i += 64)
SHA256Transform(H, pad + i);
zcp->zc_word[0] = grub_cpu_to_zfs64 ((grub_uint64_t)H[0] << 32 | H[1],
=== modified file 'grub-core/io/gzio.c'
--- grub-core/io/gzio.c 2012-02-12 14:25:25 +0000
+++ grub-core/io/gzio.c 2012-02-22 16:45:45 +0000
@@ -363,6 +363,8 @@
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
};
+#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
+
#define NEEDBITS(n) do {while(k<(n)){b|=((ulg)get_byte(gzio))<<k;k+=8;}} while (0)
#define DUMPBITS(n) do {b>>=(n);k-=(n);} while (0)
=== modified file 'grub-core/lib/LzmaEnc.c'
--- grub-core/lib/LzmaEnc.c 2012-02-10 15:48:48 +0000
+++ grub-core/lib/LzmaEnc.c 2012-02-22 16:16:26 +0000
@@ -1211,7 +1211,7 @@
{
UInt32 i;
reps[0] = prevOpt->backs[pos];
- for (i = 1; i <= pos; i++)
+ for (i = 1; i < pos + 1; i++)
reps[i] = prevOpt->backs[i - 1];
for (; i < LZMA_NUM_REPS; i++)
reps[i] = prevOpt->backs[i];
=== modified file 'grub-core/net/net.c'
--- grub-core/net/net.c 2012-02-21 15:16:45 +0000
+++ grub-core/net/net.c 2012-02-22 18:55:00 +0000
@@ -608,8 +608,8 @@
struct grub_net_network_level_interface **interf)
{
struct grub_net_route *route;
- int depth = 0;
- int routecnt = 0;
+ unsigned int depth = 0;
+ unsigned int 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 < GRUB_UINT_MAX; depth++)
{
struct grub_net_route *bestroute = NULL;
FOR_NET_ROUTES(route)
=== modified file 'grub-core/normal/charset.c'
--- grub-core/normal/charset.c 2012-02-22 04:19:11 +0000
+++ grub-core/normal/charset.c 2012-02-23 05:46:26 +0000
@@ -734,7 +734,8 @@
{
int right_join = 0;
signed i;
- for (i = k - 1; i > (signed) line_start - 1; i--)
+ for (i = k - 1; i > (signed) line_start - 1 && i >= 0;
+ i--)
{
enum grub_join_type join_type = get_join_type (visual[i].base);
if (!(visual[i].attributes
=== modified file 'grub-core/normal/cmdline.c'
--- grub-core/normal/cmdline.c 2012-02-12 18:24:23 +0000
+++ grub-core/normal/cmdline.c 2012-02-22 16:21:47 +0000
@@ -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_size_t i;
+ grub_size_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]);
=== modified file 'grub-core/script/parser.y'
--- grub-core/script/parser.y 2012-02-10 15:48:48 +0000
+++ grub-core/script/parser.y 2012-02-22 17:31:45 +0000
@@ -31,6 +31,9 @@
#include "grub_script.tab.h"
#pragma GCC diagnostic ignored "-Wunreachable-code"
+#pragma GCC diagnostic ignored "-Wmissing-declarations"
+#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
+
%}
%union {
=== modified file 'grub-core/script/yylex.l'
--- grub-core/script/yylex.l 2012-02-03 10:56:49 +0000
+++ grub-core/script/yylex.l 2012-02-22 16:49:25 +0000
@@ -27,6 +27,8 @@
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
+#pragma GCC diagnostic ignored "-Wmissing-declarations"
+#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
#define yyfree grub_lexer_yyfree
#define yyalloc grub_lexer_yyalloc
=== modified file 'util/grub-install.in'
--- util/grub-install.in 2012-02-10 17:16:27 +0000
+++ util/grub-install.in 2012-02-23 05:58:48 +0000
@@ -633,8 +633,8 @@
exit 1
fi
# Get the Open Firmware device tree path translation.
- dev="`echo $grub_device | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`"
- partno="`echo $grub_device | sed -e 's/.*[^0-9]\([0-9]\+\)$/\1/'`"
+ dev="`echo $install_device | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`"
+ partno="`echo $install_device | sed -e 's/.*[^0-9]\([0-9]\+\)$/\1/'`"
ofpath="`$ofpathname $dev`" || {
gettext_printf "Couldn't find IEEE1275 device tree path for %s.\nYou will have to set \`boot-device' variable manually.\n" "$dev" 1>&2
exit 1
=== modified file 'util/grub-mkfont.c'
--- util/grub-mkfont.c 2012-02-10 12:31:43 +0000
+++ util/grub-mkfont.c 2012-02-23 06:15:32 +0000
@@ -681,6 +681,8 @@
*offset += 10;
}
+#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
+
static void
print_glyphs (struct grub_font_info *font_info)
{
@@ -717,7 +719,7 @@
bitmap = glyph->bitmap;
mask = 0x80;
- for (y = ymax - 1; y >= ymin; y--)
+ for (y = ymax - 1; y > ymin - 1; y--)
{
int line_pos;
next prev parent reply other threads:[~2012-02-23 6:18 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-21 16:12 Freeze on 27 February Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-21 16:19 ` Lennart Sorensen
2012-02-21 17:09 ` Lists and aliasing (Re: Freeze on 27 February) Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-21 18:46 ` Lennart Sorensen
2012-02-21 19:58 ` Lennart Sorensen
2012-02-21 20:29 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-22 15:34 ` Lennart Sorensen
2012-02-22 15:50 ` Lennart Sorensen
2012-02-22 15:57 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-22 16:18 ` Lennart Sorensen
2012-02-22 16:25 ` Lennart Sorensen
2012-02-22 16:43 ` Lennart Sorensen
2012-02-22 16:50 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-22 17:16 ` Lennart Sorensen
2012-02-22 17:35 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-22 17:41 ` Lennart Sorensen
2012-02-22 17:46 ` Lennart Sorensen
2012-02-22 18:01 ` Lennart Sorensen
2012-02-22 18:28 ` Lennart Sorensen
2012-02-22 18:41 ` Lennart Sorensen
2012-02-22 19:00 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-22 22:50 ` Lennart Sorensen
2012-02-22 23:03 ` Lennart Sorensen
2012-02-23 2:39 ` Isaac Dupree
2012-02-23 6:17 ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2012-02-23 17:43 ` Lennart Sorensen
2012-02-24 23:16 ` Lennart Sorensen
2012-02-22 17:38 ` Lennart Sorensen
2012-02-22 16:51 ` Lennart Sorensen
2012-02-21 21:40 ` Lennart Sorensen
2012-02-22 5:35 ` Freeze on 27 February Richard Laager
2012-02-23 6:34 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-27 6:58 ` Richard Laager
2012-02-27 18:17 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-27 7:32 ` Richard Laager
[not found] ` <1330033617.3895.26.camel@watermelon.coderich.net>
[not found] ` <4F4AC782.1090402@gmail.com>
[not found] ` <1330322499.2901.5.camel@watermelon.coderich.net>
[not found] ` <1330322681.2901.8.camel@watermelon.coderich.net>
2012-02-27 18:18 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-27 18:20 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-02-27 19:46 ` Richard Laager
2012-03-08 22:51 ` Remaining ZFS Changes for 2.00 (Was: Re: Freeze on 27 February) Richard Laager
2012-03-10 12:44 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-03-10 13:39 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-03-10 15:51 ` Richard Laager
2012-03-10 16:01 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-03-10 13:41 ` Vladimir 'φ-coder/phcoder' Serbinenko
2012-03-10 17:51 ` Vladimir 'φ-coder/phcoder' Serbinenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F45DA0D.10901@gmail.com \
--to=phcoder@gmail.com \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.