From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1S0S0H-0007mN-Tc for mharc-grub-devel@gnu.org; Thu, 23 Feb 2012 01:18:09 -0500 Received: from eggs.gnu.org ([140.186.70.92]:42065) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S0S0B-0007ft-UZ for grub-devel@gnu.org; Thu, 23 Feb 2012 01:18:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S0S09-00066X-VW for grub-devel@gnu.org; Thu, 23 Feb 2012 01:18:03 -0500 Received: from mail-ee0-f41.google.com ([74.125.83.41]:34490) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S0S09-00066O-Mg for grub-devel@gnu.org; Thu, 23 Feb 2012 01:18:01 -0500 Received: by eekc13 with SMTP id c13so326148eek.0 for ; Wed, 22 Feb 2012 22:18:00 -0800 (PST) Received-SPF: pass (google.com: domain of phcoder@gmail.com designates 10.14.95.141 as permitted sender) client-ip=10.14.95.141; Authentication-Results: mr.google.com; spf=pass (google.com: domain of phcoder@gmail.com designates 10.14.95.141 as permitted sender) smtp.mail=phcoder@gmail.com; dkim=pass header.i=phcoder@gmail.com Received: from mr.google.com ([10.14.95.141]) by 10.14.95.141 with SMTP id p13mr241482eef.73.1329977880901 (num_hops = 1); Wed, 22 Feb 2012 22:18:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type; bh=EVoa9Vf+f83G3eEV4AUEsJYuiNFB3/oOVGz+NOH+/TE=; b=qLwChBdaf2/oTAzk6PUBRrfrXvhKZaeoCQ6/JXg/tFQVZYR/Yo5OcNkrS0xs2odgCB LiiHt1WXu7Itta7vo2rZpg5p2YYLX6I4fre/0aLzfEEqsuDTaIoT9w4Jb2+ZZQ7iOmol ZLlXAoAl/erX0a0ZegqvyXLpPPDah+gRO4sPQ= Received: by 10.14.95.141 with SMTP id p13mr186430eef.73.1329977880832; Wed, 22 Feb 2012 22:18:00 -0800 (PST) Received: from debian.x201.phnet (55-234.197-178.cust.bluewin.ch. [178.197.234.55]) by mx.google.com with ESMTPS id o49sm1642144eeb.7.2012.02.22.22.17.56 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 22 Feb 2012 22:17:59 -0800 (PST) Message-ID: <4F45DA0D.10901@gmail.com> Date: Thu, 23 Feb 2012 07:17:49 +0100 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20120216 Icedove/8.0 MIME-Version: 1.0 To: The development of GNU GRUB Subject: Re: Lists and aliasing (Re: Freeze on 27 February) References: <4F451CD7.9080106@gmail.com> <20120222171612.GL24235@caffeine.csclub.uwaterloo.ca> <4F452775.9070900@gmail.com> <20120222174156.GN24235@caffeine.csclub.uwaterloo.ca> <20120222174614.GO24235@caffeine.csclub.uwaterloo.ca> <20120222180141.GP24235@caffeine.csclub.uwaterloo.ca> <20120222182806.GQ24235@caffeine.csclub.uwaterloo.ca> <20120222184104.GS24235@caffeine.csclub.uwaterloo.ca> <4F453B66.4040406@gmail.com> <20120222225037.GB13612@caffeine.csclub.uwaterloo.ca> <20120222230307.GC13612@caffeine.csclub.uwaterloo.ca> In-Reply-To: <20120222230307.GC13612@caffeine.csclub.uwaterloo.ca> Content-Type: multipart/mixed; boundary="------------070406020806070808070406" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 74.125.83.41 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Feb 2012 06:18:05 -0000 This is a multi-part message in MIME format. --------------070406020806070808070406 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit >../../../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 --------------070406020806070808070406 Content-Type: text/x-diff; name="warn+install.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="warn+install.diff" =3D=3D=3D 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 =3D -Wno-error -Wno-missing-field-initializers CPPFLAGS_GCRY =3D -I$(top_srcdir)/grub-core/lib/libgcrypt_wrap =20 -CFLAGS_GNULIB =3D -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-p= arameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion -Wno-= old-style-definition +CFLAGS_GNULIB =3D -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-p= arameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion -Wno-= old-style-definition -Wno-unsafe-loop-optimizations CPPFLAGS_GNULIB =3D -I$(top_builddir)/grub-core/gnulib -I$(top_srcdir)/g= rub-core/gnulib =20 CFLAGS_POSIX =3D -fno-builtin =3D=3D=3D 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=3D"" =20 # debug flags. -WARN_FLAGS=3D"-Wall -W -Wshadow -Wold-style-declaration -Wold-style-defi= nition -Wpointer-arith -Wundef -Wextra -Waddress -Warray-bounds -Wattribu= tes -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered = -Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations -Wdi= sabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equ= al -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y= 2k -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimpl= icit-int -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-op= timizations -Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initiali= zers -Wmissing-format-attribute -Wmissing-noreturn -Wmudflap -Wmultichar = -Wnonnull -Woverflow -Wpacked-bitfield-compat -Wparentheses -Wpointer-ari= th -Wpointer-to-int-cast -Wreturn-type -Wsequence-point -Wshadow -Wsign-c= ompare -Wstrict-aliasing -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits = -Wundef -Wuninitialized -Wunknown-pragmas -Wunused -Wunused-function -Wun= used-label -Wunused-parameter -Wunused-value -Wunused-variable -Wvariadi= c-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-declarations -= Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wstrict-p= rototypes -Wpointer-sign" +WARN_FLAGS=3D"-Wall -W -Wshadow -Wold-style-declaration -Wold-style-defi= nition -Wpointer-arith -Wundef -Wextra -Waddress -Warray-bounds -Wattribu= tes -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered = -Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations -Wdi= sabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equ= al -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y= 2k -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimpl= icit-int -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-op= timizations -Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initiali= zers -Wmissing-format-attribute -Wmissing-noreturn -Wmudflap -Wmultichar = -Wnonnull -Woverflow -Wpacked-bitfield-compat -Wparentheses -Wpointer-ari= th -Wpointer-to-int-cast -Wreturn-type -Wsequence-point -Wshadow -Wsign-c= ompare -Wstrict-aliasing -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits = -Wundef -Wuninitialized -Wunknown-pragmas -Wunused -Wunused-function -Wun= used-label -Wunused-parameter -Wunused-value -Wunused-variable -Wvariadi= c-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-parameter-type= -Wnested-externs -Wstrict-prototypes -Wpointer-sign" HOST_CFLAGS=3D"$HOST_CFLAGS $WARN_FLAGS" -TARGET_CFLAGS=3D"$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissi= ng-prototypes" +TARGET_CFLAGS=3D"$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissi= ng-prototypes -Wmissing-declarations" TARGET_CCASFLAGS=3D"$TARGET_CCASFLAGS -g" =20 # Force no alignment to save space on i386. =3D=3D=3D 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]; }; =20 +#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" + static int check_password_md5_real (const char *entered, struct legacy_md5_password *pw) { - int enteredlen =3D grub_strlen (entered); + grub_size_t enteredlen =3D 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; =20 GRUB_MD_MD5->init (ctx); GRUB_MD_MD5->write (ctx, entered, enteredlen); =3D=3D=3D 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); =20 - for (pos =3D 0; pos < size; pos +=3D GRUB_DISK_SECTOR_SIZE) + for (pos =3D 0; pos < size;) { char sector[GRUB_DISK_SECTOR_SIZE]; - - if (grub_file_read (file, sector, GRUB_DISK_SECTOR_SIZE) - !=3D GRUB_DISK_SECTOR_SIZE) + grub_size_t curlen =3D GRUB_DISK_SECTOR_SIZE; + + if (curlen > size - pos) + curlen =3D size - pos; + + if (grub_file_read (file, sector, curlen) + !=3D (grub_ssize_t) curlen) goto fail; =20 - if (grub_memcmp (sector, buf + pos, GRUB_DISK_SECTOR_SIZE) !=3D 0)= + if (grub_memcmp (sector, buf + pos, curlen) !=3D 0) { grub_printf ("\nDiffers in %lld\n", (unsigned long long) pos); goto fail; } + pos +=3D curlen; } grub_printf (" Done.\n"); =20 =3D=3D=3D 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 =3D=3D id->id)) { struct grub_diskfilter_lv *lv; + grub_disk_t disk; /* FIXME: Check whether the update time of the superblocks are the same. */ + disk =3D grub_disk_open (disk->name); + if (!disk) + return grub_errno; + if (disk && pv->disk && grub_disk_get_size (disk) >=3D pv->part_size) + { + grub_disk_close (disk); + return GRUB_ERR_NONE; + } + pv->disk =3D 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 =3D grub_disk_open (disk->name); - if (! pv->disk) - return grub_errno; - pv->part_start =3D grub_partition_get_start (disk->partition); - pv->part_size =3D grub_disk_get_size (disk); + pv->start_sector -=3D pv->part_start; + pv->part_start =3D grub_partition_get_start (disk->partition); + pv->part_size =3D grub_disk_get_size (disk); =20 #ifdef GRUB_UTIL - { - grub_size_t s =3D 1; - grub_partition_t p; - for (p =3D disk->partition; p; p =3D p->parent) - s++; - pv->partmaps =3D xmalloc (s * sizeof (pv->partmaps[0])); - s =3D 0; - for (p =3D disk->partition; p; p =3D p->parent) - pv->partmaps[s++] =3D xstrdup (p->partmap->name); - pv->partmaps[s++] =3D 0; - } + { + grub_size_t s =3D 1; + grub_partition_t p; + for (p =3D disk->partition; p; p =3D p->parent) + s++; + pv->partmaps =3D xmalloc (s * sizeof (pv->partmaps[0])); + s =3D 0; + for (p =3D disk->partition; p; p =3D p->parent) + pv->partmaps[s++] =3D xstrdup (p->partmap->name); + pv->partmaps[s++] =3D 0; + } #endif - if (start_sector !=3D (grub_uint64_t)-1) - pv->start_sector =3D start_sector; - pv->start_sector +=3D pv->part_start; - } + if (start_sector !=3D (grub_uint64_t)-1) + pv->start_sector =3D start_sector; + pv->start_sector +=3D pv->part_start; /* Add the device to the array. */ for (lv =3D array->lvs; lv; lv =3D lv->next) if (!lv->became_readable_at && lv->fullname && is_lv_readable (lv)) =3D=3D=3D 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 =3D NULL; struct grub_diskfilter_vg *vg =3D NULL; - struct grub_diskfilter_lv *res, *lv; + struct grub_diskfilter_lv *res =3D 0, *lv, *res_lv =3D 0; =20 pv =3D grub_diskfilter_get_pv_from_disk (disk, &vg); =20 @@ -844,19 +844,21 @@ && lv->segments->nodes->pv =3D=3D pv && lv->segments->nodes->start + pv->start_sector =3D=3D start) { - res =3D lv; + res_lv =3D lv; break; } + if (!res_lv) + return NULL; for (lv =3D vg->lvs; lv; lv =3D lv->next) if (lv->segment_count =3D=3D 1 && lv->segments->node_count =3D=3D 1 && lv->segments->type =3D=3D GRUB_DISKFILTER_MIRROR - && lv->segments->nodes->lv =3D=3D lv) + && lv->segments->nodes->lv =3D=3D res_lv) { res =3D lv; break; } - if (res->fullname) - return grub_strdup (lv->fullname); + if (res && res->fullname) + return grub_strdup (res->fullname); return NULL; } =20 =3D=3D=3D 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 =3D 0; i < 8; i++) pad[padsize++] =3D (size << 3) >> (56 - 8 * i); =20 - for (i =3D 0; i < padsize; i +=3D 64) + for (i =3D 0; i < padsize && i <=3D 64; i +=3D 64) SHA256Transform(H, pad + i); =20 zcp->zc_word[0] =3D grub_cpu_to_zfs64 ((grub_uint64_t)H[0] << 32 | H[1= ],=20 =3D=3D=3D 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 }; =20 +#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" + #define NEEDBITS(n) do {while(k<(n)){b|=3D((ulg)get_byte(gzio))<>=3D(n);k-=3D(n);} while (0) =20 =3D=3D=3D 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] =3D prevOpt->backs[pos]; - for (i =3D 1; i <=3D pos; i++) + for (i =3D 1; i < pos + 1; i++) reps[i] =3D prevOpt->backs[i - 1]; for (; i < LZMA_NUM_REPS; i++) reps[i] =3D prevOpt->backs[i]; =3D=3D=3D 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 =3D 0; - int routecnt =3D 0; + unsigned int depth =3D 0; + unsigned int routecnt =3D 0; struct grub_net_network_level_protocol *prot =3D NULL; grub_net_network_level_address_t curtarget =3D addr; =20 @@ -618,7 +618,7 @@ FOR_NET_ROUTES(route) routecnt++; =20 - for (depth =3D 0; depth < routecnt + 2; depth++) + for (depth =3D 0; depth < routecnt + 2 && depth < GRUB_UINT_MAX; depth= ++) { struct grub_net_route *bestroute =3D NULL; FOR_NET_ROUTES(route) =3D=3D=3D 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 =3D 0; signed i; - for (i =3D k - 1; i > (signed) line_start - 1; i--) + for (i =3D k - 1; i > (signed) line_start - 1 && i >=3D 0; + i--) { enum grub_join_type join_type =3D get_join_type (visual[i].base); if (!(visual[i].attributes =3D=3D=3D 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 =3D hist_used - newsize; + grub_size_t i; + grub_size_t delsize =3D hist_used - newsize; hist_used =3D newsize; =20 - for (i =3D 1; i <=3D delsize; i++) + for (i =3D 1; i < delsize + 1; i++) { - int pos =3D hist_end - i; + grub_ssize_t pos =3D hist_end - i; if (pos < 0) pos +=3D hist_size; grub_free (old_hist_lines[pos]); =3D=3D=3D 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" =20 #pragma GCC diagnostic ignored "-Wunreachable-code" +#pragma GCC diagnostic ignored "-Wmissing-declarations" +#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" + %} =20 %union { =3D=3D=3D 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 @@ =20 #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" =20 #define yyfree grub_lexer_yyfree #define yyalloc grub_lexer_yyalloc =3D=3D=3D 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=3D"`echo $grub_device | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`" - partno=3D"`echo $grub_device | sed -e 's/.*[^0-9]\([0-9]\+\)$/\1/'`" + dev=3D"`echo $install_device | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`" + partno=3D"`echo $install_device | sed -e 's/.*[^0-9]\([0-9]\+\)$/\1/'`"= ofpath=3D"`$ofpathname $dev`" || { gettext_printf "Couldn't find IEEE1275 device tree path for %s.\nYo= u will have to set \`boot-device' variable manually.\n" "$dev" 1>&2 exit 1 =3D=3D=3D 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 +=3D 10; } =20 +#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" + static void print_glyphs (struct grub_font_info *font_info) { @@ -717,7 +719,7 @@ =20 bitmap =3D glyph->bitmap; mask =3D 0x80; - for (y =3D ymax - 1; y >=3D ymin; y--) + for (y =3D ymax - 1; y > ymin - 1; y--) { int line_pos; =20 --------------070406020806070808070406--