From 86b5ad551ef0ffc7ca4da24b7619937bec738522 Mon Sep 17 00:00:00 2001
From: Randy Eckenrode <randy@largeandhighquality.com>
Date: Mon, 15 Apr 2024 20:47:59 -0400
Subject: [PATCH 4/6] Use nixpkgs clang with the assembler driver

---
 as/driver.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/as/driver.c b/as/driver.c
index a0d49ad..c15dcbf 100644
--- a/as/driver.c
+++ b/as/driver.c
@@ -36,7 +36,7 @@ char **envp)
     char *p, c, *arch_name, *as, *as_local;
     char **new_argv;
     const char *CLANG = "clang";
-    char *prefix, buf[MAXPATHLEN], resolved_name[PATH_MAX];
+    char *prefix = "@clang-unwrapped@/bin/";
     uint32_t bufsize;
     struct arch_flag arch_flag;
     const struct arch_flag *arch_flags, *family_arch_flag;
@@ -50,22 +50,6 @@ char **envp)
 	qflag = FALSE;
 	Qflag = FALSE;
 	some_input_files = FALSE;
-	/*
-	 * Construct the prefix to the assembler driver.
-	 */
-	bufsize = MAXPATHLEN;
-	p = buf;
-	i = _NSGetExecutablePath(p, &bufsize);
-	if(i == -1){
-	    p = allocate(bufsize);
-	    _NSGetExecutablePath(p, &bufsize);
-	}
-	prefix = realpath(p, resolved_name);
-	if(prefix == NULL)
-	    system_fatal("realpath(3) for %s failed", p);
-	p = rindex(prefix, '/');
-	if(p != NULL)
-	    p[1] = '\0';
 	/*
 	 * Process the assembler flags exactly like the assembler would (except
 	 * let the assembler complain about multiple flags, bad combinations of
@@ -362,6 +346,8 @@ char **envp)
 		exit(1);
 	}
 
+	prefix = "@gas@/bin/"; /* `libexec` is found relative to the assembler driverâ€™s path. */
+
 	/*
 	 * If this assembler exist try to run it else print an error message.
 	 */
-- 
2.45.2

