Commit 62cf59f2 authored by Samuel Ainsworth's avatar Samuel Ainsworth
Browse files

cuda_nvcc: also patch math_functions.hpp for glibc 2.42

The existing glibc 2.42 compatibility patch fixes function signatures
in math_functions.h but misses math_functions.hpp, which has the same
rsqrt/sinpi/cospi functions wrapped in __func__() macros. Without
throw() annotations on these, C++ compilation fails when glibc 2.42
declares the same functions with throw().
parent c583bccd
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -189,6 +189,29 @@ buildRedist (finalAttrs: {
          --replace-fail \
            "rsqrtf(float x);" \
            "rsqrtf(float x) noexcept (true);"

        # math_functions.hpp has the same functions wrapped in __func__() macros.
        # These also need throw() annotations to match glibc 2.42's declarations.
        nixLog "Patching math_functions.hpp signatures to match glibc's ones"
        substituteInPlace "''${!outputInclude:?}/include/crt/math_functions.hpp" \
          --replace-fail \
            "__func__(double rsqrt(const double a))" \
            "__func__(double rsqrt(const double a) throw())" \
          --replace-fail \
            "__func__(double sinpi(double a))" \
            "__func__(double sinpi(double a) throw())" \
          --replace-fail \
            "__func__(double cospi(double a))" \
            "__func__(double cospi(double a) throw())" \
          --replace-fail \
            "__func__(float rsqrtf(const float a))" \
            "__func__(float rsqrtf(const float a) throw())" \
          --replace-fail \
            "__func__(float sinpif(const float a))" \
            "__func__(float sinpif(const float a) throw())" \
          --replace-fail \
            "__func__(float cospif(const float a))" \
            "__func__(float cospif(const float a) throw())"
      ''
    );