diff options
author | Pengxuan Zheng <pzheng@quicinc.com> | 2022-06-15 12:50:06 -0700 |
---|---|---|
committer | Pengxuan Zheng <pzheng@quicinc.com> | 2022-06-16 17:01:10 -0700 |
commit | 2e0c46044a5df9420375d73b25524b47db02a00f (patch) | |
tree | c91923e46ecfb798b6a5f9652c0bd09017c68cb1 /llvm/lib/Object/COFFObjectFile.cpp | |
parent | 0e182469ee765613ea860e3b1024094411be9628 (diff) | |
download | llvm-2e0c46044a5df9420375d73b25524b47db02a00f.zip llvm-2e0c46044a5df9420375d73b25524b47db02a00f.tar.gz llvm-2e0c46044a5df9420375d73b25524b47db02a00f.tar.bz2 |
[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
Diffstat (limited to 'llvm/lib/Object/COFFObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/COFFObjectFile.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
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<StringRef> 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"); } |