summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmParser.cpp
diff options
context:
space:
mode:
authorEric Beckmann <ecbeckmann@google.com>2017-09-16 01:14:36 +0000
committerEric Beckmann <ecbeckmann@google.com>2017-09-16 01:14:36 +0000
commit913213c8ae6167de4b8ba92cbd71975761113096 (patch)
tree303f5fb3d082b085b65fc2068b53a8cfbce718bc /llvm/lib/MC/MCParser/AsmParser.cpp
parentb29a17ba21d3c19bf3cc5df2b979a9f67666ed54 (diff)
downloadbcm5719-llvm-913213c8ae6167de4b8ba92cbd71975761113096.tar.gz
bcm5719-llvm-913213c8ae6167de4b8ba92cbd71975761113096.zip
Revert "Fix Bug 30978 by emitting cv file checksums."
This reverts commit 6389e7aa724ea7671d096f4770f016c3d86b0d54. There is a bug in this implementation where the string value of the checksum is outputted, instead of the actual hex bytes. Therefore the checksum is incorrect, and this prevent pdbs from being loaded by visual studio. Revert this until the checksum is emitted correctly. llvm-svn: 313431
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp40
1 files changed, 7 insertions, 33 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 6e4f8e26b53..ee3cc8d80a6 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -501,7 +501,6 @@ private:
DK_CV_DEF_RANGE,
DK_CV_STRINGTABLE,
DK_CV_FILECHECKSUMS,
- DK_CV_FILECHECKSUM_OFFSET,
DK_CFI_SECTIONS,
DK_CFI_STARTPROC,
DK_CFI_ENDPROC,
@@ -577,7 +576,6 @@ private:
bool parseDirectiveCVDefRange();
bool parseDirectiveCVStringTable();
bool parseDirectiveCVFileChecksums();
- bool parseDirectiveCVFileChecksumOffset();
// .cfi directives
bool parseDirectiveCFIRegister(SMLoc DirectiveLoc);
@@ -2032,8 +2030,6 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info,
return parseDirectiveCVStringTable();
case DK_CV_FILECHECKSUMS:
return parseDirectiveCVFileChecksums();
- case DK_CV_FILECHECKSUM_OFFSET:
- return parseDirectiveCVFileChecksumOffset();
case DK_CFI_SECTIONS:
return parseDirectiveCFISections();
case DK_CFI_STARTPROC:
@@ -3461,34 +3457,25 @@ bool AsmParser::parseDirectiveStabs() {
}
/// parseDirectiveCVFile
-/// ::= .cv_file number filename [checksum] [checksumkind]
+/// ::= .cv_file number filename
bool AsmParser::parseDirectiveCVFile() {
SMLoc FileNumberLoc = getTok().getLoc();
int64_t FileNumber;
std::string Filename;
- std::string Checksum;
- int64_t ChecksumKind = 0;
if (parseIntToken(FileNumber,
"expected file number in '.cv_file' directive") ||
check(FileNumber < 1, FileNumberLoc, "file number less than one") ||
check(getTok().isNot(AsmToken::String),
"unexpected token in '.cv_file' directive") ||
- parseEscapedString(Filename))
+ // Usually directory and filename are together, otherwise just
+ // directory. Allow the strings to have escaped octal character sequence.
+ parseEscapedString(Filename) ||
+ parseToken(AsmToken::EndOfStatement,
+ "unexpected token in '.cv_file' directive"))
return true;
- if (!parseOptionalToken(AsmToken::EndOfStatement)) {
- if (check(getTok().isNot(AsmToken::String),
- "unexpected token in '.cv_file' directive") ||
- parseEscapedString(Checksum) ||
- parseIntToken(ChecksumKind,
- "expected checksum kind in '.cv_file' directive") ||
- parseToken(AsmToken::EndOfStatement,
- "unexpected token in '.cv_file' directive"))
- return true;
- }
- if (!getStreamer().EmitCVFileDirective(FileNumber, Filename, Checksum,
- static_cast<uint8_t>(ChecksumKind)))
+ if (!getStreamer().EmitCVFileDirective(FileNumber, Filename))
return Error(FileNumberLoc, "file number already allocated");
return false;
@@ -3767,18 +3754,6 @@ bool AsmParser::parseDirectiveCVFileChecksums() {
return false;
}
-/// parseDirectiveCVFileChecksumOffset
-/// ::= .cv_filechecksumoffset fileno
-bool AsmParser::parseDirectiveCVFileChecksumOffset() {
- int64_t FileNo;
- if (parseIntToken(FileNo, "expected identifier in directive"))
- return true;
- if (parseToken(AsmToken::EndOfStatement, "Expected End of Statement"))
- return true;
- getStreamer().EmitCVFileChecksumOffsetDirective(FileNo);
- return false;
-}
-
/// parseDirectiveCFISections
/// ::= .cfi_sections section [, section]
bool AsmParser::parseDirectiveCFISections() {
@@ -5161,7 +5136,6 @@ void AsmParser::initializeDirectiveKindMap() {
DirectiveKindMap[".cv_def_range"] = DK_CV_DEF_RANGE;
DirectiveKindMap[".cv_stringtable"] = DK_CV_STRINGTABLE;
DirectiveKindMap[".cv_filechecksums"] = DK_CV_FILECHECKSUMS;
- DirectiveKindMap[".cv_filechecksumoffset"] = DK_CV_FILECHECKSUM_OFFSET;
DirectiveKindMap[".sleb128"] = DK_SLEB128;
DirectiveKindMap[".uleb128"] = DK_ULEB128;
DirectiveKindMap[".cfi_sections"] = DK_CFI_SECTIONS;
OpenPOWER on IntegriCloud