diff --git a/cc/cc.go b/cc/cc.go
index f3400e7..9f39588 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -175,7 +175,7 @@
 	SharedLibs, LateSharedLibs                  []string
 	StaticLibs, LateStaticLibs, WholeStaticLibs []string
 
-	ObjFiles common.Paths
+	ObjFiles []string
 
 	Cflags, ReexportedCflags []string
 
@@ -380,6 +380,11 @@
 	Test_per_src *bool
 }
 
+type ObjectLinkerProperties struct {
+	// names of other cc_object modules to link into this module using partial linking
+	Objs []string `android:"arch_variant"`
+}
+
 // Properties used to compile all C or C++ modules
 type BaseProperties struct {
 	// compile module with clang instead of gcc
@@ -722,7 +727,8 @@
 	sharedLibs = append(sharedLibs, c.deps.LateSharedLibs...)
 	actx.AddVariationDependencies([]blueprint.Variation{{"link", "shared"}}, sharedLibs...)
 
-	actx.AddDependency(ctx.module(), c.deps.ObjFiles.Strings()...)
+	actx.AddDependency(ctx.module(), c.deps.ObjFiles...)
+
 	if c.deps.CrtBegin != "" {
 		actx.AddDependency(ctx.module(), c.deps.CrtBegin)
 	}
@@ -1542,6 +1548,7 @@
 //
 
 type objectLinker struct {
+	Properties ObjectLinkerProperties
 }
 
 func objectFactory() (blueprint.Module, []interface{}) {
@@ -1551,14 +1558,14 @@
 	return module.Init()
 }
 
-func (*objectLinker) props() []interface{} {
-	return nil
+func (object *objectLinker) props() []interface{} {
+	return []interface{}{&object.Properties}
 }
 
 func (*objectLinker) begin(ctx BaseModuleContext) {}
 
-func (*objectLinker) deps(ctx BaseModuleContext, deps Deps) Deps {
-	// object files can't have any dynamic dependencies
+func (object *objectLinker) deps(ctx BaseModuleContext, deps Deps) Deps {
+	deps.ObjFiles = append(deps.ObjFiles, object.Properties.Objs...)
 	return deps
 }
 
