From 2e0c46044a5df9420375d73b25524b47db02a00f Mon Sep 17 00:00:00 2001 From: Pengxuan Zheng Date: Wed, 15 Jun 2022 12:50:06 -0700 Subject: [Object][COFF] Improve section name parsing Inspired by discussions on D127369, we probably can further improve LLVM's COFF section name parsing. Hopefully, this makes the logic simpler and handles some edge cases more elegantly. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D127902 --- llvm/lib/Object/COFFObjectFile.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'llvm/lib/Object/COFFObjectFile.cpp') diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index ee5411d..1a4bb32 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -1146,13 +1146,7 @@ uint32_t COFFObjectFile::getSymbolIndex(COFFSymbolRef Symbol) const { Expected COFFObjectFile::getSectionName(const coff_section *Sec) const { - StringRef Name; - if (Sec->Name[COFF::NameSize - 1] == 0) - // Null terminated, let ::strlen figure out the length. - Name = Sec->Name; - else - // Not null terminated, use all 8 bytes. - Name = StringRef(Sec->Name, COFF::NameSize); + StringRef Name = StringRef(Sec->Name, COFF::NameSize).split('\0').first; // Check for string table entry. First byte is '/'. if (Name.startswith("/")) { @@ -1162,7 +1156,7 @@ COFFObjectFile::getSectionName(const coff_section *Sec) const { return createStringError(object_error::parse_failed, "invalid section name"); } else { - if (Name.substr(1).consumeInteger(10, Offset)) + if (Name.substr(1).getAsInteger(10, Offset)) return createStringError(object_error::parse_failed, "invalid section name"); } -- cgit v1.1