diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl
index 7d2c1dc..44b799c 100644
--- a/rust/private/rustc.bzl
+++ b/rust/private/rustc.bzl
@@ -206,8 +206,9 @@
 
             if "proc-macro" not in [crate_info.type, crate_info.wrapped_crate_type]:
                 transitive_noncrates.append(dep_info.transitive_noncrates)
+                transitive_link_search_paths.append(dep_info.link_search_path_files)
+
             transitive_build_infos.append(dep_info.transitive_build_infos)
-            transitive_link_search_paths.append(dep_info.link_search_path_files)
 
         elif cc_info:
             # This dependency is a cc_library
diff --git a/test/unit/transitive_link_search_paths/BUILD.bazel b/test/unit/transitive_link_search_paths/BUILD.bazel
new file mode 100644
index 0000000..df20a92
--- /dev/null
+++ b/test/unit/transitive_link_search_paths/BUILD.bazel
@@ -0,0 +1,4 @@
+load(":transitive_link_search_paths_test.bzl", "transitive_link_search_paths_test_suite")
+
+############################ UNIT TESTS #############################
+transitive_link_search_paths_test_suite(name = "transitive_link_search_paths_test_suite")
diff --git a/test/unit/transitive_link_search_paths/dep.rs b/test/unit/transitive_link_search_paths/dep.rs
new file mode 100644
index 0000000..cf74a9a
--- /dev/null
+++ b/test/unit/transitive_link_search_paths/dep.rs
@@ -0,0 +1,3 @@
+pub fn f() -> i64 {
+    42
+}
diff --git a/test/unit/transitive_link_search_paths/dep_build.rs b/test/unit/transitive_link_search_paths/dep_build.rs
new file mode 100644
index 0000000..29fec91
--- /dev/null
+++ b/test/unit/transitive_link_search_paths/dep_build.rs
@@ -0,0 +1,3 @@
+fn main() {
+    println!("yolo");
+}
diff --git a/test/unit/transitive_link_search_paths/proc_macro.rs b/test/unit/transitive_link_search_paths/proc_macro.rs
new file mode 100644
index 0000000..2803ddb
--- /dev/null
+++ b/test/unit/transitive_link_search_paths/proc_macro.rs
@@ -0,0 +1,8 @@
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+#[proc_macro_attribute]
+pub fn yolo(args: TokenStream, _input: TokenStream) -> TokenStream {
+    args
+}
diff --git a/test/unit/transitive_link_search_paths/proc_macro_build.rs b/test/unit/transitive_link_search_paths/proc_macro_build.rs
new file mode 100644
index 0000000..29fec91
--- /dev/null
+++ b/test/unit/transitive_link_search_paths/proc_macro_build.rs
@@ -0,0 +1,3 @@
+fn main() {
+    println!("yolo");
+}
diff --git a/test/unit/transitive_link_search_paths/transitive_link_search_paths_test.bzl b/test/unit/transitive_link_search_paths/transitive_link_search_paths_test.bzl
new file mode 100644
index 0000000..ac76547
--- /dev/null
+++ b/test/unit/transitive_link_search_paths/transitive_link_search_paths_test.bzl
@@ -0,0 +1,67 @@
+"""Unittests for rust rules."""
+
+load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
+load("//cargo:defs.bzl", "cargo_build_script")
+load("//rust:defs.bzl", "rust_common", "rust_library", "rust_proc_macro")
+
+def _transitive_link_search_paths_test_impl(ctx):
+    env = analysistest.begin(ctx)
+    tut = analysistest.target_under_test(env)
+    link_search_path_files = tut[rust_common.dep_info].link_search_path_files.to_list()
+    link_search_path_basenames = [f.basename for f in link_search_path_files]
+
+    # Checks that this contains the dep build script, but not the build script
+    # of the dep of the proc_macro.
+    asserts.equals(env, link_search_path_basenames, ["dep_build_script.linksearchpaths"])
+
+    return analysistest.end(env)
+
+transitive_link_search_paths_test = analysistest.make(_transitive_link_search_paths_test_impl)
+
+def _transitive_link_search_paths_test():
+    cargo_build_script(
+        name = "proc_macro_build_script",
+        srcs = ["proc_macro_build.rs"],
+        edition = "2018",
+    )
+
+    rust_proc_macro(
+        name = "proc_macro",
+        srcs = ["proc_macro.rs"],
+        edition = "2018",
+        deps = [":proc_macro_build_script"],
+    )
+
+    cargo_build_script(
+        name = "dep_build_script",
+        srcs = ["dep_build.rs"],
+        edition = "2018",
+    )
+
+    rust_library(
+        name = "dep",
+        srcs = ["dep.rs"],
+        edition = "2018",
+        proc_macro_deps = [":proc_macro"],
+        deps = [":dep_build_script"],
+    )
+
+    transitive_link_search_paths_test(
+        name = "transitive_link_search_paths_test",
+        target_under_test = ":dep",
+    )
+
+def transitive_link_search_paths_test_suite(name):
+    """Entry-point macro called from the BUILD file.
+
+    Args:
+        name: Name of the macro.
+    """
+    _transitive_link_search_paths_test()
+
+    native.test_suite(
+        name = name,
+        tests = [
+            ":transitive_link_search_paths_test",
+        ],
+    )
diff --git a/util/process_wrapper/options.rs b/util/process_wrapper/options.rs
index 5a074a7..f44c70e 100644
--- a/util/process_wrapper/options.rs
+++ b/util/process_wrapper/options.rs
@@ -201,8 +201,13 @@
 
 fn args_from_file(paths: Vec<String>) -> Result<Vec<String>, OptionError> {
     let mut args = vec![];
-    for path in paths.into_iter() {
-        let mut lines = read_file_to_array(path).map_err(OptionError::Generic)?;
+    for path in paths.iter() {
+        let mut lines = read_file_to_array(path).map_err(|err| {
+            OptionError::Generic(format!(
+                "{} while processing args from file paths: {:?}",
+                err, &paths
+            ))
+        })?;
         args.append(&mut lines);
     }
     Ok(args)
@@ -211,7 +216,7 @@
 fn env_from_files(paths: Vec<String>) -> Result<HashMap<String, String>, OptionError> {
     let mut env_vars = HashMap::new();
     for path in paths.into_iter() {
-        let lines = read_file_to_array(path).map_err(OptionError::Generic)?;
+        let lines = read_file_to_array(&path).map_err(OptionError::Generic)?;
         for line in lines.into_iter() {
             let (k, v) = line
                 .split_once('=')
diff --git a/util/process_wrapper/util.rs b/util/process_wrapper/util.rs
index 4b3d6bb..89f2ded 100644
--- a/util/process_wrapper/util.rs
+++ b/util/process_wrapper/util.rs
@@ -15,8 +15,16 @@
 use std::fs::File;
 use std::io::{BufRead, BufReader, Read};
 
-pub(crate) fn read_file_to_array(path: String) -> Result<Vec<String>, String> {
-    let file = File::open(path).map_err(|e| e.to_string())?;
+pub(crate) fn read_file_to_array(path: &str) -> Result<Vec<String>, String> {
+    let file = File::open(path).map_err(|e| e.to_string()).map_err(|err| {
+        format!(
+            "{} reading path: {:?}, current directory: {:?}",
+            err,
+            path,
+            std::env::current_dir()
+        )
+    })?;
+
     read_to_array(file)
 }
 
