[llvm] 2ae385e - [WebAssembly] Add WASM_SEC_LAST_KNOWN to BinaryFormat section types list [NFC]

Derek Schuff via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 7 12:07:00 PDT 2022


Author: Derek Schuff
Date: 2022-06-07T12:05:23-07:00
New Revision: 2ae385e560a62a18942cbc202cd19313c6c59470

URL: https://github.com/llvm/llvm-project/commit/2ae385e560a62a18942cbc202cd19313c6c59470
DIFF: https://github.com/llvm/llvm-project/commit/2ae385e560a62a18942cbc202cd19313c6c59470.diff

LOG: [WebAssembly] Add WASM_SEC_LAST_KNOWN to BinaryFormat section types list [NFC]

There are 3 places where we were using WASM_SEC_TAG as the "last" known
section type, which requires updating (or leaves a bug) when a new known
section type is added. Instead add a "last type" to the enum for this
purpose.

Differential Revision: https://reviews.llvm.org/D127164

Added: 
    

Modified: 
    lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp
    llvm/include/llvm/BinaryFormat/Wasm.h
    llvm/lib/ObjCopy/wasm/WasmReader.cpp
    llvm/lib/Object/WasmObjectFile.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp b/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp
index 58be1d0c7dbe..905e9637493b 100644
--- a/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp
+++ b/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp
@@ -192,7 +192,7 @@ bool ObjectFileWasm::DecodeNextSection(lldb::offset_t *offset_ptr) {
     m_sect_infos.push_back(section_info{*offset_ptr + c.tell(), section_length,
                                         section_id, *sect_name});
     *offset_ptr += (c.tell() + section_length);
-  } else if (section_id <= llvm::wasm::WASM_SEC_TAG) {
+  } else if (section_id <= llvm::wasm::WASM_SEC_LAST_KNOWN) {
     m_sect_infos.push_back(section_info{*offset_ptr + c.tell(),
                                         static_cast<uint32_t>(payload_len),
                                         section_id, ConstString()});

diff  --git a/llvm/include/llvm/BinaryFormat/Wasm.h b/llvm/include/llvm/BinaryFormat/Wasm.h
index 4b6a1d584077..62a6881ef36a 100644
--- a/llvm/include/llvm/BinaryFormat/Wasm.h
+++ b/llvm/include/llvm/BinaryFormat/Wasm.h
@@ -252,7 +252,8 @@ enum : unsigned {
   WASM_SEC_CODE = 10,      // Function bodies (code)
   WASM_SEC_DATA = 11,      // Data segments
   WASM_SEC_DATACOUNT = 12, // Data segment count
-  WASM_SEC_TAG = 13        // Tag declarations
+  WASM_SEC_TAG = 13,       // Tag declarations
+  WASM_SEC_LAST_KNOWN = WASM_SEC_TAG,
 };
 
 // Type immediate encodings used in various contexts.

diff  --git a/llvm/lib/ObjCopy/wasm/WasmReader.cpp b/llvm/lib/ObjCopy/wasm/WasmReader.cpp
index 3725c95626cf..6e7d8b5591c9 100644
--- a/llvm/lib/ObjCopy/wasm/WasmReader.cpp
+++ b/llvm/lib/ObjCopy/wasm/WasmReader.cpp
@@ -24,15 +24,12 @@ Expected<std::unique_ptr<Object>> Reader::create() const {
     const WasmSection &WS = WasmObj.getWasmSection(Sec);
     Obj->Sections.push_back(
         {static_cast<uint8_t>(WS.Type), WS.Name, WS.Content});
-    // Give known sections standard names to allow them to be selected.
+    // Give known sections standard names to allow them to be selected. (Custom
+    // sections already have their names filled in by the parser).
     Section &ReaderSec = Obj->Sections.back();
     if (ReaderSec.SectionType > WASM_SEC_CUSTOM &&
-        ReaderSec.SectionType <= WASM_SEC_TAG)
+        ReaderSec.SectionType <= WASM_SEC_LAST_KNOWN)
       ReaderSec.Name = sectionTypeToString(ReaderSec.SectionType);
-    // If the section type is CUSTOM, it has a name already. If it's a new type
-    // of section that we don't explicitly handle here, it will have an empty
-    // name and objcopy won't be able to select it by name (e.g. for removal
-    // or dumping) but it will still be valid and able to be copied.
   }
   return std::move(Obj);
 }

diff  --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp
index 73c2f868492e..0e99c2129571 100644
--- a/llvm/lib/Object/WasmObjectFile.cpp
+++ b/llvm/lib/Object/WasmObjectFile.cpp
@@ -1729,7 +1729,7 @@ Expected<StringRef> WasmObjectFile::getSectionName(DataRefImpl Sec) const {
   const WasmSection &S = Sections[Sec.d.a];
   if (S.Type == wasm::WASM_SEC_CUSTOM)
     return S.Name;
-  if (S.Type > wasm::WASM_SEC_TAG)
+  if (S.Type > wasm::WASM_SEC_LAST_KNOWN)
     return createStringError(object_error::invalid_section_index, "");
   return wasm::sectionTypeToString(S.Type);
 }


        


More information about the llvm-commits mailing list