[llvm-objcopy] Fix --section-add when section contain empty bytes
Implicit cast between char* and StringRef when writing sections. Reproduce: ``` $> llvm-objcopy --dump-section=name=name.data out.wasm $> llvm-objcopy --remove-section=name out.wasm out_no_name.wasm $> llvm-objcopy --add-section=name=name.data out_no_name.wasm out_new_name.wasm # With wasm-objdump -h we can see that the name section is not totally copied in the new wasm file (if it actually contain empty bytes) ``` Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D139210
This commit is contained in:
parent
fccab9f90b
commit
0041382198
|
@ -126,9 +126,11 @@ static Error handleArgs(const CommonConfig &Config, Object &Obj) {
|
|||
Sec.SectionType = llvm::wasm::WASM_SEC_CUSTOM;
|
||||
Sec.Name = NewSection.SectionName;
|
||||
|
||||
llvm::StringRef InputData =
|
||||
llvm::StringRef(NewSection.SectionData->getBufferStart(),
|
||||
NewSection.SectionData->getBufferSize());
|
||||
std::unique_ptr<MemoryBuffer> BufferCopy = MemoryBuffer::getMemBufferCopy(
|
||||
NewSection.SectionData->getBufferStart(),
|
||||
NewSection.SectionData->getBufferIdentifier());
|
||||
InputData, NewSection.SectionData->getBufferIdentifier());
|
||||
Sec.Contents = makeArrayRef<uint8_t>(
|
||||
reinterpret_cast<const uint8_t *>(BufferCopy->getBufferStart()),
|
||||
BufferCopy->getBufferSize());
|
||||
|
|
|
@ -20,6 +20,17 @@
|
|||
# REPLACE: Name: foo
|
||||
# REPLACE: Payload: 3132330A
|
||||
|
||||
# Check that raw data bytes can be imported and exported unchanged especially the ones containing empty bytes.
|
||||
# RUN: echo -en '\x02\x01\x00\x01\x02' > %t6
|
||||
# RUN: llvm-objcopy --add-section=bar=%t6 %t %t7
|
||||
# RUN: llvm-objcopy --dump-section=bar=%t8 %t7
|
||||
# RUN: diff %t8 %t6
|
||||
# RUN: obj2yaml %t7 | FileCheck %s --check-prefix=RAW-DATA
|
||||
|
||||
# Check that raw data is well formated in the file as well.
|
||||
# RAW-DATA: Name: bar
|
||||
# RAW-DATA-NEXT: Payload: '0201000102'
|
||||
|
||||
--- !WASM
|
||||
FileHeader:
|
||||
Version: 0x00000001
|
||||
|
|
Loading…
Reference in New Issue