diff options
Diffstat (limited to 'kernel/driver.cc')
-rw-r--r-- | kernel/driver.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc index b43df868d..c24b293fc 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -22,6 +22,7 @@ #include <readline/history.h> #include <string.h> #include <unistd.h> +#include <libgen.h> #include <dlfcn.h> #include "kernel/rtlil.h" @@ -343,6 +344,22 @@ struct TclPass : public Pass { } TclPass; #endif +std::string rewrite_yosys_exe(std::string exe) +{ + char buffer[1024]; + ssize_t buflen = readlink("/proc/self/exe", buffer, sizeof(buffer)-1); + + if (buflen < 0) + return exe; + + buffer[buflen] = 0; + std::string newexe = stringf("%s/%s", dirname(buffer), exe.c_str()); + if (access(newexe.c_str(), X_OK) == 0) + return newexe; + + return exe; +} + int main(int argc, char **argv) { std::string frontend_command = "auto"; |