Re: [systemd-devel] Compile errors with -Og

2013-07-16 Thread Lennart Poettering
On Wed, 12.06.13 13:02, Jan Janssen (medhe...@web.de) wrote:

 Hi,
 
 I just tried compiling with -Og and I get these compiler errors.
 Those don't appear with any other optimization level, so I'm
 suspecting a compiler but here. But since I'm no C expert, I thought
 it would be best if I share this here to see if I'm right about this
 or whether this just shows some subtle bug in the code.
 
 This is on a up-to-date arch box (gcc 4.8.1) and make clean
 run before trying to compile.
 
 Jan
 
 ---
   CC   src/shared/util.lo
 src/shared/util.c: In function 'safe_atod':
 src/shared/util.c:383:16: warning: 'd' may be used uninitialized in
 this function [-Wmaybe-uninitialized]
  *ret_d = (double) d;

Seems your gcc is confused by our RUN_WITH_LOCALE() magic macro, because
it contains a for() loop that it thinks might not be run, but actually
always is.

I added an initialization that should make sure the warning goes away.

 ^
 In file included from /usr/include/fcntl.h:296:0,
  from src/shared/util.c:35:
 In function 'open',
 inlined from 'open_terminal' at src/shared/util.c:1834:20:
 /usr/include/bits/fcntl2.h:50:24: error: call to
 '__open_missing_mode' declared with attribute error: open with
 O_CREAT in second argument needs 3 arguments
 __open_missing_mode ();

Hmm, gcc is confused if we invoke open() with no mode argument but flags
seeded from a variable. Added a work-around for this.

 In file included from /usr/include/fcntl.h:296:0,
  from src/shared/util.c:35:
 In function 'openat',
 inlined from 'xopendirat' at src/shared/util.c:3478:13:
 /usr/include/bits/fcntl2.h:126:26: error: call to
 '__openat_missing_mode' declared with attribute error: openat with
 O_CREAT in third argument needs 4 arguments
 __openat_missing_mode ();

Same here.
   ^
 src/shared/util.c: In function 'create_tmp_dir':
 src/shared/util.c:5718:12: warning: 'd' may be used uninitialized in
 this function [-Wmaybe-uninitialized]
  dt = strjoin(d, /tmp, NULL);

Your gcc also doesn't like our RUN_WITH_UMASK macro either, also fixed.

Lennart

-- 
Lennart Poettering - Red Hat, Inc.
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] Compile errors with -Og

2013-06-12 Thread Jan Janssen

Hi,

I just tried compiling with -Og and I get these compiler errors.
Those don't appear with any other optimization level, so I'm
suspecting a compiler but here. But since I'm no C expert, I thought
it would be best if I share this here to see if I'm right about this
or whether this just shows some subtle bug in the code.

This is on a up-to-date arch box (gcc 4.8.1) and make clean
run before trying to compile.

Jan

---
  CC   src/shared/util.lo
src/shared/util.c: In function 'safe_atod':
src/shared/util.c:383:16: warning: 'd' may be used uninitialized in this 
function [-Wmaybe-uninitialized]

 *ret_d = (double) d;
^
In file included from /usr/include/fcntl.h:296:0,
 from src/shared/util.c:35:
In function 'open',
inlined from 'open_terminal' at src/shared/util.c:1834:20:
/usr/include/bits/fcntl2.h:50:24: error: call to '__open_missing_mode' 
declared with attribute error: open with O_CREAT in second argument 
needs 3 arguments

__open_missing_mode ();
^
In file included from /usr/include/fcntl.h:296:0,
 from src/shared/util.c:35:
In function 'openat',
inlined from 'xopendirat' at src/shared/util.c:3478:13:
/usr/include/bits/fcntl2.h:126:26: error: call to 
'__openat_missing_mode' declared with attribute error: openat with 
O_CREAT in third argument needs 4 arguments

__openat_missing_mode ();
  ^
src/shared/util.c: In function 'create_tmp_dir':
src/shared/util.c:5718:12: warning: 'd' may be used uninitialized in 
this function [-Wmaybe-uninitialized]

 dt = strjoin(d, /tmp, NULL);
^
make[2]: *** [src/shared/util.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel