diff options
author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-11-22 14:27:47 -0800 |
---|---|---|
committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-11-22 15:58:12 -0800 |
commit | 4506afe3ca3bda5399a1c0f3ce92f45c670a1930 (patch) | |
tree | 96f4bbb80e34c0592f1eb9a3fdf9ca6c38184473 | |
parent | 2692eb0b86c8f7ae1299d2e032f2778bb6e0a224 (diff) | |
download | bcm5719-llvm-4506afe3ca3bda5399a1c0f3ce92f45c670a1930.tar.gz bcm5719-llvm-4506afe3ca3bda5399a1c0f3ce92f45c670a1930.zip |
[Remarks] Allow empty temporary remark files
When parsing bitstream remarks, allow external remark files to be
empty, which means there are no remarks to be parsed.
In the same way, dsymutil should not produce a remark file.
-rw-r--r-- | llvm/lib/Remarks/BitstreamRemarkParser.cpp | 5 | ||||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/basic1.c | 2 | ||||
-rwxr-xr-x | llvm/test/tools/dsymutil/Inputs/remarks/basic.macho.remarks.empty.x86_64 | bin | 0 -> 9296 bytes | |||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.o | bin | 0 -> 2088 bytes | |||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.opt.bitstream | 0 | ||||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.o | bin | 0 -> 2892 bytes | |||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.opt.bitstream | 0 | ||||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.o | bin | 0 -> 2624 bytes | |||
-rw-r--r-- | llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.opt.bitstream | 0 | ||||
-rw-r--r-- | llvm/test/tools/dsymutil/X86/remarks-linking-bundle-empty.test | 8 |
10 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/Remarks/BitstreamRemarkParser.cpp b/llvm/lib/Remarks/BitstreamRemarkParser.cpp index dfad5902545..4c450887911 100644 --- a/llvm/lib/Remarks/BitstreamRemarkParser.cpp +++ b/llvm/lib/Remarks/BitstreamRemarkParser.cpp @@ -428,8 +428,13 @@ Error BitstreamRemarkParser::processExternalFilePath( MemoryBuffer::getFile(FullPath); if (std::error_code EC = BufferOrErr.getError()) return createFileError(FullPath, EC); + TmpRemarkBuffer = std::move(*BufferOrErr); + // Don't try to parse the file if it's empty. + if (TmpRemarkBuffer->getBufferSize() == 0) + return make_error<EndOfFileError>(); + // Create a separate parser used for parsing the separate file. ParserHelper = BitstreamParserHelper(TmpRemarkBuffer->getBuffer()); // Advance and check until we can parse the meta block. diff --git a/llvm/test/tools/dsymutil/Inputs/basic1.c b/llvm/test/tools/dsymutil/Inputs/basic1.c index a41edc927cb..20292069f5f 100644 --- a/llvm/test/tools/dsymutil/Inputs/basic1.c +++ b/llvm/test/tools/dsymutil/Inputs/basic1.c @@ -22,7 +22,7 @@ Remarks compilation: for FILE in basic1.c basic2.c basic3.c; do - clang -gline-tables-only -c $FILE -fsave-optimization-record=bitstream -foptimization-remarks-file=/tmp/${FILE%.c}.macho.remarks.x86_64.opt.bitstream -mllvm -remarks-section -o ${FILE%.c}.macho.remarks.x86_64.o + clang -gline-tables-only -c $FILE -fsave-optimization-record=bitstream -foptimization-record-file=/remarks/${FILE%.c}.macho.remarks.x86_64.opt.bitstream -o ${FILE%.c}.macho.remarks.x86_64.o done clang basic1.macho.remarks.x86_64.o basic2.macho.remarks.x86_64.o basic3.macho.remarks.x86_64.o -o basic.macho.remarks.x86_64 -Wl,-dead_strip diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic.macho.remarks.empty.x86_64 b/llvm/test/tools/dsymutil/Inputs/remarks/basic.macho.remarks.empty.x86_64 Binary files differnew file mode 100755 index 00000000000..a730148ba38 --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic.macho.remarks.empty.x86_64 diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.o b/llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.o Binary files differnew file mode 100644 index 00000000000..aef4841d64c --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.o diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.opt.bitstream b/llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.opt.bitstream new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic1.macho.remarks.empty.x86_64.opt.bitstream diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.o b/llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.o Binary files differnew file mode 100644 index 00000000000..9bb1405bf9e --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.o diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.opt.bitstream b/llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.opt.bitstream new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic2.macho.remarks.empty.x86_64.opt.bitstream diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.o b/llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.o Binary files differnew file mode 100644 index 00000000000..fff0a7122fb --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.o diff --git a/llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.opt.bitstream b/llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.opt.bitstream new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/remarks/basic3.macho.remarks.empty.x86_64.opt.bitstream diff --git a/llvm/test/tools/dsymutil/X86/remarks-linking-bundle-empty.test b/llvm/test/tools/dsymutil/X86/remarks-linking-bundle-empty.test new file mode 100644 index 00000000000..12418694f14 --- /dev/null +++ b/llvm/test/tools/dsymutil/X86/remarks-linking-bundle-empty.test @@ -0,0 +1,8 @@ +RUN: rm -rf %t +RUN: mkdir -p %t +RUN: cat %p/../Inputs/remarks/basic.macho.remarks.empty.x86_64 > %t/basic.macho.remarks.empty.x86_64 + +RUN: dsymutil -oso-prepend-path=%p/../Inputs -remarks-prepend-path=%p/../Inputs %t/basic.macho.remarks.empty.x86_64 + +Check that the remark file in the bundle does not exist: +RUN: not cat %t/basic.macho.remarks.empty.x86_64.dSYM/Contents/Resources/Remarks/basic.macho.remarks.empty.x86_64 2>&1 |