Move Status to libhidl.

Bug: 31226252
Change-Id: Ica4772243ca40f43d3077c68cb974066a133303d
diff --git a/IServiceManager.cpp b/IServiceManager.cpp
index 477d1dd..fd0e485 100644
--- a/IServiceManager.cpp
+++ b/IServiceManager.cpp
@@ -18,6 +18,7 @@
 
 #include <hidl/IServiceManager.h>
 #include <hidl/Static.h>
+#include <hidl/Status.h>
 
 #include <utils/Log.h>
 #include <hwbinder/IPCThreadState.h>
@@ -91,7 +92,13 @@
         version.writeToParcel(data);
         data.writeInt32(allowIsolated ? 1 : 0);
         status_t err = remote()->transact(ADD_SERVICE_TRANSACTION, data, &reply);
-        return err == NO_ERROR ? reply.readExceptionCode() : err;
+        if (err == NO_ERROR) {
+            Status status;
+            status.readFromParcel(reply);
+            return status.exceptionCode();
+        } else {
+            return err;
+        }
     }
 
     virtual Vector<String16> listServices()