Re: [systemd-devel] Build warnings for ARM due to -Wcast-align

2014-02-20 Thread Lennart Poettering
On Thu, 20.02.14 17:03, Daniel Mack (dan...@zonque.org) wrote:

 Hi,
 
 When cross-compiling the current git HEAD for ARM using gcc 4.8.2, I see
 ~160 warnings similar to this one:
 
 src/core/unit.c: In function 'unit_get_exec_runtime':
 src/core/unit.c:2851:17: warning: cast increases required alignment of
 target type [-Wcast-align]
  return *(ExecRuntime**) ((uint8_t*) u + offset);
  ^
 
 The full build log is here:
 
   http://paste.fedoraproject.org/78944/92912005
 
 Unaligned memory access is indeed unsupported by some older instruction
 cores. The kernel can fix up in situations where such unaligned access
 occurs, but that's of course expensive and slow.
 
 However, systemd does not actually do unaligned memory access at runtime
 (at least I haven't seen any when booting up PXA3xx hardware). The
 warning is simply about the type of pointer arithmetic that casts to and
 from uint8_t*.
 
 And because it's practically impossible to fix the things the compiler
 complains about here anyway, I propose removing -Wcast-align from the
 CFLAGS in configure.ac.
 
 Any opinions?

I am fine with that. I am personally only running things on x86, so it
never showed up for me. The usual solution for cast issues is to use
some union-based type conversion, but in the case above this is not
really nicely possible. Hence, let's drop it, unless somebody has a
better solution...

Lennart

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


Re: [systemd-devel] Build warnings for ARM due to -Wcast-align

2014-02-20 Thread Daniel P. Berrange
On Thu, Feb 20, 2014 at 05:21:22PM +0100, Lennart Poettering wrote:
 On Thu, 20.02.14 17:03, Daniel Mack (dan...@zonque.org) wrote:
 
  Hi,
  
  When cross-compiling the current git HEAD for ARM using gcc 4.8.2, I see
  ~160 warnings similar to this one:
  
  src/core/unit.c: In function 'unit_get_exec_runtime':
  src/core/unit.c:2851:17: warning: cast increases required alignment of
  target type [-Wcast-align]
   return *(ExecRuntime**) ((uint8_t*) u + offset);
   ^
  
  The full build log is here:
  
http://paste.fedoraproject.org/78944/92912005
  
  Unaligned memory access is indeed unsupported by some older instruction
  cores. The kernel can fix up in situations where such unaligned access
  occurs, but that's of course expensive and slow.
  
  However, systemd does not actually do unaligned memory access at runtime
  (at least I haven't seen any when booting up PXA3xx hardware). The
  warning is simply about the type of pointer arithmetic that casts to and
  from uint8_t*.
  
  And because it's practically impossible to fix the things the compiler
  complains about here anyway, I propose removing -Wcast-align from the
  CFLAGS in configure.ac.
  
  Any opinions?
 
 I am fine with that. I am personally only running things on x86, so it
 never showed up for me. The usual solution for cast issues is to use
 some union-based type conversion, but in the case above this is not
 really nicely possible. Hence, let's drop it, unless somebody has a
 better solution...

I think cast align warnings are fairly useful since many things it
can show turn out to be genuine bugs, so not entirely desirable to
disable them altogether. In libvirt we just mark the few cases which
are false positives with a pragma

  #define VIR_WARNINGS_NO_CAST_ALIGN \
_Pragma (GCC diagnostic push) \
_Pragma (GCC diagnostic ignored \-Wcast-align\)

  #define VIR_WARNINGS_RESET \
_Pragma (GCC diagnostic pop)


And then just mark it thus

  VIR_WARNINGS_NO_CAST_ALIGN
  ...code with false positive
  VIR_WARNINGS_RESET

Regards,
Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] Build warnings for ARM due to -Wcast-align

2014-02-20 Thread Thomas H.P. Andersen
On Thu, Feb 20, 2014 at 5:03 PM, Daniel Mack dan...@zonque.org wrote:
 Hi,

 When cross-compiling the current git HEAD for ARM using gcc 4.8.2, I see
 ~160 warnings similar to this one:

 src/core/unit.c: In function 'unit_get_exec_runtime':
 src/core/unit.c:2851:17: warning: cast increases required alignment of
 target type [-Wcast-align]
  return *(ExecRuntime**) ((uint8_t*) u + offset);
  ^

 The full build log is here:

   http://paste.fedoraproject.org/78944/92912005

 Unaligned memory access is indeed unsupported by some older instruction
 cores. The kernel can fix up in situations where such unaligned access
 occurs, but that's of course expensive and slow.

 However, systemd does not actually do unaligned memory access at runtime
 (at least I haven't seen any when booting up PXA3xx hardware). The
 warning is simply about the type of pointer arithmetic that casts to and
 from uint8_t*.

 And because it's practically impossible to fix the things the compiler
 complains about here anyway, I propose removing -Wcast-align from the
 CFLAGS in configure.ac.

 Any opinions?

Clang also caught those. I had to add -Wno-cast-align in the
autogen-shortcut to keep the noise down. It would be nice not to have
to do that of course.
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] Build warnings for ARM due to -Wcast-align

2014-02-20 Thread Lennart Poettering
On Thu, 20.02.14 22:26, Thomas H.P. Andersen (pho...@gmail.com) wrote:

 
 On Thu, Feb 20, 2014 at 5:03 PM, Daniel Mack dan...@zonque.org wrote:
  Hi,
 
  When cross-compiling the current git HEAD for ARM using gcc 4.8.2, I see
  ~160 warnings similar to this one:
 
  src/core/unit.c: In function 'unit_get_exec_runtime':
  src/core/unit.c:2851:17: warning: cast increases required alignment of
  target type [-Wcast-align]
   return *(ExecRuntime**) ((uint8_t*) u + offset);
   ^
 
  The full build log is here:
 
http://paste.fedoraproject.org/78944/92912005
 
  Unaligned memory access is indeed unsupported by some older instruction
  cores. The kernel can fix up in situations where such unaligned access
  occurs, but that's of course expensive and slow.
 
  However, systemd does not actually do unaligned memory access at runtime
  (at least I haven't seen any when booting up PXA3xx hardware). The
  warning is simply about the type of pointer arithmetic that casts to and
  from uint8_t*.
 
  And because it's practically impossible to fix the things the compiler
  complains about here anyway, I propose removing -Wcast-align from the
  CFLAGS in configure.ac.
 
  Any opinions?
 
 Clang also caught those. I had to add -Wno-cast-align in the
 autogen-shortcut to keep the noise down. It would be nice not to have
 to do that of course.

I have removed the switch now.

Lennart

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