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