<!DOCTYPE html>
<html lang='en'>
<head>
<title>guix - Wojtek's customized Guix</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='noindex, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit-static/cgit.css'/>
<link rel='stylesheet' type='text/css' href='/cgit-static/better-cgit-markdown-heading-color.css'/>
<link rel='shortcut icon' href='/cgit-static/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://git.koszko.org/guix/atom/gnu/packages/patches/json-c-0.13-CVE-2020-12762.patch?h=koszko' type='application/atom+xml'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='https://git.koszko.org/cgit-static/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/guix/'>guix</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='7937c8827b8d23347a3159b4696335bd19fc17aa'/><select name='h' onchange='this.form.submit();'>
<option value='koszko' selected='selected'>koszko</option>
<option value='koszko-scripts'>koszko-scripts</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>W</td></tr></table>
<table class='tabs'><tr><td>
<a</td></tr></table>
<table class='tabs'><tr><td>
<a href='/guix/about/'>about</a><a href='/guix/'>summary</a><a href='/guix/refs/?id=7937c8827b8d23347a3159b4696335bd19fc17aa'>refs</a><a class='active' href='/guix/log/gnu/packages/patches/json-c-0.13-CVE-2020-12762.patch'>log</a><a href='/guix/tree/gnu/packages/patches/json-c-0.13-CVE-2020-12762.patch?id=7937c8827b8d23347a3159b4696335bd19fc17aa'>tree</a><a href='/guix/commit/gnu/packages/patches/json-c-0.13-CVE-2020-12762.patch?id=7937c8827b8d23347a3159b4696335bd19fc17aa'>commit</a><a href='/guix/diff/gnu/packages/patches/json-c-0.13-CVE-2020-12762.patch?id=7937c8827b8d23347a3159b4696335bd19fc17aa'>diff</a></td><td class='form'><form class='right' method='get' action='/guix/log/gnu/packages/patches/json-c-0.13-CVE-2020-12762.patch'>
<input type='hidden' name='id' value='7937c8827b8d23347a3159b4696335bd19fc17aa'/><select name='qt'>
<option value='grep'>log msClang attempts to guess file names based on the OS and distro (yes!),
but unfortunately, that doesn&apos;t work for us.

This patch makes it easy to insert libc&apos;s $libdir so that Clang passes the
correct absolute file name of crt1.o etc. to &apos;ld&apos;.  It also disables all
the distro-specific stuff and removes the hard-coded FHS directory names
to make sure Clang also works on foreign distros.

diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
index ee4fe841..f0313bbe 100644
--- a/lib/Driver/Distro.cpp
+++ b/lib/Driver/Distro.cpp
@@ -93,6 +93,10 @@ static Distro::DistroType DetectLsbRelease(llvm::vfs::FileSystem &amp;VFS) {
 }
 
 static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &amp;VFS) {
+  // The compiler should always behave the same, even when used via Guix on a
+  // foreign distro.
+  return Distro::UnknownDistro;
+
   Distro::DistroType Version = Distro::UnknownDistro;
 
   // Newer freedesktop.org&apos;s compilant systemd-based systems
diff --git a/lib/Driver/ToolChains/Cuda.cpp b/lib/Driver/ToolChains/Cuda.cpp
index d14776c5..88bc3ccd 100644
--- a/lib/Driver/ToolChains/Cuda.cpp
+++ b/lib/Driver/ToolChains/Cuda.cpp
@@ -119,6 +119,9 @@ CudaInstallationDetector::CudaInstallationDetector(
     const Driver &amp;D, const llvm::Triple &amp;HostTriple,
     const llvm::opt::ArgList &amp;Args)
     : D(D) {
+  // Don&apos;t look for CUDA in /usr.
+  return;
+
   struct Candidate {
     std::string Path;
     bool StrictChecking;
diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
index 9663a739..107f96d6 100644
--- a/lib/Driver/ToolChains/Linux.cpp
+++ b/lib/Driver/ToolChains/Linux.cpp
@@ -223,6 +223,9 @@ Linux::Linux(const Driver &amp;D, const llvm::Triple &amp;Triple, const ArgList &amp;Args)
 
   Generic_GCC::PushPPaths(PPaths);
 
+  // Comment out the distro-specific tweaks so that they don&apos;t bite when
+  // using Guix on a foreign distro.
+#if 0
   Distro Distro(D.getVFS(), Triple);
 
   if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
@@ -288,6 +291,7 @@ Linux::Linux(const Driver &amp;D, const llvm::Triple &amp;Triple, const ArgList &amp;Args)
 
   if (IsAndroid || Distro.IsOpenSUSE())
     ExtraOpts.push_back(&quot;--enable-new-dtags&quot;);
+#endif
 
   // The selection of paths to try here is designed to match the patterns which
   // the GCC driver itself uses, as this is part of the GCC-compatible driver.
@@ -301,6 +305,7 @@ Linux::Linux(const Driver &amp;D, const llvm::Triple &amp;Triple, const ArgList &amp;Args)
 
   Generic_GCC::AddMultilibPaths(D, SysRoot, OSLibDir, MultiarchTriple, Paths);
 
+#if 0
   // Similar to the logic for GCC above, if we currently running Clang inside
   // of the requested system root, add its parent library paths to
   // those searched.
@@ -352,9 +357,14 @@ Linux::Linux(const Driver &amp;D, const llvm::Triple &amp;Triple, const ArgList &amp;Args)
   // directory (&apos;Dir&apos; below) or the ResourceDir.
   if (StringRef(D.Dir).startswith(SysRoot))
     addPathIfExists(D, D.Dir + &quot;/../lib&quot;, Paths);
+#endif
+
+  // Add libc&apos;s lib/ directory to the search path, so that crt1.o, crti.o,
+  // and friends can be found.
+  addPathIfExists(D, &quot;@GLIBC_LIBDIR@&quot;, Paths);
 
-  addPathIfExists(D, SysRoot + &quot;/lib&quot;, Paths);
-  addPathIfExists(D, SysRoot + &quot;/usr/lib&quot;, Paths);
+  // Add GCC&apos;s lib/ directory so libstdc++.so can be found.
+  addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths);
 }
 
 ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
</pre>
</div></div> <!-- class=content -->
                         <div class=footer>generated by
                             <a href="https://git.zx2c4.com/cgit/about/">
                                 cgit
                             </a>
                         </div>
                        </div> <!-- id=cgit -->
</body>
</html>
