diff --git a/meta-ti-extras/recipes-bsp/dsptop/files/0001-dstop-ulm-makefile-Fix-reproducibility-error.patch b/meta-ti-extras/recipes-bsp/dsptop/files/0001-dstop-ulm-makefile-Fix-reproducibility-error.patch
new file mode 100644
index 00000000..6ea59517
--- /dev/null
+++ b/meta-ti-extras/recipes-bsp/dsptop/files/0001-dstop-ulm-makefile-Fix-reproducibility-error.patch
@@ -0,0 +1,31 @@
+From 8619e4b2f983130bf1909cc9c9bc238cd43ded41 Mon Sep 17 00:00:00 2001
+From: Ryan Eatmon <reatmon@ti.com>
+Date: Fri, 19 Jul 2024 14:37:55 -0500
+Subject: [master][PATCH] dstop/ulm/makefile: Fix reproducibility error
+
+The TI cl6x compiler does not have a mechanism for replacing paths in
+the obj files it creates.  So replace the string we want to remove with
+an equally sized replacement string that does not contain the path.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Ryan Eatmon <reatmon@ti.com>
+---
+ makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/makefile b/makefile
+index dffb211..586dcc2 100644
+--- a/makefile
++++ b/makefile
+@@ -82,6 +82,7 @@ $(OBJDIR)/%.obj: %.c $(INCLUDE_FILES)
+ 	@echo "Compiling" $<
+ 	@mkdir -p $(OBJDIR)
+ 	$(CC) $(CFLAGS) $(INCLUDE_PATH) -fe $@ $<
++	perl -pi -e 's#${SEARCH}#${REPLACE}#g' $@
+ 
+ libtiulm.a libtiulm.ae66: $(OBJECTS)
+ 	@echo "Building target" $@
+-- 
+2.17.1
+
diff --git a/meta-ti-extras/recipes-bsp/dsptop/libulm_git.bb b/meta-ti-extras/recipes-bsp/dsptop/libulm_git.bb
index 6a2cde30..aafae21f 100644
--- a/meta-ti-extras/recipes-bsp/dsptop/libulm_git.bb
+++ b/meta-ti-extras/recipes-bsp/dsptop/libulm_git.bb
@@ -6,7 +6,7 @@ inherit features_check
 
 REQUIRED_MACHINE_FEATURES = "dsp"
 
-DEPENDS = "ti-cgt6x-native"
+DEPENDS = "ti-cgt6x-native perl-native"
 PR = "${INC_PR}.0"
 
 S = "${WORKDIR}/git/dsptop/ulm"
@@ -14,7 +14,13 @@ S = "${WORKDIR}/git/dsptop/ulm"
 DEVICE=""
 DEVICE:dra7xx = "DRA7xx"
 
-EXTRA_OEMAKE = "release DEVICE=${DEVICE} CROSS_COMPILE=${TARGET_PREFIX}"
+EXTRA_OEMAKE = " \
+    release \
+    DEVICE=${DEVICE} \
+    CROSS_COMPILE=${TARGET_PREFIX} \
+    SEARCH=${WORKDIR} \
+    REPLACE=${@'_'*(len(d.getVar('WORKDIR'))-7)+"workdir"} \
+"
 
 do_compile() {
     oe_runmake arm XPORT_ONLY CC="${CC}"
@@ -40,6 +46,8 @@ FILES:${PN}-dev += "\
 
 include dsptop.inc
 
+SRC_URI += "file://0001-dstop-ulm-makefile-Fix-reproducibility-error.patch"
+
 ALLOW_EMPTY:${PN} = "1"
 
 PARALLEL_MAKE= ""
