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 <lordhab...@gmail.com> * 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
signature.asc
Description: Esto es una parte de mensaje firmado digitalmente
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel