diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
index e80cf48..25b5ee5 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
@@ -44,6 +44,14 @@
   @SuppressWarnings("deprecation") // These fields have no JavaDoc by design
   public static class BuildGraveyardOptions extends OptionsBase {
     @Option(
+        name = "enable_fdo_profile_absolute_path",
+        defaultValue = "true",
+        documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+        effectTags = {OptionEffectTag.NO_OP},
+        help = "Deprecated. No-op.")
+    public boolean enableFdoProfileAbsolutePath;
+
+    @Option(
         name = "incompatible_disallow_unsound_directory_outputs",
         defaultValue = "true",
         documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index b251d42..b789bbf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -709,15 +709,6 @@
     return cppOptions.getMemProfProfileLabel();
   }
 
-  @StarlarkMethod(
-      name = "enable_fdo_profile_absolute_path",
-      documented = false,
-      useStarlarkThread = true)
-  public boolean isFdoAbsolutePathEnabledForStarlark(StarlarkThread thread) throws EvalException {
-    CcModule.checkPrivateStarlarkificationAllowlist(thread);
-    return cppOptions.enableFdoProfileAbsolutePath;
-  }
-
   public boolean useLLVMCoverageMapFormat() {
     return cppOptions.useLLVMCoverageMapFormat;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 1160164..aa45372 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -460,14 +460,6 @@
   public Label csFdoProfileLabel;
 
   @Option(
-      name = "enable_fdo_profile_absolute_path",
-      defaultValue = "true",
-      documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
-      effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
-      help = "If set, use of fdo_absolute_profile_path will raise an error.")
-  public boolean enableFdoProfileAbsolutePath;
-
-  @Option(
       name = "propeller_optimize_absolute_cc_profile",
       defaultValue = "null",
       documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
diff --git a/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_prefetch_hints.bzl b/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_prefetch_hints.bzl
index 3d29276..6696b7b 100644
--- a/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_prefetch_hints.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_prefetch_hints.bzl
@@ -14,31 +14,18 @@
 
 """Starlark implementation of fdo_prefetch_hints rule."""
 
-load(":common/paths.bzl", "paths")
-
 FdoPrefetchHintsInfo = provider(
     doc = "Contains the profile used for prefetch hints",
-    fields = ["artifact", "absolute_path"],
+    fields = ["artifact"],
 )
 
 def _impl(ctx):
-    if bool(ctx.file.profile) == bool(ctx.attr.absolute_path_profile):
-        fail("exactly one of profile and absolute_path_profile should be specified")
-
-    if ctx.attr.profile:
-        return FdoPrefetchHintsInfo(artifact = ctx.file.profile)
-    else:
-        if not ctx.fragments.cpp.enable_fdo_profile_absolute_path():
-            fail("absolute_path_profile cannot be used when --enable_fdo_profile_absolute_path is false")
-        if not paths.is_absolute(ctx.attr.absolute_path_profile):
-            fail("Attribute: absolute_path_profile: %s is not an absolute path" % ctx.attr.absolute_path_profile)
-        return FdoPrefetchHintsInfo(absolute_path = ctx.attr.absolute_path_profile)
+    return FdoPrefetchHintsInfo(artifact = ctx.file.profile)
 
 fdo_prefetch_hints = rule(
     implementation = _impl,
     doc = """
-<p>Represents an FDO prefetch hints profile that is either in the workspace or at a specified
-absolute path.
+<p>Represents an FDO prefetch hints profile that is either in the workspace.
 Examples:</p>
 
 <pre><code class="lang-starlark">
@@ -46,24 +33,15 @@
     name = "hints",
     profile = "//path/to/hints:profile.afdo",
 )
-
-fdo_profile(
-  name = "hints_abs",
-  absolute_path_profile = "/absolute/path/profile.afdo",
-)
 </code></pre>""",
     attrs = {
         "profile": attr.label(
             allow_single_file = [".afdo"],
+            mandatory = True,
             doc = """
 Label of the hints profile. The hints file has the .afdo extension
 The label can also point to an fdo_absolute_path_profile rule.""",
         ),
-        "absolute_path_profile": attr.string(
-            doc = """
-Absolute path to the FDO profile. The FDO file may only have the .afdo extension.""",
-        ),
     },
     provides = [FdoPrefetchHintsInfo],
-    fragments = ["cpp"],
 )
diff --git a/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_profile.bzl b/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_profile.bzl
index 97dd51c..ca8fdfe 100644
--- a/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_profile.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/fdo/fdo_profile.bzl
@@ -14,74 +14,48 @@
 
 """Starlark implementation of fdo_profile rule."""
 
-load(":common/paths.bzl", "paths")
-
 FdoProfileInfo = provider(
     doc = "Contains the profile used for FDO",
     fields = ["artifact", "absolute_path", "proto_profile_artifact", "memprof_artifact"],
 )
 
 def _impl(ctx):
-    # proto_profile and memprof_profile can only be used if at least one of profile and
-    # absolute_path_profile are provided.
-    if bool(ctx.file.profile) == bool(ctx.attr.absolute_path_profile):
-        fail("exactly one of profile and absolute_path_profile should be specified")
+    # proto_profile and memprof_profile can only be used if at least one of profile
+    # are provided.
     if ctx.file.proto_profile and not ctx.file.proto_profile.is_source:
         fail("Attribute proto_profile: the target is not an input file")
     if ctx.file.memprof_profile and not ctx.file.memprof_profile.is_source:
         fail("Attribute memprof_profile: the target is not an input file")
 
-    if ctx.attr.profile:
-        return FdoProfileInfo(
-            artifact = ctx.file.profile,
-            proto_profile_artifact = ctx.file.proto_profile,
-            memprof_artifact = ctx.file.memprof_profile,
-        )
-    else:
-        if not ctx.fragments.cpp.enable_fdo_profile_absolute_path():
-            fail("this attribute cannot be used when --enable_fdo_profile_absolute_path is false")
-        absolute_path_profile = ctx.expand_make_variables("absolute_path_profile", ctx.attr.absolute_path_profile, {})
-        if not paths.is_absolute(absolute_path_profile):
-            fail("Attribute: absolute_path_profile: %s is not an absolute path" % ctx.attr.absolute_path_profile)
-        return FdoProfileInfo(
-            absolute_path = absolute_path_profile,
-            proto_profile_artifact = ctx.file.proto_profile,
-            memprof_artifact = ctx.file.memprof_profile,
-        )
+    return FdoProfileInfo(
+        artifact = ctx.file.profile,
+        proto_profile_artifact = ctx.file.proto_profile,
+        memprof_artifact = ctx.file.memprof_profile,
+    )
 
 fdo_profile = rule(
     implementation = _impl,
     doc = """
 
-<p>Represents an FDO profile that is either in the workspace or at a specified absolute path.
-Examples:</p>
+<p>Represents an FDO profile that is in the workspace.
+Example:</p>
 
 <pre><code class="lang-starlark">
 fdo_profile(
     name = "fdo",
     profile = "//path/to/fdo:profile.zip",
 )
-
-fdo_profile(
-  name = "fdo_abs",
-  absolute_path_profile = "/absolute/path/profile.zip",
-)
 </code></pre>""",
     attrs = {
         "profile": attr.label(
             allow_single_file = [".profraw", ".profdata", ".zip", ".afdo", ".xfdo"],
+            mandatory = True,
             doc = """
 Label of the FDO profile or a rule which generates it. The FDO file can have one of the
 following extensions: .profraw for unindexed LLVM profile, .profdata for indexed LLVM
 profile, .zip that holds an LLVM profraw profile, .afdo for AutoFDO profile, .xfdo for
 XBinary profile. The label can also point to an fdo_absolute_path_profile rule.""",
         ),
-        "absolute_path_profile": attr.string(
-            doc = """
-Absolute path to the FDO profile. The FDO file can have one of the following extensions:
-.profraw for unindexed LLVM profile, .profdata for indexed LLVM profile, .zip
-that holds an LLVM profraw profile, or .afdo for AutoFDO profile.""",
-        ),
         "proto_profile": attr.label(allow_single_file = True, doc = """
 Label of the protobuf profile."""),
         "memprof_profile": attr.label(allow_single_file = [".profdata", ".zip"], doc = """
@@ -91,5 +65,4 @@
 file."""),
     },
     provides = [FdoProfileInfo],
-    fragments = ["cpp"],
 )
diff --git a/src/main/starlark/builtins_bzl/common/cc/fdo/memprof_profile.bzl b/src/main/starlark/builtins_bzl/common/cc/fdo/memprof_profile.bzl
index 7cf3ef4..a2489f0 100644
--- a/src/main/starlark/builtins_bzl/common/cc/fdo/memprof_profile.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/fdo/memprof_profile.bzl
@@ -14,32 +14,19 @@
 
 """Starlark implementation of memprof_profile rule."""
 
-load(":common/paths.bzl", "paths")
-
 MemProfProfileInfo = provider(
     doc = "Contains the memprof profile",
-    fields = ["artifact", "absolute_path"],
+    fields = ["artifact"],
 )
 
 def _impl(ctx):
-    if bool(ctx.file.profile) == bool(ctx.attr.absolute_path_profile):
-        fail("exactly one of profile and absolute_path_profile should be specified")
-
-    if ctx.attr.profile:
-        return MemProfProfileInfo(artifact = ctx.file.profile)
-    else:
-        if not ctx.fragments.cpp.enable_fdo_profile_absolute_path():
-            fail("absolute_path_profile cannot be used when --enable_fdo_profile_absolute_path is false")
-        if not paths.is_absolute(ctx.attr.absolute_path_profile):
-            fail("Attribute: absolute_path_profile: %s is not an absolute path" % ctx.attr.absolute_path_profile)
-        return MemProfProfileInfo(absolute_path = ctx.attr.absolute_path_profile)
+    return MemProfProfileInfo(artifact = ctx.file.profile)
 
 memprof_profile = rule(
     implementation = _impl,
     doc = """
-<p>Represents a MEMPROF profile that is either in the workspace or at a specified
-absolute path.
-Examples:</p>
+<p>Represents a MEMPROF profile that is in the workspace.
+Example:</p>
 
 <pre><code class="lang-starlark">
 memprof_profile(
@@ -47,14 +34,11 @@
     profile = "//path/to/memprof:profile.afdo",
 )
 
-memprof_profile(
-  name = "memprof_abs",
-  absolute_path_profile = "/absolute/path/profile.afdo",
-)
 </code></pre>""",
     attrs = {
         "profile": attr.label(
             allow_single_file = [".profdata", ".zip"],
+            mandatory = True,
             doc = """
 Label of the MEMPROF profile. The profile is expected to have
 either a .profdata extension (for an indexed/symbolized memprof
@@ -62,12 +46,6 @@
 file.
 The label can also point to an fdo_absolute_path_profile rule.""",
         ),
-        "absolute_path_profile": attr.string(
-            doc = """
-Absolute path to the MEMPROF profile. The file may only have a .profdata or
-.zip extension (where the zipfile must contain a memprof.profdata file).""",
-        ),
     },
     provides = [MemProfProfileInfo],
-    fragments = ["cpp"],
 )
diff --git a/src/main/starlark/builtins_bzl/common/cc/fdo/propeller_optimize.bzl b/src/main/starlark/builtins_bzl/common/cc/fdo/propeller_optimize.bzl
index 9d1b44b..3e3e8ce 100644
--- a/src/main/starlark/builtins_bzl/common/cc/fdo/propeller_optimize.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/fdo/propeller_optimize.bzl
@@ -14,50 +14,16 @@
 
 """Starlark implementation of propeller_optimize rule."""
 
-load(":common/paths.bzl", "paths")
-
 PropellerOptimizeInfo = provider(
     doc = "Contains the profile used for propeller",
     fields = ["cc_profile", "ld_profile"],
 )
 
 def _impl(ctx):
-    if ctx.file.cc_profile and ctx.attr.absolute_cc_profile:
-        fail("Attribute cc_profile: Both relative and absolute profiles are provided.")
-    if ctx.file.ld_profile and ctx.attr.absolute_ld_profile:
-        fail("Attribute ld_profile: Both relative and absolute profiles are provided.")
-
-    cc_profile = None
-    if ctx.file.cc_profile:
-        cc_profile = ctx.file.cc_profile
-    if ctx.attr.absolute_cc_profile:
-        if not ctx.fragments.cpp.enable_fdo_profile_absolute_path():
-            fail("absolute paths cannot be used when --enable_fdo_profile_absolute_path is false")
-        if not paths.is_absolute(ctx.attr.absolute_cc_profile):
-            fail("Attribute: cc_profile: %s is not an absolute path" % ctx.attr.absolute_cc_profile)
-        cc_profile = ctx.actions.declare_symlink(ctx.label.name + "/" + paths.basename(ctx.attr.absolute_cc_profile))
-        ctx.actions.symlink(
-            target_path = ctx.attr.absolute_cc_profile,
-            output = cc_profile,
-            progress_message = "Symlinking LLVM Propeller Profile " + ctx.attr.absolute_cc_profile,
-        )
-
-    ld_profile = None
-    if ctx.file.ld_profile:
-        ld_profile = ctx.file.ld_profile
-    if ctx.attr.absolute_ld_profile:
-        if not ctx.fragments.cpp.enable_fdo_profile_absolute_path():
-            fail("absolute paths cannot be used when --enable_fdo_profile_absolute_path is false")
-        if not paths.is_absolute(ctx.attr.absolute_ld_profile):
-            fail("Attribute: ld_profile: %s is not an absolute path" % ctx.attr.absolute_ld_profile)
-        ld_profile = ctx.actions.declare_symlink(ctx.label.name + "/" + paths.basename(ctx.attr.absolute_ld_profile))
-        ctx.actions.symlink(
-            target_path = ctx.attr.absolute_ld_profile,
-            output = ld_profile,
-            progress_message = "Symlinking LLVM Propeller Profile " + ctx.attr.absolute_ld_profile,
-        )
-
-    return PropellerOptimizeInfo(cc_profile = cc_profile, ld_profile = ld_profile)
+    return PropellerOptimizeInfo(
+        cc_profile = ctx.file.cc_profile,
+        ld_profile = ctx.file.ld_profile,
+    )
 
 propeller_optimize = rule(
     implementation = _impl,
@@ -71,37 +37,22 @@
     cc_profile = "//path:cc_profile.txt",
     ld_profile = "//path:ld_profile.txt"
 )
-
-propeller_optimize(
-    name = "layout_absolute",
-    absolute_cc_profile = "/absolute/cc_profile.txt",
-    absolute_ld_profile = "/absolute/ld_profile.txt"
-)
 </code></pre>""",
     attrs = {
         "cc_profile": attr.label(
             allow_single_file = [".txt"],
+            mandatory = True,
             doc = """
 Label of the profile passed to the various compile actions.  This file has
 the .txt extension.""",
         ),
         "ld_profile": attr.label(
             allow_single_file = [".txt"],
+            mandatory = True,
             doc = """
 Label of the profile passed to the link action.  This file has
 the .txt extension.""",
         ),
-        "absolute_cc_profile": attr.string(
-            doc = """
-Label of the absolute profile passed to the various compile actions.  This file has
-the .txt extension.""",
-        ),
-        "absolute_ld_profile": attr.string(
-            doc = """
-Label of the absolute profile passed to the various link actions.  This file has
-the .txt extension.""",
-        ),
     },
     provides = [PropellerOptimizeInfo],
-    fragments = ["cpp"],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoObjDirTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoObjDirTest.java
index 513e72f..8e17e71 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoObjDirTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoObjDirTest.java
@@ -2091,23 +2091,14 @@
         .doesNotContainMatch("-fbasic-block-sections=");
   }
 
-  private void testPropellerOptimizeOption(boolean label) throws Exception {
+  @Test
+  public void testPropellerOptimizeOptionFromLabel() throws Exception {
     createBuildFiles();
-
-    if (label) {
-      scratch.file(
-          "fdo/BUILD",
-          "propeller_optimize(name='test_propeller_optimize', cc_profile=':cc_profile.txt',"
-              + " ld_profile=':ld_profile.txt')");
-    } else {
-      scratch.file(
-          "fdo/BUILD",
-          "propeller_optimize(name='test_propeller_optimize',"
-              + "absolute_cc_profile='/tmp/cc_profile.txt',"
-              + "absolute_ld_profile='/tmp/ld_profile.txt')");
-    }
+    scratch.file(
+        "fdo/BUILD",
+        "propeller_optimize(name='test_propeller_optimize', cc_profile=':cc_profile.txt',"
+            + " ld_profile=':ld_profile.txt')");
     setupThinLTOCrosstool(CppRuleClasses.SUPPORTS_PIC, CppRuleClasses.AUTOFDO);
-
     useConfiguration(
         "--propeller_optimize=//fdo:test_propeller_optimize", "--compilation_mode=opt");
 
@@ -2136,27 +2127,9 @@
         .contains("cc_profile.txt");
   }
 
-  @Test
-  public void testPropellerOptimizeOptionFromAbsolutePath() throws Exception {
-    testPropellerOptimizeOption(false);
-  }
-
-  @Test
-  public void testPropellerOptimizeOptionFromLabel() throws Exception {
-    testPropellerOptimizeOption(true);
-  }
-
-  private void testLLVMCachePrefetchBackendOption(String extraOption, boolean asLabel)
-      throws Exception {
+  private void testLLVMCachePrefetchBackendOption(String extraOption) throws Exception {
     createBuildFiles();
-    if (asLabel) {
-      scratch.file(
-          "fdo/BUILD", "fdo_prefetch_hints(name='test_profile', profile=':prefetch.afdo')");
-    } else {
-      scratch.file(
-          "fdo/BUILD",
-          "fdo_prefetch_hints(name='test_profile', absolute_path_profile='/tmp/prefetch.afdo')");
-    }
+    scratch.file("fdo/BUILD", "fdo_prefetch_hints(name='test_profile', profile=':prefetch.afdo')");
 
     setupThinLTOCrosstool(CppRuleClasses.SUPPORTS_PIC, CppRuleClasses.AUTOFDO);
     useConfiguration(
@@ -2166,33 +2139,20 @@
     LtoBackendAction backendAction =
         getBackendAction("pkg/bin.lto-obj/" + rootExecPath + "/pkg/_objs/bin/binfile.o");
 
-    String expectedCompilerFlag =
-        "-prefetch-hints-file="
-            + (asLabel ? ".*/prefetch.afdo" : "(blaze|bazel)-out/.*/fdo/.*/prefetch.afdo");
     assertThat(Joiner.on(" ").join(backendAction.getArguments()))
-        .containsMatch("-mllvm " + expectedCompilerFlag);
+        .containsMatch("-mllvm -prefetch-hints-file=.*/prefetch.afdo");
 
     assertThat(ActionsTestUtil.baseArtifactNames(backendAction.getInputs()))
         .contains("prefetch.afdo");
   }
 
   @Test
-  public void testFdoCachePrefetchLLVMOptionsToBackendFromPath() throws Exception {
-    testLLVMCachePrefetchBackendOption("", false);
-  }
-
-  @Test
-  public void testFdoCachePrefetchAndFdoLLVMOptionsToBackendFromPath() throws Exception {
-    testLLVMCachePrefetchBackendOption("--fdo_optimize=/profile.zip", false);
-  }
-
-  @Test
   public void testFdoCachePrefetchLLVMOptionsToBackendFromLabel() throws Exception {
-    testLLVMCachePrefetchBackendOption("", true);
+    testLLVMCachePrefetchBackendOption("");
   }
 
   @Test
   public void testFdoCachePrefetchAndFdoLLVMOptionsToBackendFromLabel() throws Exception {
-    testLLVMCachePrefetchBackendOption("--fdo_optimize=/profile.zip", true);
+    testLLVMCachePrefetchBackendOption("--fdo_optimize=/profile.zip");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoTest.java
index e8a6394..339bf21 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcBinaryThinLtoTest.java
@@ -2049,23 +2049,14 @@
         .doesNotContainMatch("-fbasic-block-sections=");
   }
 
-  private void testPropellerOptimizeOption(boolean label) throws Exception {
+  @Test
+  public void testPropellerOptimizeOptionFromLabel() throws Exception {
     createBuildFiles();
-
-    if (label) {
-      scratch.file(
-          "fdo/BUILD",
-          "propeller_optimize(name='test_propeller_optimize', cc_profile=':cc_profile.txt',"
-              + " ld_profile=':ld_profile.txt')");
-    } else {
-      scratch.file(
-          "fdo/BUILD",
-          "propeller_optimize(name='test_propeller_optimize',"
-              + "absolute_cc_profile='/tmp/cc_profile.txt',"
-              + "absolute_ld_profile='/tmp/ld_profile.txt')");
-    }
+    scratch.file(
+        "fdo/BUILD",
+        "propeller_optimize(name='test_propeller_optimize', cc_profile=':cc_profile.txt',"
+            + " ld_profile=':ld_profile.txt')");
     setupThinLTOCrosstool(CppRuleClasses.SUPPORTS_PIC, CppRuleClasses.AUTOFDO);
-
     useConfiguration(
         "--propeller_optimize=//fdo:test_propeller_optimize", "--compilation_mode=opt");
 
@@ -2094,27 +2085,9 @@
         .contains("cc_profile.txt");
   }
 
-  @Test
-  public void testPropellerOptimizeOptionFromAbsolutePath() throws Exception {
-    testPropellerOptimizeOption(false);
-  }
-
-  @Test
-  public void testPropellerOptimizeOptionFromLabel() throws Exception {
-    testPropellerOptimizeOption(true);
-  }
-
-  private void testLLVMCachePrefetchBackendOption(String extraOption, boolean asLabel)
-      throws Exception {
+  private void testLLVMCachePrefetchBackendOption(String extraOption) throws Exception {
     createBuildFiles();
-    if (asLabel) {
-      scratch.file(
-          "fdo/BUILD", "fdo_prefetch_hints(name='test_profile', profile=':prefetch.afdo')");
-    } else {
-      scratch.file(
-          "fdo/BUILD",
-          "fdo_prefetch_hints(name='test_profile', absolute_path_profile='/tmp/prefetch.afdo')");
-    }
+    scratch.file("fdo/BUILD", "fdo_prefetch_hints(name='test_profile', profile=':prefetch.afdo')");
 
     setupThinLTOCrosstool(CppRuleClasses.SUPPORTS_PIC, CppRuleClasses.AUTOFDO);
     useConfiguration(
@@ -2124,34 +2097,21 @@
     LtoBackendAction backendAction =
         getBackendAction("pkg/bin.lto/" + rootExecPath + "/pkg/_objs/bin/binfile.o");
 
-    String expectedCompilerFlag =
-        "-prefetch-hints-file="
-            + (asLabel ? ".*/prefetch.afdo" : "(blaze|bazel)-out/.*/fdo/.*/prefetch.afdo");
     assertThat(Joiner.on(" ").join(backendAction.getArguments()))
-        .containsMatch("-mllvm " + expectedCompilerFlag);
+        .containsMatch("-mllvm -prefetch-hints-file=.*/prefetch.afdo");
 
     assertThat(ActionsTestUtil.baseArtifactNames(backendAction.getInputs()))
         .contains("prefetch.afdo");
   }
 
   @Test
-  public void testFdoCachePrefetchLLVMOptionsToBackendFromPath() throws Exception {
-    testLLVMCachePrefetchBackendOption("", false);
-  }
-
-  @Test
-  public void testFdoCachePrefetchAndFdoLLVMOptionsToBackendFromPath() throws Exception {
-    testLLVMCachePrefetchBackendOption("--fdo_optimize=/profile.zip", false);
-  }
-
-  @Test
   public void testFdoCachePrefetchLLVMOptionsToBackendFromLabel() throws Exception {
-    testLLVMCachePrefetchBackendOption("", true);
+    testLLVMCachePrefetchBackendOption("");
   }
 
   @Test
   public void testFdoCachePrefetchAndFdoLLVMOptionsToBackendFromLabel() throws Exception {
-    testLLVMCachePrefetchBackendOption("--fdo_optimize=/profile.zip", true);
+    testLLVMCachePrefetchBackendOption("--fdo_optimize=/profile.zip");
   }
 
   @Test
