From 1ffbe8c04ff269ca9847c37036fbad943820d6ae Mon Sep 17 00:00:00 2001 From: Vyacheslav Zakharin Date: Wed, 18 Aug 2021 08:18:03 -0700 Subject: [PATCH] [clang-offload-wrapper] Disabled ELF offload notes embedding by default. This change-set puts 93d08acaacec951dbb302f77eeae51974985b6b2 functionality under -add-omp-offload-notes switch that is OFF by default. CUDA toolchain is not able to handle ELF images with LLVMOMPOFFLOAD notes for unknown reason (see https://reviews.llvm.org/D99551#2950272). I disable the ELF notes embedding until the CUDA issue is triaged and resolved. Differential Revision: https://reviews.llvm.org/D108246 --- clang/test/Driver/clang-offload-wrapper.c | 10 +++++----- clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp | 6 +++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/clang/test/Driver/clang-offload-wrapper.c b/clang/test/Driver/clang-offload-wrapper.c index c671d88..1c84072 100644 --- a/clang/test/Driver/clang-offload-wrapper.c +++ b/clang/test/Driver/clang-offload-wrapper.c @@ -19,7 +19,7 @@ // // Check bitcode produced by the wrapper tool. // -// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.bc %t.tgt 2>&1 | FileCheck %s --check-prefix ELF-WARNING +// RUN: clang-offload-wrapper -add-omp-offload-notes -target=x86_64-pc-linux-gnu -o %t.wrapper.bc %t.tgt 2>&1 | FileCheck %s --check-prefix ELF-WARNING // RUN: llvm-dis %t.wrapper.bc -o - | FileCheck %s --check-prefix CHECK-IR // ELF-WARNING: is not an ELF image, so notes cannot be added to it. @@ -58,16 +58,16 @@ // Check that clang-offload-wrapper adds LLVMOMPOFFLOAD notes // into the ELF offload images: // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.64le -DBITS=64 -DENCODING=LSB -// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.elf64le.bc %t.64le +// RUN: clang-offload-wrapper -add-omp-offload-notes -target=x86_64-pc-linux-gnu -o %t.wrapper.elf64le.bc %t.64le // RUN: llvm-dis %t.wrapper.elf64le.bc -o - | FileCheck %s --check-prefix OMPNOTES // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.64be -DBITS=64 -DENCODING=MSB -// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.elf64be.bc %t.64be +// RUN: clang-offload-wrapper -add-omp-offload-notes -target=x86_64-pc-linux-gnu -o %t.wrapper.elf64be.bc %t.64be // RUN: llvm-dis %t.wrapper.elf64be.bc -o - | FileCheck %s --check-prefix OMPNOTES // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.32le -DBITS=32 -DENCODING=LSB -// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.elf32le.bc %t.32le +// RUN: clang-offload-wrapper -add-omp-offload-notes -target=x86_64-pc-linux-gnu -o %t.wrapper.elf32le.bc %t.32le // RUN: llvm-dis %t.wrapper.elf32le.bc -o - | FileCheck %s --check-prefix OMPNOTES // RUN: yaml2obj %S/Inputs/empty-elf-template.yaml -o %t.32be -DBITS=32 -DENCODING=MSB -// RUN: clang-offload-wrapper -target=x86_64-pc-linux-gnu -o %t.wrapper.elf32be.bc %t.32be +// RUN: clang-offload-wrapper -add-omp-offload-notes -target=x86_64-pc-linux-gnu -o %t.wrapper.elf32be.bc %t.32be // RUN: llvm-dis %t.wrapper.elf32be.bc -o - | FileCheck %s --check-prefix OMPNOTES // There is no clean way for extracting the offload image diff --git a/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp b/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp index bbadd90..b86a927 100644 --- a/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp +++ b/clang/tools/clang-offload-wrapper/ClangOffloadWrapper.cpp @@ -76,6 +76,10 @@ static cl::opt SaveTemps( "This option forces print-out of the temporary files' names."), cl::Hidden); +static cl::opt AddOpenMPOffloadNotes( + "add-omp-offload-notes", + cl::desc("Add LLVMOMPOFFLOAD ELF notes to ELF device images."), cl::Hidden); + namespace { class BinaryWrapper { @@ -630,7 +634,7 @@ int main(int argc, const char **argv) { return 1; } std::unique_ptr Buffer(std::move(*BufOrErr)); - if (File != "-") { + if (File != "-" && AddOpenMPOffloadNotes) { // Adding ELF notes for STDIN is not supported yet. Buffer = Wrapper.addELFNotes(std::move(Buffer), File); } -- 2.7.4