All of lore.kernel.org
 help / color / mirror / Atom feed
* Trunk fails to build with -O<anything other than 0>
@ 2013-01-30 18:32 Leif Lindholm
  2013-01-30 19:41 ` Andrey Borzenkov
  0 siblings, 1 reply; 3+ messages in thread
From: Leif Lindholm @ 2013-01-30 18:32 UTC (permalink / raw)
  To: The development of GNU GRUB

Our Ubuntu (12.04/12.10) build environment defaults configuring with 
CFLAGS containing -O2. Trunk currently does not build successfully with 
this on either my ARM platform or my x86_64 desktop.

This isn't causing any serious problems, but I thought I would report 
what I've found.

Commit #4635 included source code changes that ended up causing build
failures in several of the libcrypt cipher files with
---
libgrubgcry_a-arcfour.o `test -f 
'grub-core/lib/libgcrypt-grub/cipher/arcfour.c' || echo 
'./'`grub-core/lib/libgcrypt-grub/cipher/arcfour.c
In file included from ./include/grub/misc.h:27:0,
                  from ./grub-core/lib/libgcrypt_wrap/cipher_wrap.h:24,
                  from grub-core/lib/libgcrypt-grub/cipher/types.h:2,
                  from grub-core/lib/libgcrypt-grub/cipher/arcfour.c:30:
./include/grub/i18n.h: In function '_':
./include/grub/i18n.h:56:10: error: 'LC_MESSAGES' undeclared (first use 
in this function)
./include/grub/i18n.h:56:10: note: each undeclared identifier is 
reported only once for each function it appears in
make[3]: *** 
[grub-core/lib/libgcrypt-grub/cipher/libgrubgcry_a-arcfour.o] Error 1
---
when building the utils.

This occurs with any -O level other than -O0.

I traced the culprit down to the (system) libintl.h, which has a cute
little section which checks if __OPTIMIZE__ is set, and if so redefines
gettext() as a macro for dcgettext (domainname, msgid, LC_MESSAGES).
Since this is all preprocessor driven in the C library headers, 
-fno-builtin has no effect.

Also, when building on my x86_64 workstation only, I get a failure when
compiling grub-core/lib/crypto.c - due to (system) fgets() ending up 
with a warn-unused-result prototype when building with optimizations.

And, also on my workstation only, util/ieee1275/ofpath.c (system) read() 
fails due to warn-unused-results, just like fgets() above.

All but one of these issues "go away" with -U__OPTIMIZE__ :
grub-core/lib/libgcrypt-grub/cipher/rijndael.c gives a few screenfuls
of warnings anyway, and only builds successfully when -O2 is removed 
from the build command line (or -O0 is appended).

Regards,

Leif



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Trunk fails to build with -O<anything other than 0>
  2013-01-30 18:32 Trunk fails to build with -O<anything other than 0> Leif Lindholm
@ 2013-01-30 19:41 ` Andrey Borzenkov
  2013-01-31 14:04   ` Leif Lindholm
  0 siblings, 1 reply; 3+ messages in thread
From: Andrey Borzenkov @ 2013-01-30 19:41 UTC (permalink / raw)
  To: The development of GNU GRUB; +Cc: leif.lindholm

В Wed, 30 Jan 2013 18:32:39 +0000
Leif Lindholm <leif.lindholm@arm.com> пишет:

> Our Ubuntu (12.04/12.10) build environment defaults configuring with 
> CFLAGS containing -O2. Trunk currently does not build successfully with 
> this on either my ARM platform or my x86_64 desktop.
> 
> This isn't causing any serious problems, but I thought I would report 
> what I've found.
> 
> Commit #4635 included source code changes that ended up causing build
> failures in several of the libcrypt cipher files with
> ---
> libgrubgcry_a-arcfour.o `test -f 
> 'grub-core/lib/libgcrypt-grub/cipher/arcfour.c' || echo 
> './'`grub-core/lib/libgcrypt-grub/cipher/arcfour.c
> In file included from ./include/grub/misc.h:27:0,
>                   from ./grub-core/lib/libgcrypt_wrap/cipher_wrap.h:24,
>                   from grub-core/lib/libgcrypt-grub/cipher/types.h:2,
>                   from grub-core/lib/libgcrypt-grub/cipher/arcfour.c:30:
> ./include/grub/i18n.h: In function '_':
> ./include/grub/i18n.h:56:10: error: 'LC_MESSAGES' undeclared (first use 
> in this function)
> ./include/grub/i18n.h:56:10: note: each undeclared identifier is 
> reported only once for each function it appears in
> make[3]: *** 
> [grub-core/lib/libgcrypt-grub/cipher/libgrubgcry_a-arcfour.o] Error 1
> ---
> when building the utils.
> 
> This occurs with any -O level other than -O0.
> 
> I traced the culprit down to the (system) libintl.h, which has a cute
> little section which checks if __OPTIMIZE__ is set, and if so redefines
> gettext() as a macro for dcgettext (domainname, msgid, LC_MESSAGES).
> Since this is all preprocessor driven in the C library headers, 
> -fno-builtin has no effect.
> 
> Also, when building on my x86_64 workstation only, I get a failure when
> compiling grub-core/lib/crypto.c - due to (system) fgets() ending up 
> with a warn-unused-result prototype when building with optimizations.
> 
> And, also on my workstation only, util/ieee1275/ofpath.c (system) read() 
> fails due to warn-unused-results, just like fgets() above.
> 
> All but one of these issues "go away" with -U__OPTIMIZE__ :
> grub-core/lib/libgcrypt-grub/cipher/rijndael.c gives a few screenfuls
> of warnings anyway, and only builds successfully when -O2 is removed 
> from the build command line (or -O0 is appended).
> 

I wonder why it did not happen before. Apparently, empty locale.h is
present since 2010-04-10 (rev 2311). Removing it fixes the problem, but
I presume it should not be empty in the first place.


From: Andrey Borzenkov <arvidjaar@gmail.com>
Subject: [PATCH] remove stray locale.h

Empty locale.h caused compilation errors.

Signed-off-by: Andrey Borzenkov <arvidjaar@gmail.com>

---
 po/POTFILES.in |    1 -
 1 file changed, 1 deletion(-)

diff --git a/grub-core/lib/posix_wrap/locale.h b/grub-core/lib/posix_wrap/locale.h
deleted file mode 100644
index e69de29..0000000
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 01cc53c..358de99 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -443,7 +443,6 @@
 ./grub-core/lib/posix_wrap/langinfo.h
 ./grub-core/lib/posix_wrap/limits.h
 ./grub-core/lib/posix_wrap/localcharset.h
-./grub-core/lib/posix_wrap/locale.h
 ./grub-core/lib/posix_wrap/stdint.h
 ./grub-core/lib/posix_wrap/stdio.h
 ./grub-core/lib/posix_wrap/stdlib.h
-- 
tg: (4b9ea2e..) u/locale.h (depends on: master)



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: Trunk fails to build with -O<anything other than 0>
  2013-01-30 19:41 ` Andrey Borzenkov
