[PATCH] D126509: [Objcopy][Wasm] Allow selecting known sections by name
Derek Schuff via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 6 13:55:04 PDT 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc9dd1cc6f053: [Objcopy][Wasm] Allow selecting known sections by name (authored by dschuff).
Changed prior to commit:
https://reviews.llvm.org/D126509?vs=433150&id=434599#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126509/new/
https://reviews.llvm.org/D126509
Files:
llvm/lib/ObjCopy/wasm/WasmReader.cpp
llvm/test/tools/llvm-objcopy/wasm/dump-section.test
llvm/test/tools/llvm-objcopy/wasm/only-keep-debug.test
llvm/test/tools/llvm-objcopy/wasm/remove-section.test
Index: llvm/test/tools/llvm-objcopy/wasm/remove-section.test
===================================================================
--- llvm/test/tools/llvm-objcopy/wasm/remove-section.test
+++ llvm/test/tools/llvm-objcopy/wasm/remove-section.test
@@ -8,6 +8,12 @@
## Requests to remove nonexistent sections are silently ignored.
# RUN: llvm-objcopy --remove-section=nonexistent=%t.sec %t 2>&1 | count 0
+## Remove the type section.
+# RUN: llvm-objcopy -R TYPE %t %t3
+# RUN: obj2yaml %t3 | FileCheck --check-prefix=REMOVETYPE --implicit-check-not=TYPE %s
+## Check that the producers section is still there.
+# REMOVETYPE: producers
+
--- !WASM
FileHeader:
Version: 0x00000001
Index: llvm/test/tools/llvm-objcopy/wasm/only-keep-debug.test
===================================================================
--- llvm/test/tools/llvm-objcopy/wasm/only-keep-debug.test
+++ llvm/test/tools/llvm-objcopy/wasm/only-keep-debug.test
@@ -8,7 +8,13 @@
# RUN: llvm-strip --only-keep-debug --keep-section=foo %t
# RUN: obj2yaml %t | FileCheck --implicit-check-not=Name --check-prefix=CHECK --check-prefix=KEEP %s
+## Test that keep-section overrides only-keep-debug, even for known sections.
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-strip --only-keep-debug --keep-section=TYPE %t
+# RUN: obj2yaml %t | FileCheck --implicit-check-not=Name --check-prefix=CHECK --check-prefix=KEEPTYPE %s
+
# CHECK: Sections:
+# KEEPTYPE: Type: TYPE
# CHECK: - Type: CUSTOM
# CHECK-NEXT: Name: .debug_info
# CHECK: - Type: CUSTOM
Index: llvm/test/tools/llvm-objcopy/wasm/dump-section.test
===================================================================
--- llvm/test/tools/llvm-objcopy/wasm/dump-section.test
+++ llvm/test/tools/llvm-objcopy/wasm/dump-section.test
@@ -13,6 +13,14 @@
# NONEXISTENT: section 'nonexistent' not found
# DIROUT: error: {{.*}}/bar': [[MSG]]
+## Test dumping the type section (a known section).
+# RUN: llvm-objcopy --dump-section=TYPE=%t.sec %t
+# RUN: od -t x1 %t.sec | FileCheck %s --check-prefix=TYPESEC
+
+## Raw contents of the type section.
+# TYPESEC: 000000 01 60 01 7f 01 7d
+# TYPESEC: 000006
+
## Check that dumping and removing a section works in the same invocation
# RUN: llvm-objcopy --dump-section=producers=%t.sec --remove-section=producers %t %t2
# RUN: od -t x1 %t.sec | FileCheck %s
Index: llvm/lib/ObjCopy/wasm/WasmReader.cpp
===================================================================
--- llvm/lib/ObjCopy/wasm/WasmReader.cpp
+++ llvm/lib/ObjCopy/wasm/WasmReader.cpp
@@ -24,6 +24,15 @@
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.
+ Section &ReaderSec = Obj->Sections.back();
+ if (ReaderSec.SectionType > WASM_SEC_CUSTOM &&
+ ReaderSec.SectionType <= WASM_SEC_TAG)
+ 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);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126509.434599.patch
Type: text/x-patch
Size: 3350 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220606/fa582e9a/attachment.bin>
More information about the llvm-commits
mailing list