diff --git a/.gitignore b/.gitignore
index e22ca50..9976a46 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,8 +17,6 @@
 /app.info
 /delta_generator
 /html/
-/marshal.glibmarshal.c
-/marshal.glibmarshal.h
 /test_http_server
 /update_engine
 /update_engine.dbusclient.h
diff --git a/SConstruct b/SConstruct
index 5d47bf5..489f956 100644
--- a/SConstruct
+++ b/SConstruct
@@ -79,46 +79,6 @@
                                 single_source = 1,
                                 suffix = 'dbusclient.h')
 
-def GlibMarshalEmitter(target, source, env):
-  """ Inputs:
-          target: unused
-          source: list containing the source .list file
-          env: the scons environment in which we are compiling
-      Outputs:
-          target: the list of targets we'll emit
-          source: the list of sources we'll process"""
-  output = str(source[0])
-  output = output[0:output.rfind('.list')]
-  target = [
-    output + '.glibmarshal.c',
-    output + '.glibmarshal.h'
-  ]
-  return target, source
-
-def GlibMarshalGenerator(source, target, env, for_signature):
-  """ Inputs:
-          source: list of sources to process
-          target: list of targets to generate
-          env: scons environment in which we are working
-          for_signature: unused
-      Outputs: a list of commands to execute to generate the targets from
-               the sources."""
-  commands = []
-  for target_file in target:
-    if str(target_file).endswith('.glibmarshal.h'):
-      mode_flag = '--header '
-    else:
-      mode_flag = '--body '
-    cmd = '/usr/bin/glib-genmarshal %s --prefix=update_engine ' \
-          '%s > %s' % (mode_flag, str(source[0]), str(target_file))
-    commands.append(cmd)
-  return commands
-
-glib_marshal_builder = Builder(generator = GlibMarshalGenerator,
-                               emitter = GlibMarshalEmitter,
-                               single_source = 1,
-                               suffix = 'glibmarshal.c')
-
 # Public key generation
 def PublicKeyEmitter(target, source, env):
   """ Inputs:
@@ -214,7 +174,6 @@
 env['CPPPATH'] = ['..']
 env['BUILDERS']['ProtocolBuffer'] = proto_builder
 env['BUILDERS']['DbusBindings'] = dbus_bindings_builder
-env['BUILDERS']['GlibMarshal'] = glib_marshal_builder
 env['BUILDERS']['PublicKey'] = public_key_builder
 
 # Fix issue with scons not passing pkg-config vars through the environment.
@@ -233,8 +192,6 @@
 
 env.DbusBindings('update_engine.dbusclient.h', 'update_engine.xml')
 
-env.GlibMarshal('marshal.glibmarshal.c', 'marshal.list')
-
 if ARGUMENTS.get('debug', 0):
   env['CCFLAGS'] += ['-fprofile-arcs', '-ftest-coverage']
   env['LIBS'] += ['bz2', 'gcov']
@@ -268,7 +225,6 @@
                    hwid_override.cc
                    install_plan.cc
                    libcurl_http_fetcher.cc
-                   marshal.glibmarshal.c
                    metadata.cc
                    multi_range_http_fetcher.cc
                    omaha_hash_calculator.cc
@@ -362,10 +318,9 @@
 for source in all_sources:
   if source.endswith('_unittest.cc'):
     env.Depends(source, 'unittest_key.pub.pem')
-  if source.endswith('.glibmarshal.c') or source.endswith('.pb.cc'):
+  if source.endswith('.pb.cc'):
     continue
   env.Depends(source, 'update_metadata.pb.cc')
-  env.Depends(source, 'marshal.glibmarshal.c')
   env.Depends(source, 'update_engine.dbusclient.h')
 
 update_engine_core = env.Library('update_engine_core', sources)
diff --git a/dbus_service.cc b/dbus_service.cc
index cbfdc17..f75823c 100644
--- a/dbus_service.cc
+++ b/dbus_service.cc
@@ -14,7 +14,6 @@
 #include "update_engine/connection_manager.h"
 #include "update_engine/dbus_constants.h"
 #include "update_engine/hardware_interface.h"
-#include "update_engine/marshal.glibmarshal.h"
 #include "update_engine/omaha_request_params.h"
 #include "update_engine/p2p_manager.h"
 #include "update_engine/prefs.h"
@@ -100,7 +99,7 @@
       0,  // 0 == no class method associated
       NULL,  // Accumulator
       NULL,  // Accumulator data
-      update_engine_VOID__INT64_DOUBLE_STRING_STRING_INT64,
+      NULL,  // Marshaller
       G_TYPE_NONE,  // Return type
       5,  // param count:
       G_TYPE_INT64,
diff --git a/marshal.list b/marshal.list
deleted file mode 100644
index 9dce1bd..0000000
--- a/marshal.list
+++ /dev/null
@@ -1 +0,0 @@
-VOID:INT64,DOUBLE,STRING,STRING,INT64
diff --git a/update_engine_client.cc b/update_engine_client.cc
index f91c201..fc06da2 100644
--- a/update_engine_client.cc
+++ b/update_engine_client.cc
@@ -8,7 +8,6 @@
 #include <gflags/gflags.h>
 #include <glib.h>
 
-#include "update_engine/marshal.glibmarshal.h"
 #include "update_engine/dbus_constants.h"
 #include "update_engine/subprocess.h"
 #include "update_engine/utils.h"
@@ -166,7 +165,7 @@
 
   // Register marshaller
   dbus_g_object_register_marshaller(
-      update_engine_VOID__INT64_DOUBLE_STRING_STRING_INT64,
+      NULL,
       G_TYPE_NONE,
       G_TYPE_INT64,
       G_TYPE_DOUBLE,
