fixed some more memory alignment etc issues

These are issues found with -fsanitize=undefined.
diff --git a/aos/common/common.gyp b/aos/common/common.gyp
index d3ac124..c989bf2 100644
--- a/aos/common/common.gyp
+++ b/aos/common/common.gyp
@@ -108,6 +108,7 @@
         'queue_types',
         '<(EXTERNALS):gtest',
         'test_queue',
+        '<(AOS)/build/aos.gyp:logging',
       ],
     },
     {
@@ -275,6 +276,7 @@
         '<(EXTERNALS):gtest',
         'mutex',
         'die',
+        '<(AOS)/build/aos.gyp:logging',
       ],
     },
     {
diff --git a/bbb_cape/src/bbb/packet_finder.cc b/bbb_cape/src/bbb/packet_finder.cc
index 43363b8..4ddb0e3 100644
--- a/bbb_cape/src/bbb/packet_finder.cc
+++ b/bbb_cape/src/bbb/packet_finder.cc
@@ -85,7 +85,7 @@
     if (packet_bytes_ == -1) {
       for (size_t to_check = already_read; to_check < already_read + new_bytes;
            ++to_check) {
-        if (buf_[to_check] == 0) {
+        if (buf(to_check) == 0) {
           ++zeros_found;
           if (zeros_found == kZeros) {
             packet_bytes_ = 0;
@@ -149,7 +149,7 @@
     packet_bytes_ = -1;
     int zeros = 0;
     for (size_t i = 0; i < packet_size_; ++i) {
-      if (buf_[i] == 0) {
+      if (buf(i) == 0) {
         ++zeros;
         if (zeros == kZeros) {
           if (kDebugLogs) LOG(INFO, "start at %zd\n", i);
diff --git a/bbb_cape/src/bbb/packet_finder.h b/bbb_cape/src/bbb/packet_finder.h
index 9aa0eeb..e8816b1 100644
--- a/bbb_cape/src/bbb/packet_finder.h
+++ b/bbb_cape/src/bbb/packet_finder.h
@@ -54,6 +54,14 @@
   // data.
   bool ProcessPacket();
 
+  // Avoids issues with accessing elements of buf_ that are technically not
+  // aligned correctly.
+  uint8_t buf(size_t index) const {
+    uint8_t r;
+    memcpy(&r, &buf_[index], 1);
+    return r;
+  }
+
   ByteReaderInterface *const reader_;
   const size_t packet_size_;
 
diff --git a/bbb_cape/src/bbb/packet_finder_test.cc b/bbb_cape/src/bbb/packet_finder_test.cc
index b4937b1..53d9bbb 100644
--- a/bbb_cape/src/bbb/packet_finder_test.cc
+++ b/bbb_cape/src/bbb/packet_finder_test.cc
@@ -1,5 +1,7 @@
 #include "bbb/packet_finder.h"
 
+#include <malloc.h>
+
 #include <array>
 #include <algorithm>
 
@@ -15,10 +17,17 @@
 
 class TestByteReader : public ByteReaderInterface {
  public:
-  // Holds a reference to data's element array.
   template <size_t bytes>
   TestByteReader(const ::std::array<uint8_t, bytes> &data)
-      : data_(&data.at(0)), data_size_(data.size()), bytes_left_(data.size()) {}
+      : data_(memalign(8, data.size())),
+        data_size_(data.size()),
+        bytes_left_(data.size()) {
+    memcpy(data_, &data.at(0), data.size());
+  }
+
+  ~TestByteReader() {
+    free(data_);
+  }
 
   virtual ssize_t ReadBytes(uint8_t *dest, size_t max_bytes,
                             const ::aos::time::Time &/*timeout_time*/)
@@ -32,7 +41,7 @@
   }
 
  private:
-  const void *const data_;
+  void *const data_;
   const size_t data_size_;
   size_t bytes_left_;
 };
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 77d5781..c815b8d 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -125,7 +125,7 @@
 
     const ::aos::controls::HPolytope<2> U_Poly_;
     Eigen::Matrix<double, 2, 2> T, T_inverse;
-    bool output_was_capped_;
+    bool output_was_capped_ = false;;
   };
 
   DrivetrainMotorsSS()