diff options
author | Alex Brachet <abrachet@google.com> | 2022-01-23 09:44:09 +0000 |
---|---|---|
committer | Alex Brachet <abrachet@google.com> | 2022-01-23 09:47:45 +0000 |
commit | 3dc6fd5151355c309f0c4595b63268138ac57910 (patch) | |
tree | e60a35074a4641cb8d0a0f17596662a63a96c311 /llvm/test/tools/llvm-objcopy/MachO/update-section.test | |
parent | be6070c290e23d659c6374284a632442e2360967 (diff) | |
download | llvm-base_offset.tar.gz |
[llvm-objcopy][MachO] Implement --update-sectionbase_offset
Implements `--update-section` which is currently supported for ELF for Mach-O as well
Reviewed By: alexander-shaposhnikov
Differential Revision: https://reviews.llvm.org/D117281
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/MachO/update-section.test')
-rw-r--r-- | llvm/test/tools/llvm-objcopy/MachO/update-section.test | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/MachO/update-section.test b/llvm/test/tools/llvm-objcopy/MachO/update-section.test new file mode 100644 index 000000000000..a4fa5423ee52 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/MachO/update-section.test @@ -0,0 +1,115 @@ +# RUN: echo -n AAAB > %t.diff +# RUN: echo -n AAA > %t.smaller +# RUN: echo -n AAAAAAAAA > %t.larger + +# RUN: yaml2obj --docnum=1 %s -o %t + +# RUN: llvm-objcopy --update-section __TEXT,__text=%t.diff %t - | obj2yaml | FileCheck %s +# CHECK: content: '41414142' + +# RUN: llvm-objcopy --update-section __TEXT,__text=%t.smaller %t - | obj2yaml | FileCheck %s --check-prefix=SMALLER +# SMALLER: content: '414141' + +# RUN: not llvm-objcopy --update-section __TEXT,__text=%t.larger %t /dev/null 2>&1 | FileCheck %s --check-prefix=TOO-LARGE +# TOO-LARGE: error: {{.*}}new section cannot be larger than previous section + +# RUN: not llvm-objcopy --update-section __TEXT,__text=%t.noexist %t /dev/null + +# RUN: not llvm-objcopy --update-section __NOEXIST,__text=%t.diff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NO-SEGMENT +# NO-SEGMENT: error: {{.*}}could not find segment with name '__NOEXIST' + +# RUN: not llvm-objcopy --update-section __TEXT,__noexist=%t.diff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NO-SECTION +# NO-SECTION: error: {{.*}}could not find section with name '__noexist' + +# RUN: yaml2obj --docnum=2 %s -o %t + +# RUN: llvm-objcopy --update-section __TEXT,__text=%t.diff %t - | obj2yaml | FileCheck %s --check-prefix=FULL-SECNAME +# FULL-SECNAME: content: '41414142' + +# RUN: not llvm-objcopy --update-section __text=%t.dff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NON-CANONICAL-SECNAME +# NON-CANONICAL-SECNAME: error: {{.*}}invalid section name '__text' (should be formatted as '<segment name>,<section name>') + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000001 + ncmds: 1 + sizeofcmds: 152 + flags: 0x00002000 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 152 + segname: __TEXT + vmaddr: 0 + vmsize: 4 + fileoff: 184 + filesize: 4 + maxprot: 7 + initprot: 7 + nsects: 1 + flags: 0 + Sections: + - sectname: __text + segname: __TEXT + addr: 0x0000000000000000 + content: '41414141' + size: 4 + offset: 184 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x80000400 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000001 + ncmds: 1 + sizeofcmds: 312 + flags: 0x00002000 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 312 + segname: '__TEXT' + vmaddr: 0 + vmsize: 12 + fileoff: 344 + filesize: 12 + maxprot: 7 + initprot: 7 + nsects: 3 + flags: 0 + Sections: + - sectname: __text + segname: __TEXT + addr: 0x0000000000000000 + content: 'AABBCCDD' + size: 4 + offset: 344 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x80000400 + reserved1: 0x00000000 + reserved2: 0x00000000 + - sectname: __text + segname: __TEXT2 + addr: 0x0000000000000004 + content: '' + size: 0 + offset: 348 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000000 + reserved1: 0x00000000 + reserved2: 0x00000000 |