Skip to content

Commit

Permalink
[WebAssembly] Add WASM_SEC_LAST_KNOWN to BinaryFormat section types l…
Browse files Browse the repository at this point in the history
…ist [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
  • Loading branch information
dschuff committed Jun 7, 2022
1 parent b6553f5 commit 2ae385e
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 9 deletions.
2 changes: 1 addition & 1 deletion lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp
Expand Up @@ -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()});
Expand Down
3 changes: 2 additions & 1 deletion llvm/include/llvm/BinaryFormat/Wasm.h
Expand Up @@ -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.
Expand Down
9 changes: 3 additions & 6 deletions llvm/lib/ObjCopy/wasm/WasmReader.cpp
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Object/WasmObjectFile.cpp
Expand Up @@ -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);
}
Expand Down

0 comments on commit 2ae385e

Please sign in to comment.