grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Check for the appropriate condition in types.h


From: Javier Martín
Subject: Re: [PATCH] Check for the appropriate condition in types.h
Date: Sat, 25 Jul 2009 23:02:07 +0200

El jue, 23-07-2009 a las 16:57 -0400, Pavel Roskin escribió:
> On Thu, 2009-07-23 at 22:30 +0200, Vladimir 'phcoder' Serbinenko wrote:
> > >> > [GRUB_CPU_SIZEOF_VOID_P == 8]: Changed to ...
> > >> > [GRUB_CPU_SIZEOF_LONG == 8]: ... this.
> > >> Ok, let's adopt this form instead. The proposed ChangeLog would now be:
> > >
> > > >From the GNU Coding Standards:
> > >
> > > "C programs often contain compile-time `#if' conditionals.  Many changes
> > > are conditional; sometimes you add a new definition which is entirely
> > > contained in a conditional.  It is very useful to indicate in the
> > > change log the conditions for which the change applies.  Our convention
> > > for indicating conditional changes is to use square brackets around the
> > > name of the condition."
> > >
> > > It means that the square brackets are used if the changes only affect
> > > the code under the condition specified in brackets.  This is not what is
> > > happening here.
> > >
> > This is exactly what happens here: we change only what happens in
> > conditionals [GRUB_CPU_SIZEOF_VOID_P == 8] and [GRUB_CPU_SIZEOF_LONG
> > == 8]
> 
> I'm not interested to discuss the right interpretation of the coding
> standards.
> 
> Frankly, I'm not a fan of keeping ChangeLog, as it's too formal and it's
> a point of contention for parallel development.  I prefer the Linux
> kernel style of descriptions.
> 
> But since we are updating ChangeLog, let's keep it readable.
So, how would this precise change be specified? I don't mean to seem
anxious, but I wouldn't want such a simple patch to be ensnared by what
I personally consider a Byzantine argument. I propose the following
wording, but we need someone more familiar with the FSF "bureaucracy" to
review it: O Robert, we summon Thou ;)

2009-07-26 Javier Martin <address@hidden>
        * include/grub/types.h (GRUB_CPU_SIZEOF_VOID_P == 8): Change...
          (GRUB_CPU_SIZEOF_LONG == 8) ... into this where appropriate
          (UINT_TO_PTR): move outside wordsize conditionals
          (PTR_TO_UINT): new macro


> 
> > >>           (UINT_TO_PTR): move outside wordsize conditionals
> > >>           (PTR_TO_UINT): new macro
> > >
> > > We should remove PTR_TO_UINT32 and PTR_TO_UINT64 with PTR_TO_UINT
> > > everywhere.  I've checked that it doesn't introduce any warnings on any
> > > platform.
> > >
> > Sometimes PTR_TOUINT32 with precision loss is exactly what the coder
> > wants. A typical example is booting 32-bit OS on 64-bit platform. This
> > is the case of booting linux on efi64. Then the code has to ensure
> > that the target is below 4GiB (see my mm propositions for more on how
> > to ensure it). But I'm ok with requirement of additional explicit cast
> > in such cases as
> > (grub_uint32_t) PTR_TO_UINT (x)
> 
> That would be much better that PTR_TO_UINT32, as it makes the cast
> explicit in the code that should ensure that the cast is valid.
> 
> We can find such cases by compiling with -Wconversion and finding the
> newly appearing warnings after PTR_TO_UINT32 and PTR_TO_UINT64 are
> replaced with PTR_TO_UINT.
> 
I also agree that PTR_TO_UINTnn should not exist: the eventual precision
loss should be shown in the actual source using/abusing it. After this
patch is merged, I could send in another one replacing all occurrences
of those two macros by PTR_TO_UINT with the right casts.


-- 
-- Lazy, Oblivious, Recurrent Disaster -- Habbit

Attachment: signature.asc
Description: Esto es una parte de mensaje firmado digitalmente


reply via email to

[Prev in Thread] Current Thread [Next in Thread]