@ 2013-01-31 14:04   ` Leif Lindholm
  0 siblings, 0 replies; 3+ messages in thread
From: Leif Lindholm @ 2013-01-31 14:04 UTC (permalink / raw)
  To: Andrey Borzenkov; +Cc: The development of GNU GRUB

On 30/01/13 19:41, Andrey Borzenkov wrote:
> В Wed, 30 Jan 2013 18:32:39 +0000
> Leif Lindholm <leif.lindholm@arm.com> пишет:
>
>> Our Ubuntu (12.04/12.10) build environment defaults configuring with
>> CFLAGS containing -O2. Trunk currently does not build successfully with
>> this on either my ARM platform or my x86_64 desktop.
>
> I wonder why it did not happen before. Apparently, empty locale.h is
> present since 2010-04-10 (rev 2311). Removing it fixes the problem, but
> I presume it should not be empty in the first place.

Thank you - I can confirm that this resolves the "gettext" portion of my 
issue.

Combined with the below (not suggested as a patch, simply to display the 
issue clearly), trunk now builds with -O2 again.

Regards,

Leif


=== modified file 'grub-core/lib/crypto.c'
--- grub-core/lib/crypto.c      2013-01-11 20:32:42 +0000
+++ grub-core/lib/crypto.c      2013-01-31 13:41:36 +0000
@@ -461,7 +461,8 @@
      }
    else
      tty_changed = 0;
-  fgets (buf, buf_size, stdin);
+  if (fgets (buf, buf_size, stdin) == NULL)
+    return 0;
    ptr = buf + strlen (buf) - 1;
    while (buf <= ptr && (*ptr == '\n' || *ptr == '\r'))
      *ptr-- = 0;

=== modified file 'util/ieee1275/ofpath.c'
--- util/ieee1275/ofpath.c      2013-01-13 21:45:16 +0000
+++ util/ieee1275/ofpath.c      2013-01-31 13:49:44 +0000
@@ -143,7 +143,8 @@
        size = st.st_size;
        of_path = xmalloc (size + MAX_DISK_CAT + 1);
        memset(of_path, 0, size + MAX_DISK_CAT + 1);
-      read(fd, of_path, size);
+      if (read(fd, of_path, size) < 1)
+        return NULL;
        close(fd);

        trim_newline(of_path);
@@ -354,7 +355,8 @@
      grub_util_error (_("cannot open `%s': %s"), path, strerror (errno));

    memset (phy, 0, sizeof (phy));
-  read (fd, phy, sizeof (phy));
+  if (read (fd, phy, sizeof (phy)) < 1)
+    grub_util_warn (_("cannot read `%s': %s"), path, strerror (errno));

    sscanf (phy, "%d", tgt);


/
     Leif




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-01-31 14:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-30 18:32 Trunk fails to build with -O<anything other than 0> Leif Lindholm
2013-01-30 19:41 ` Andrey Borzenkov
2013-01-31 14:04   ` Leif Lindholm

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.