Re: -Werror and --disable-werror
richardvo...@gmail.com wrote: > On Sat, Sep 19, 2009 at 9:12 AM, Vladimir 'phcoder' Serbinenko > wrote: > >> Robert Millan wrote: >> >>> Hi, >>> >>> -Werror is not in effect. This will help ensuring that all new code is >>> checked to be warning-free before commit (incidentally, I found a newly >>> introduced bug thanks to this just minutes before enabling it). >>> >>> >>> >> If you mean this change: >> >> + /* Any value different than `p.offset' will satisfy the check during >> + first loop. */ >> + lastaddr = !p.offset; >> + >> >> Then there was no bug here. >> if (labeln && lastaddr == p.offset) >>return grub_error (GRUB_ERR_BAD_PART_TABLE, "loop detected"); >> >> labeln++; >> if ((labeln & (labeln - 1)) == 0) >> > > This is a check for being an integral power of 2 (or 0), i.e. having a > single bit set. Was that the intent? It's probably worth an > explanatory comment for the sake of those who aren't familiar with the > test. > > Read the code. There is a comment >>lastaddr = p.offset; >> >> labeln is 0 during first loop run and then lastaddr is set. I explicitly >> omitted initing variables to have smaller loop detector >> > > I suspect initializing lastaddr, which takes place outside the loop, > is less expensive than testing labeln on every iteration. > > We optimise for size, not for speed. >>> Since -Werror may be a problem in some situations, I've added a >>> --disable-werror switch, which does the obvious thing. >>> >>> >>> >> >> ___ >> Grub-devel mailing list >> Grub-devel@gnu.org >> http://lists.gnu.org/mailman/listinfo/grub-devel >> >> > > > ___ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > > ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: -Werror and --disable-werror
On Sat, Sep 19, 2009 at 9:12 AM, Vladimir 'phcoder' Serbinenko wrote: > Robert Millan wrote: >> Hi, >> >> -Werror is not in effect. This will help ensuring that all new code is >> checked to be warning-free before commit (incidentally, I found a newly >> introduced bug thanks to this just minutes before enabling it). >> >> > If you mean this change: > > + /* Any value different than `p.offset' will satisfy the check during > + first loop. */ > + lastaddr = !p.offset; > + > > Then there was no bug here. > if (labeln && lastaddr == p.offset) > return grub_error (GRUB_ERR_BAD_PART_TABLE, "loop detected"); > > labeln++; > if ((labeln & (labeln - 1)) == 0) This is a check for being an integral power of 2 (or 0), i.e. having a single bit set. Was that the intent? It's probably worth an explanatory comment for the sake of those who aren't familiar with the test. > lastaddr = p.offset; > > labeln is 0 during first loop run and then lastaddr is set. I explicitly > omitted initing variables to have smaller loop detector I suspect initializing lastaddr, which takes place outside the loop, is less expensive than testing labeln on every iteration. >> Since -Werror may be a problem in some situations, I've added a >> --disable-werror switch, which does the obvious thing. >> >> > > > > ___ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: -Werror and --disable-werror
On Sat, Sep 19, 2009 at 04:12:59PM +0200, Vladimir 'phcoder' Serbinenko wrote: > Robert Millan wrote: > > Hi, > > > > -Werror is not in effect. This will help ensuring that all new code is > > checked to be warning-free before commit (incidentally, I found a newly > > introduced bug thanks to this just minutes before enabling it). > > > > > If you mean this change: > > + /* Any value different than `p.offset' will satisfy the check during > + first loop. */ > + lastaddr = !p.offset; > + > > Then there was no bug here. > if (labeln && lastaddr == p.offset) > return grub_error (GRUB_ERR_BAD_PART_TABLE, "loop detected"); > > labeln++; > if ((labeln & (labeln - 1)) == 0) > lastaddr = p.offset; > > labeln is 0 during first loop run and then lastaddr is set. I explicitly > omitted initing variables to have smaller loop detector Oh, I see. Well, since in this case there's no bug, as long as the warning is gone it should be ok. Any other idea on how to archieve that? -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: -Werror and --disable-werror
Robert Millan wrote: > Hi, > > -Werror is not in effect. This will help ensuring that all new code is > checked to be warning-free before commit (incidentally, I found a newly > introduced bug thanks to this just minutes before enabling it). > > If you mean this change: + /* Any value different than `p.offset' will satisfy the check during + first loop. */ + lastaddr = !p.offset; + Then there was no bug here. if (labeln && lastaddr == p.offset) return grub_error (GRUB_ERR_BAD_PART_TABLE, "loop detected"); labeln++; if ((labeln & (labeln - 1)) == 0) lastaddr = p.offset; labeln is 0 during first loop run and then lastaddr is set. I explicitly omitted initing variables to have smaller loop detector > Since -Werror may be a problem in some situations, I've added a > --disable-werror switch, which does the obvious thing. > > ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: -Werror and --disable-werror
On Wed, Sep 16, 2009 at 09:42:14PM +0200, Robert Millan wrote: > > Hi, > > -Werror is not in effect. Erm. s/not/now/g. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
-Werror and --disable-werror
Hi, -Werror is not in effect. This will help ensuring that all new code is checked to be warning-free before commit (incidentally, I found a newly introduced bug thanks to this just minutes before enabling it). Since -Werror may be a problem in some situations, I've added a --disable-werror switch, which does the obvious thing. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel