Merge changes I94afdc39,Id92f11a3,I403535de,I468c5a35,I1f1749a6, ...

* changes:
  Clean up memory barriers and documentation in lockless_queue
  Align the shared memory data better
  Use acquire/release instead of seq_cst
  Fix compiler_memory_barrier
  Use dedicated functions for using futexes to wait for a task to die
  Make signalfd wrapper more robust
diff --git a/aos/events/logging/BUILD b/aos/events/logging/BUILD
index 553016c..96ef288 100644
--- a/aos/events/logging/BUILD
+++ b/aos/events/logging/BUILD
@@ -17,6 +17,7 @@
         ":logger_fbs",
         "//aos:flatbuffer_merge",
         "//aos/events:event_loop",
+        "//aos/network:team_number",
         "//aos/time",
         "@com_github_google_flatbuffers//:flatbuffers",
         "@com_google_absl//absl/container:inlined_vector",
diff --git a/aos/events/logging/logger.cc b/aos/events/logging/logger.cc
index d8e504f..e2da491 100644
--- a/aos/events/logging/logger.cc
+++ b/aos/events/logging/logger.cc
@@ -11,6 +11,7 @@
 #include "aos/events/event_loop.h"
 #include "aos/events/logging/logger_generated.h"
 #include "aos/flatbuffer_merge.h"
+#include "aos/network/team_number.h"
 #include "aos/time/time.h"
 #include "flatbuffers/flatbuffers.h"
 
@@ -114,8 +115,13 @@
       flatbuffers::Offset<aos::Configuration> configuration_offset =
           CopyFlatBuffer(event_loop_->configuration(), &fbb);
 
+      flatbuffers::Offset<flatbuffers::String> string_offset =
+          fbb.CreateString(network::GetHostname());
+
       aos::logger::LogFileHeader::Builder log_file_header_builder(fbb);
 
+      log_file_header_builder.add_name(string_offset);
+
       log_file_header_builder.add_configuration(configuration_offset);
       // The worst case theoretical out of order is the polling period times 2.
       // One message could get logged right after the boundary, but be for right
diff --git a/aos/events/logging/logger.fbs b/aos/events/logging/logger.fbs
index 36055a6..5d6aa0a 100644
--- a/aos/events/logging/logger.fbs
+++ b/aos/events/logging/logger.fbs
@@ -28,6 +28,9 @@
   // The configuration of the channels.
   configuration:aos.Configuration;
 
+  // Name of the device which this log file is for.
+  name:string;
+
   // TODO(austin): Node!
 }
 
diff --git a/aos/network/team_number.cc b/aos/network/team_number.cc
index 852ce93..a75cd4e 100644
--- a/aos/network/team_number.cc
+++ b/aos/network/team_number.cc
@@ -44,13 +44,6 @@
 
 uint16_t override_team;
 
-::std::string GetHostname() {
-  char buf[256];
-  buf[sizeof(buf) - 1] = '\0';
-  AOS_PCHECK(gethostname(buf, sizeof(buf) - 1));
-  return buf;
-}
-
 void DoGetTeamNumber(uint16_t *result) {
   if (override_team != 0) {
       *result = override_team;
@@ -75,6 +68,13 @@
 
 }  // namespace
 
+::std::string GetHostname() {
+  char buf[256];
+  buf[sizeof(buf) - 1] = '\0';
+  AOS_PCHECK(gethostname(buf, sizeof(buf) - 1));
+  return buf;
+}
+
 uint16_t GetTeamNumber() {
   static absl::once_flag once;
   static uint16_t result;
diff --git a/aos/network/team_number.h b/aos/network/team_number.h
index 6540283..cacc2b3 100644
--- a/aos/network/team_number.h
+++ b/aos/network/team_number.h
@@ -13,6 +13,9 @@
 // repeatedly.
 uint16_t GetTeamNumber();
 
+// Returns the current hostname.
+::std::string GetHostname();
+
 // Overrides the team number returned from GetTeamNumber(). Must be called
 // before GetTeamNumber() is ever called.
 // Overriding to team 0 won't work.
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index 5bdf8f8..39f29d8 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -631,14 +631,13 @@
         flag: "-Wpointer-arith"
         flag: "-Wstrict-aliasing"
         flag: "-Wcast-qual"
-        flag: "-Wcast-align"
         flag: "-Wwrite-strings"
         flag: "-Wtype-limits"
         flag: "-Wsign-compare"
         flag: "-Wformat=2"
         flag: "-Werror"
         flag: "-Wunused-local-typedefs"
-        flag: "-Wno-cast-align"
+        flag: "-Wno-psabi"
         flag: "-fno-omit-frame-pointer"
         flag: "-D__has_feature(x)=0"
         flag: "-pipe"
diff --git a/tools/cpp/static_crosstool.pb b/tools/cpp/static_crosstool.pb
index 8b46fe7..8552dff 100644
--- a/tools/cpp/static_crosstool.pb
+++ b/tools/cpp/static_crosstool.pb
@@ -613,14 +613,14 @@
         flag: "-Wpointer-arith"
         flag: "-Wstrict-aliasing"
         flag: "-Wcast-qual"
-        flag: "-Wcast-align"
         flag: "-Wwrite-strings"
         flag: "-Wtype-limits"
         flag: "-Wsign-compare"
         flag: "-Wformat=2"
         flag: "-Werror"
         flag: "-Wunused-local-typedefs"
-        flag: "-Wno-cast-align"
+        # We don't use libraries compiled with the broken version.
+        flag: "-Wno-psabi"
 
         # Keep stack frames for debugging, even in opt mode.
         flag: "-fno-omit-frame-pointer"