timezone: data file should be 32 bit aligned

The zoneinfo.dat file is memory mapped and then read as an int array.
On some platforms this is causing alignment errors (SIGBUS) because
the records are not 32 bit aligned.

Change-Id: Ieea8ef07e49ef86d139c52ebfccf4159c0ebd887
diff --git a/libc/tools/zoneinfo/ZoneCompactor.java b/libc/tools/zoneinfo/ZoneCompactor.java
index b657748..cc77c94 100644
--- a/libc/tools/zoneinfo/ZoneCompactor.java
+++ b/libc/tools/zoneinfo/ZoneCompactor.java
@@ -55,11 +55,13 @@
 
         InputStream in = new FileInputStream(inFile);
         byte[] buf = new byte[8192];
+        int length = 0;
         while (true) {
             int nbytes = in.read(buf);
             if (nbytes == -1) {
                 break;
             }
+            length += nbytes;
             out.write(buf, 0, nbytes);
 
             byte[] nret = new byte[ret.length + nbytes];
@@ -67,6 +69,8 @@
             System.arraycopy(buf, 0, nret, ret.length, nbytes);
             ret = nret;
         }
+	if (length%4 != 0)
+            out.write(new byte[] {00,00,00,00}, 0, 4 - length % 4);
         out.flush();
         return ret;
     }
@@ -105,6 +109,9 @@
                     lengths.put(s, new Integer((int)length));
 
                     start += length;
+                    if (start % 4 != 0)
+                        start += 4 - start % 4;
+
                     byte[] data = copyFile(f, zoneInfo);
 
                     TimeZone tz = ZoneInfo.make(s, data);
diff --git a/libc/tools/zoneinfo/generate b/libc/tools/zoneinfo/generate
index 3e21d0b..6fdb775 100755
--- a/libc/tools/zoneinfo/generate
+++ b/libc/tools/zoneinfo/generate
@@ -75,7 +75,7 @@
 javac -d . \
     $bionic_zoneinfo_tools_dir/ZoneCompactor.java \
     $bionic_zoneinfo_tools_dir/ZoneInfo.java
-java ZoneCompactor setup data
+java -classpath . ZoneCompactor setup data
 
 echo "Updating bionic to $latest_version..."
 mv zoneinfo.dat zoneinfo.idx $bionic_zoneinfo_dir
diff --git a/libc/zoneinfo/zoneinfo.dat b/libc/zoneinfo/zoneinfo.dat
index cc1cb38..7dbc2dd 100644
--- a/libc/zoneinfo/zoneinfo.dat
+++ b/libc/zoneinfo/zoneinfo.dat
Binary files differ
diff --git a/libc/zoneinfo/zoneinfo.idx b/libc/zoneinfo/zoneinfo.idx
index 0483c28..856e085 100644
--- a/libc/zoneinfo/zoneinfo.idx
+++ b/libc/zoneinfo/zoneinfo.idx
Binary files differ