diff --git a/pkgs/development/compilers/llvm/common/clang/ignore-nostd-link-13.diff b/pkgs/development/compilers/llvm/common/clang/ignore-nostd-link-13.diff new file mode 100644 index 000000000000..9a7a18a4c5ad --- /dev/null +++ b/pkgs/development/compilers/llvm/common/clang/ignore-nostd-link-13.diff @@ -0,0 +1,57 @@ +backported to clang-12 & clang-13 from https://github.com/llvm/llvm-project/commit/5b77e752dcd073846b89559d6c0e1a7699e58615 +diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td +index a0cbcae..8797646 100644 +--- a/include/clang/Driver/Options.td ++++ b/include/clang/Driver/Options.td +@@ -2931,7 +2931,7 @@ def headerpad__max__install__names : Joined<["-"], "headerpad_max_install_names" + def help : Flag<["-", "--"], "help">, Flags<[CC1Option,CC1AsOption, FC1Option, + FlangOption]>, HelpText<"Display available options">, + MarshallingInfoFlag>; +-def ibuiltininc : Flag<["-"], "ibuiltininc">, ++def ibuiltininc : Flag<["-"], "ibuiltininc">, Group, + HelpText<"Enable builtin #include directories even when -nostdinc is used " + "before or after -ibuiltininc. " + "Using -nobuiltininc after the option disables it">; +@@ -3641,10 +3641,11 @@ def no_cpp_precomp : Flag<["-"], "no-cpp-precomp">, Group + def no_integrated_cpp : Flag<["-", "--"], "no-integrated-cpp">, Flags<[NoXarchOption]>; + def no_pedantic : Flag<["-", "--"], "no-pedantic">, Group; + def no__dead__strip__inits__and__terms : Flag<["-"], "no_dead_strip_inits_and_terms">; +-def nobuiltininc : Flag<["-"], "nobuiltininc">, Flags<[CC1Option, CoreOption]>, ++def nobuiltininc : Flag<["-"], "nobuiltininc">, Flags<[CC1Option, CoreOption]>, Group, + HelpText<"Disable builtin #include directories">, + MarshallingInfoNegativeFlag>; +-def nogpuinc : Flag<["-"], "nogpuinc">, HelpText<"Do not add include paths for CUDA/HIP and" ++def nogpuinc : Flag<["-"], "nogpuinc">, Group, ++ HelpText<"Do not add include paths for CUDA/HIP and" + " do not include the default CUDA/HIP wrapper headers">; + def : Flag<["-"], "nocudainc">, Alias; + def nogpulib : Flag<["-"], "nogpulib">, +@@ -3660,9 +3661,9 @@ def noprebind : Flag<["-"], "noprebind">; + def noprofilelib : Flag<["-"], "noprofilelib">; + def noseglinkedit : Flag<["-"], "noseglinkedit">; + def nostartfiles : Flag<["-"], "nostartfiles">, Group; +-def nostdinc : Flag<["-"], "nostdinc">, Flags<[CoreOption]>; +-def nostdlibinc : Flag<["-"], "nostdlibinc">; +-def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>, ++def nostdinc : Flag<["-"], "nostdinc">, Flags<[CoreOption]>, Group; ++def nostdlibinc : Flag<["-"], "nostdlibinc">, Group; ++def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>, Group, + HelpText<"Disable standard #include directories for the C++ standard library">, + MarshallingInfoNegativeFlag>; + def nostdlib : Flag<["-"], "nostdlib">, Group; +diff --git a/test/Driver/linker-opts.c b/test/Driver/linker-opts.c +index e1673f7..b9beb91 100644 +--- a/test/Driver/linker-opts.c ++++ b/test/Driver/linker-opts.c +@@ -16,9 +16,8 @@ + // + // Make sure that we don't warn on unused compiler arguments. + // RUN: %clang -Xclang -I. -x c %s -c -o %t/tmp.o +-// RUN: %clang -Xclang -I. %t/tmp.o -o %t/tmp -### 2>&1 | FileCheck %s --check-prefix=NO-UNUSED +-// NO-UNUSED-NOT: warning:{{.*}}unused +-// ++// RUN: %clang -### -I. -ibuiltininc -nobuiltininc -nostdinc -nostdinc++ -nostdlibinc -nogpuinc %t/tmp.o -o /dev/null 2>&1 | FileCheck /dev/null --implicit-check-not=warning: ++ + // Make sure that we do warn in other cases. + // RUN: %clang %s -lfoo -c -o %t/tmp2.o -### 2>&1 | FileCheck %s --check-prefix=UNUSED + // UNUSED: warning:{{.*}}unused diff --git a/pkgs/development/compilers/llvm/common/default.nix b/pkgs/development/compilers/llvm/common/default.nix index b0d05c454a79..d8d1ffddc80e 100644 --- a/pkgs/development/compilers/llvm/common/default.nix +++ b/pkgs/development/compilers/llvm/common/default.nix @@ -534,6 +534,17 @@ let # mis-compilation in firefox. # See: https://bugzilla.mozilla.org/show_bug.cgi?id=1741454 (metadata.getVersionFile "clang/revert-malloc-alignment-assumption.patch") + ++ lib.optional (lib.versionOlder metadata.release_version "17") ( + if lib.versionAtLeast metadata.release_version "14" then + fetchpatch { + name = "ignore-nostd-link.patch"; + url = "https://github.com/llvm/llvm-project/commit/5b77e752dcd073846b89559d6c0e1a7699e58615.patch"; + relative = "clang"; + hash = "sha256-qzSAmoGY+7POkDhcGgQRPaNQ3+7PIcIc9cZuiE/eLkc="; + } + else + ./clang/ignore-nostd-link-13.diff + ) ++ [ (substituteAll { src =