[libc] allow libc-hdrgen to work on windows files (#87292)

The code does some (overly simple?) checks on file syntax. These checks
assume unix line endings and fail on windows. This commit updates the
code to strip extra whitespace, making the checks more robust,
particularly in the presence of windows line endings.

Fixes #86023
This commit is contained in:
Stephen Neuendorffer 2024-04-01 17:04:29 -07:00 committed by GitHub
parent 1079fc4f54
commit 6d0174e706
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -84,11 +84,19 @@ void Generator::generate(llvm::raw_ostream &OS, llvm::RecordKeeper &Records) {
Line = Line.drop_front(CommandPrefixSize);
P = Line.split("(");
// It's possible that we have windows line endings, so strip off the extra
// CR.
P.second = P.second.trim();
if (P.second.empty() || P.second[P.second.size() - 1] != ')') {
SrcMgr.PrintMessage(llvm::SMLoc::getFromPointer(P.second.data()),
llvm::SourceMgr::DK_Error,
"Command argument list should begin with '(' "
"and end with ')'.");
SrcMgr.PrintMessage(llvm::SMLoc::getFromPointer(P.second.data()),
llvm::SourceMgr::DK_Error, P.second.data());
SrcMgr.PrintMessage(llvm::SMLoc::getFromPointer(P.second.data()),
llvm::SourceMgr::DK_Error,
std::to_string(P.second.size()));
std::exit(1);
}
llvm::StringRef CommandName = P.first;