* 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.