NaCl: disable unimplmented Mojo APIs.

BUG=401761
R=jamesr@chromium.org

Review URL: https://codereview.chromium.org/988323004
diff --git a/mojo/public/platform/nacl/libmojo.cc b/mojo/public/platform/nacl/libmojo.cc
index 99eddf0..de0b495f 100644
--- a/mojo/public/platform/nacl/libmojo.cc
+++ b/mojo/public/platform/nacl/libmojo.cc
@@ -224,3 +224,4 @@
     return MOJO_RESULT_INTERNAL;
   return irt_mojo->_MojoGetInitialHandle(handle);
 }
+
diff --git a/nacl_bindings/mojo_syscall.cc b/nacl_bindings/mojo_syscall.cc
index 34fcccb..4453381 100644
--- a/nacl_bindings/mojo_syscall.cc
+++ b/nacl_bindings/mojo_syscall.cc
@@ -122,78 +122,12 @@
 
       return 0;
     }
-    case 2: {
-      if (num_params != 7) {
-        return -1;
-      }
-      MojoHandle buffer_handle_value;
-      uint64_t offset_value;
-      uint64_t num_bytes_value;
-      void* volatile* buffer_ptr;
-      void* buffer_value;
-      MojoMapBufferFlags flags_value;
-      MojoResult volatile* result_ptr;
-      MojoResult result_value;
-      {
-        ScopedCopyLock copy_lock(nap);
-        if (!ConvertScalarInput(nap, params[1], &buffer_handle_value)) {
-          return -1;
-        }
-        if (!ConvertScalarInput(nap, params[2], &offset_value)) {
-          return -1;
-        }
-        if (!ConvertScalarInput(nap, params[3], &num_bytes_value)) {
-          return -1;
-        }
-        if (!ConvertScalarInOut(nap, params[4], false, &buffer_value,
-                                &buffer_ptr)) {
-          return -1;
-        }
-        if (!ConvertScalarInput(nap, params[5], &flags_value)) {
-          return -1;
-        }
-        if (!ConvertScalarOutput(nap, params[6], false, &result_ptr)) {
-          return -1;
-        }
-      }
-
-      result_value = MojoMapBuffer(buffer_handle_value, offset_value,
-                                   num_bytes_value, &buffer_value, flags_value);
-
-      {
-        ScopedCopyLock copy_lock(nap);
-        *buffer_ptr = buffer_value;
-        *result_ptr = result_value;
-      }
-
-      return 0;
-    }
-    case 3: {
-      if (num_params != 3) {
-        return -1;
-      }
-      void* buffer_value;
-      MojoResult volatile* result_ptr;
-      MojoResult result_value;
-      {
-        ScopedCopyLock copy_lock(nap);
-        if (!ConvertScalarInput(nap, params[1], &buffer_value)) {
-          return -1;
-        }
-        if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) {
-          return -1;
-        }
-      }
-
-      result_value = MojoUnmapBuffer(buffer_value);
-
-      {
-        ScopedCopyLock copy_lock(nap);
-        *result_ptr = result_value;
-      }
-
-      return 0;
-    }
+    case 2:
+      fprintf(stderr, "MojoMapBuffer not implemented\n");
+      return -1;
+    case 3:
+      fprintf(stderr, "MojoUnmapBuffer not implemented\n");
+      return -1;
     case 4: {
       if (num_params != 5) {
         return -1;
@@ -282,53 +216,9 @@
 
       return 0;
     }
-    case 6: {
-      if (num_params != 6) {
-        return -1;
-      }
-      MojoHandle data_pipe_producer_handle_value;
-      void* volatile* buffer_ptr;
-      void* buffer_value;
-      uint32_t volatile* buffer_num_bytes_ptr;
-      uint32_t buffer_num_bytes_value;
-      MojoWriteDataFlags flags_value;
-      MojoResult volatile* result_ptr;
-      MojoResult result_value;
-      {
-        ScopedCopyLock copy_lock(nap);
-        if (!ConvertScalarInput(nap, params[1],
-                                &data_pipe_producer_handle_value)) {
-          return -1;
-        }
-        if (!ConvertScalarInOut(nap, params[2], false, &buffer_value,
-                                &buffer_ptr)) {
-          return -1;
-        }
-        if (!ConvertScalarInOut(nap, params[3], false, &buffer_num_bytes_value,
-                                &buffer_num_bytes_ptr)) {
-          return -1;
-        }
-        if (!ConvertScalarInput(nap, params[4], &flags_value)) {
-          return -1;
-        }
-        if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
-          return -1;
-        }
-      }
-
-      result_value =
-          MojoBeginWriteData(data_pipe_producer_handle_value, &buffer_value,
-                             &buffer_num_bytes_value, flags_value);
-
-      {
-        ScopedCopyLock copy_lock(nap);
-        *buffer_ptr = buffer_value;
-        *buffer_num_bytes_ptr = buffer_num_bytes_value;
-        *result_ptr = result_value;
-      }
-
-      return 0;
-    }
+    case 6:
+      fprintf(stderr, "MojoBeginWriteData not implemented\n");
+      return -1;
     case 7: {
       if (num_params != 4) {
         return -1;
@@ -405,53 +295,9 @@
 
       return 0;
     }
-    case 9: {
-      if (num_params != 6) {
-        return -1;
-      }
-      MojoHandle data_pipe_consumer_handle_value;
-      const void* volatile* buffer_ptr;
-      const void* buffer_value;
-      uint32_t volatile* buffer_num_bytes_ptr;
-      uint32_t buffer_num_bytes_value;
-      MojoReadDataFlags flags_value;
-      MojoResult volatile* result_ptr;
-      MojoResult result_value;
-      {
-        ScopedCopyLock copy_lock(nap);
-        if (!ConvertScalarInput(nap, params[1],
-                                &data_pipe_consumer_handle_value)) {
-          return -1;
-        }
-        if (!ConvertScalarInOut(nap, params[2], false, &buffer_value,
-                                &buffer_ptr)) {
-          return -1;
-        }
-        if (!ConvertScalarInOut(nap, params[3], false, &buffer_num_bytes_value,
-                                &buffer_num_bytes_ptr)) {
-          return -1;
-        }
-        if (!ConvertScalarInput(nap, params[4], &flags_value)) {
-          return -1;
-        }
-        if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
-          return -1;
-        }
-      }
-
-      result_value =
-          MojoBeginReadData(data_pipe_consumer_handle_value, &buffer_value,
-                            &buffer_num_bytes_value, flags_value);
-
-      {
-        ScopedCopyLock copy_lock(nap);
-        *buffer_ptr = buffer_value;
-        *buffer_num_bytes_ptr = buffer_num_bytes_value;
-        *result_ptr = result_value;
-      }
-
-      return 0;
-    }
+    case 9:
+      fprintf(stderr, "MojoBeginReadData not implemented\n");
+      return -1;
     case 10: {
       if (num_params != 4) {
         return -1;
diff --git a/nacl_bindings_generator/generate_nacl_bindings.py b/nacl_bindings_generator/generate_nacl_bindings.py
index e06ffa9..d374823 100755
--- a/nacl_bindings_generator/generate_nacl_bindings.py
+++ b/nacl_bindings_generator/generate_nacl_bindings.py
@@ -307,11 +307,27 @@
   code.PushMargin()
 
   for f in functions:
+    is_implemented = True
+
+    # Mojo API calls that take or return pointers are currently not supported.
+    # The underlying Mojo implementation is unaware of NaCl's address space. In
+    # addition, if we pass blindly pass the parameters through to the underlying
+    # Mojo API, memory corruption can result from pointer-size mistmatches.
+    for p in f.params:
+      if p.base_type.endswith("*"):
+        is_implemented = False
+
     impls = [ImplForParam(p) for p in f.params]
     impls.append(ImplForParam(f.result_param))
 
     code << 'case %d:' % f.uid
 
+    if not is_implemented:
+      with code.Indent():
+        code << 'fprintf(stderr, "%s not implemented\\n");' % f.name
+        code << 'return -1;'
+      continue
+
     code.PushMargin()
 
     code << '{'