Author: Yaxun (Sam) Liu Date: 2023-12-01T16:22:16-05:00 New Revision: a4d85490e029e797d22881b37d476c2050d0d6a2
URL: https://github.com/llvm/llvm-project/commit/a4d85490e029e797d22881b37d476c2050d0d6a2 DIFF: https://github.com/llvm/llvm-project/commit/a4d85490e029e797d22881b37d476c2050d0d6a2.diff LOG: [HIP] fix stack marking for -fgpu-rdc (#72782) HIP toolchain uses llvm-mc to generate a host object embedding device binary for -fgpu-rdc. Due to lack of .note.GNU-stack section, the generated relocatable has executable stack marking, which disables protection from executable stack for any HIP programs compiled with -fgpu-rdc. This patch adds .note.GNU-stack section to the input to llvm-mc to fix the executable stack marking. Fixes: https://github.com/llvm/llvm-project/issues/71711 Added: Modified: clang/lib/Driver/ToolChains/HIPUtility.cpp clang/test/Driver/hip-toolchain-rdc.hip Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index 04efdcba20ea740..f692458b775de2b 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -150,6 +150,8 @@ void HIP::constructGenerateObjFileFromHIPFatBinary( ObjStream << " .incbin "; llvm::sys::printArg(ObjStream, BundleFile, /*Quote=*/true); ObjStream << "\n"; + if (HostTriple.isOSLinux() && HostTriple.isOSBinFormatELF()) + ObjStream << " .section .note.GNU-stack, \"\", @progbits\n"; ObjStream.flush(); // Dump the contents of the temp object file gen if the user requested that. diff --git a/clang/test/Driver/hip-toolchain-rdc.hip b/clang/test/Driver/hip-toolchain-rdc.hip index fa30bb8a9f5f576..1827531f9cab7a3 100644 --- a/clang/test/Driver/hip-toolchain-rdc.hip +++ b/clang/test/Driver/hip-toolchain-rdc.hip @@ -32,6 +32,8 @@ // CHECK: .p2align 12 // CHECK: __hip_fatbin: // CHECK: .incbin "[[BUNDLE:.*hipfb]]" +// LNX: .section .note.GNU-stack, "", @progbits +// MSVC-NOT: .note.GNU-stack // emit objects for host side path // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" [[HOST:"x86_64-[^"]+"]] _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits