aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/COFFObjectFile.cpp
diff options
context:
space:
mode:
authorPengxuan Zheng <pzheng@quicinc.com>2022-06-15 12:50:06 -0700
committerPengxuan Zheng <pzheng@quicinc.com>2022-06-16 17:01:10 -0700
commit2e0c46044a5df9420375d73b25524b47db02a00f (patch)
treec91923e46ecfb798b6a5f9652c0bd09017c68cb1 /llvm/lib/Object/COFFObjectFile.cpp
parent0e182469ee765613ea860e3b1024094411be9628 (diff)
downloadllvm-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.cpp10
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");
}