diff --git a/rs_bindings_from_cc/importer.cc b/rs_bindings_from_cc/importer.cc
index b7e02f5..5c3e473 100644
--- a/rs_bindings_from_cc/importer.cc
+++ b/rs_bindings_from_cc/importer.cc
@@ -453,7 +453,6 @@
 BlazeLabel Importer::GetOwningTarget(const clang::Decl* decl) const {
   clang::SourceManager& source_manager = ctx_.getSourceManager();
   auto source_location = decl->getLocation();
-  auto id = source_manager.getFileID(source_location);
 
   // If the header this decl comes from is not associated with a target we
   // consider it a textual header. In that case we go up the include stack
@@ -464,6 +463,10 @@
   // "//:virtual_clang_resource_dir_target" for system headers.
   while (source_location.isValid() &&
          !source_manager.isInSystemHeader(source_location)) {
+    if (source_location.isMacroID()) {
+      source_location = source_manager.getExpansionLoc(source_location);
+    }
+    auto id = source_manager.getFileID(source_location);
     llvm::Optional<llvm::StringRef> filename =
         source_manager.getNonBuiltinFilenameForID(id);
     if (!filename) {
@@ -477,7 +480,6 @@
       return *target;
     }
     source_location = source_manager.getIncludeLoc(id);
-    id = source_manager.getFileID(source_location);
   }
 
   return BlazeLabel("//:virtual_clang_resource_dir_target");
diff --git a/rs_bindings_from_cc/test/macro_locations/defines_macro.h b/rs_bindings_from_cc/test/macro_locations/defines_macro.h
new file mode 100644
index 0000000..3744dc0
--- /dev/null
+++ b/rs_bindings_from_cc/test/macro_locations/defines_macro.h
@@ -0,0 +1,13 @@
+// Part of the Crubit project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#ifndef CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_DEFINES_MACRO_H_
+#define CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_DEFINES_MACRO_H_
+
+#define DEFINE_STRUCT(type) \
+  struct StructFromMacro {  \
+    type val;               \
+  };
+
+#endif  // CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_DEFINES_MACRO_H_
diff --git a/rs_bindings_from_cc/test/macro_locations/defines_macro_that_uses_macro.h b/rs_bindings_from_cc/test/macro_locations/defines_macro_that_uses_macro.h
new file mode 100644
index 0000000..8105511
--- /dev/null
+++ b/rs_bindings_from_cc/test/macro_locations/defines_macro_that_uses_macro.h
@@ -0,0 +1,14 @@
+// Part of the Crubit project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#ifndef CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_DEFINES_MACRO_THAT_USES_MACRO_H_
+#define CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_DEFINES_MACRO_THAT_USES_MACRO_H_
+
+#include "rs_bindings_from_cc/test/macro_locations/defines_macro.h"
+
+#define DEFINE_STRUCT_AND_FUNCTION(type) \
+  DEFINE_STRUCT(type)                    \
+  inline type functionFromMacro(type x) { return x; }
+
+#endif  // CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_DEFINES_MACRO_THAT_USES_MACRO_H_
diff --git a/rs_bindings_from_cc/test/macro_locations/uses_macro.h b/rs_bindings_from_cc/test/macro_locations/uses_macro.h
new file mode 100644
index 0000000..58a24de
--- /dev/null
+++ b/rs_bindings_from_cc/test/macro_locations/uses_macro.h
@@ -0,0 +1,12 @@
+// Part of the Crubit project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#ifndef CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_USES_MACRO_H_
+#define CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_USES_MACRO_H_
+
+#include "rs_bindings_from_cc/test/macro_locations/defines_macro_that_uses_macro.h"
+
+DEFINE_STRUCT_AND_FUNCTION(int)
+
+#endif  // CRUBIT_RS_BINDINGS_FROM_CC_TEST_MACRO_LOCATIONS_USES_MACRO_H_
diff --git a/rs_bindings_from_cc/test/macro_locations/uses_struct_and_function_from_macro.rs b/rs_bindings_from_cc/test/macro_locations/uses_struct_and_function_from_macro.rs
new file mode 100644
index 0000000..bdf3d7a
--- /dev/null
+++ b/rs_bindings_from_cc/test/macro_locations/uses_struct_and_function_from_macro.rs
@@ -0,0 +1,13 @@
+// Part of the Crubit project, under the Apache License v2.0 with LLVM
+// Exceptions. See /LICENSE for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#[cfg(test)]
+mod tests {
+
+    #[test]
+    fn test_uses_struct_and_function_from_macro() {
+        let my_struct = uses_macro::StructFromMacro { val: 3 };
+        assert_eq!(my_struct.val, uses_macro::functionFromMacro(3));
+    }
+}
