Fix C++ compilation warnings/errors under g++ 8.2.
authorMichael Vrable <vrable@cs.hmc.edu>
Sat, 24 Nov 2018 20:49:33 +0000 (12:49 -0800)
committerMichael Vrable <vrable@cs.hmc.edu>
Sat, 24 Nov 2018 20:49:33 +0000 (12:49 -0800)
In metadata.cc:
    warning: In the GNU C Library, "major" is defined by
    <sys/sysmacros.h>.  For historical compatibility, it is currently
    defined by <sys/types.h> as well, but we plan to remove this soon.
    To use "major", include <sys/sysmacros.h> directly. If you did not
    intend to use a system-defined macro "major", you should undefine it
    after including <sys/types.h>.

In third_party/sha1.cc:
    error: types may not be defined within __builtin_offsetof

Alter the code to always assume that buffers are
unaligned, which should be correct at the cost of performance.  This
shouldn't matter much in practice since SHA-1 is mostly not being used
by Cumulus any longer.

In third_party/sha256.cc:
    warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use
    _DEFAULT_SOURCE"

metadata.cc
third_party/sha1.cc
third_party/sha256.cc

index 63fdadc..96d21ea 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <sys/sysmacros.h>
 #include <string>
 #include <iostream>
 #include <map>
index 9e9e74b..a7390b3 100644 (file)
@@ -154,7 +154,7 @@ sha1_process_bytes (const void *buffer, size_t len, struct sha1_ctx *ctx)
     {
 #if !_STRING_ARCH_unaligned
 # define alignof(type) offsetof (struct { char c; type x; }, x)
-# define UNALIGNED_P(p) (((size_t) p) % alignof (md5_uint32) != 0)
+# define UNALIGNED_P(p) (1)
       if (UNALIGNED_P (buffer))
        while (len > 64)
          {
index 9e249be..6180f7b 100644 (file)
@@ -27,7 +27,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#define _BSD_SOURCE
+#define _DEFAULT_SOURCE
 #include <endian.h>
 #include <stdio.h>
 #include <stdlib.h>