xref: /llvm-project/llvm/test/tools/llvm-objcopy/COFF/update-section.test (revision 85381e67a9571f6ba27fc7f448b523f6ec2eb312)
1*85381e67SAlex Brachet# RUN: echo -n AAAB > %t.diff
2*85381e67SAlex Brachet# RUN: echo -n AAA > %t.smaller
3*85381e67SAlex Brachet# RUN: echo -n AAAAA > %t.larger
4*85381e67SAlex Brachet
5*85381e67SAlex Brachet# RUN: yaml2obj %s -o %t
6*85381e67SAlex Brachet
7*85381e67SAlex Brachet# RUN: llvm-objcopy --update-section=.text=%t.diff %t - | llvm-readobj -S -x .text - | FileCheck %s
8*85381e67SAlex Brachet# CHECK:        Section {
9*85381e67SAlex Brachet# CHECK-NEXT:     Number: 1
10*85381e67SAlex Brachet# CHECK-NEXT:     Name: .text
11*85381e67SAlex Brachet# CHECK-NOT:    }
12*85381e67SAlex Brachet# CHECK:          RawDataSize: 4
13*85381e67SAlex Brachet# CHECK:          Hex dump of section '.text':
14*85381e67SAlex Brachet# CHECK-NEXT:     0x00000000 41414142 AAAB
15*85381e67SAlex Brachet
16*85381e67SAlex Brachet# RUN: llvm-objcopy --update-section=.text=%t.smaller %t - | llvm-readobj -S -x .text - | FileCheck %s --check-prefix=SMALLER
17*85381e67SAlex Brachet# SMALLER:      Section {
18*85381e67SAlex Brachet# SMALLER-NEXT:   Number: 1
19*85381e67SAlex Brachet# SMALLER-NEXT:   Name: .text
20*85381e67SAlex Brachet# SMALLER-NOT:  }
21*85381e67SAlex Brachet# SMALLER:        RawDataSize: 3
22*85381e67SAlex Brachet# SMALLER:        Hex dump of section '.text':
23*85381e67SAlex Brachet# SMALLER-NEXT:   0x00000000 414141 AAA
24*85381e67SAlex Brachet
25*85381e67SAlex Brachet# RUN: llvm-objcopy --update-section=.text=%t.diff --update-section=.other=%t.diff %t - | \
26*85381e67SAlex Brachet# RUN:   llvm-readobj -S -x .text -x .other - | FileCheck %s --check-prefix=MULTIPLE
27*85381e67SAlex Brachet# MULTIPLE:     Section {
28*85381e67SAlex Brachet# MULTIPLE-NEXT:  Number: 1
29*85381e67SAlex Brachet# MULTIPLE-NEXT:  Name: .text
30*85381e67SAlex Brachet# MULTIPLE-NOT: }
31*85381e67SAlex Brachet# MULTIPLE:       RawDataSize: 4
32*85381e67SAlex Brachet# MULTIPLE:     Section {
33*85381e67SAlex Brachet# MULTIPLE-NEXT:  Number: 2
34*85381e67SAlex Brachet# MULTIPLE-NEXT:  Name: .other
35*85381e67SAlex Brachet# MULTIPLE-NOT: }
36*85381e67SAlex Brachet# MULTIPLE:       RawDataSize: 4
37*85381e67SAlex Brachet# MULTIPLE:       Hex dump of section '.text':
38*85381e67SAlex Brachet# MULTIPLE-NEXT:  0x00000000 41414142 AAAB
39*85381e67SAlex Brachet# MULTIPLE:       Hex dump of section '.other':
40*85381e67SAlex Brachet# MULTIPLE-NEXT:  0x00000000 41414142 AAAB
41*85381e67SAlex Brachet
42*85381e67SAlex Brachet# RUN: not llvm-objcopy --update-section=.text=%t.larger %t /dev/null 2>&1 | FileCheck %s --check-prefix=TOO-LARGE
43*85381e67SAlex Brachet# TOO-LARGE: error: {{.*}}new section cannot be larger than previous section
44*85381e67SAlex Brachet
45*85381e67SAlex Brachet# RUN: not llvm-objcopy --update-section=.bss=%t.diff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NO-CONTENTS
46*85381e67SAlex Brachet# NO-CONTENTS: error: {{.*}}section '.bss' cannot be updated because it does not have contents
47*85381e67SAlex Brachet
48*85381e67SAlex Brachet# RUN: not llvm-objcopy --update-section=.text=%t.noexist %t /dev/null 2>&1 | \
49*85381e67SAlex Brachet# RUN:   FileCheck %s --check-prefix=NOENT -DENOENT=%errc_ENOENT
50*85381e67SAlex Brachet# NOENT: error: {{.*}}: [[ENOENT]]
51*85381e67SAlex Brachet
52*85381e67SAlex Brachet# RUN: not llvm-objcopy --update-section=.noexist=%t.diff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NO-SECTION
53*85381e67SAlex Brachet# NO-SECTION: error: {{.*}}could not find section with name '.noexist'
54*85381e67SAlex Brachet
55*85381e67SAlex Brachet--- !COFF
56*85381e67SAlex Brachetheader:
57*85381e67SAlex Brachet  Machine:           IMAGE_FILE_MACHINE_AMD64
58*85381e67SAlex Brachet  Characteristics:   [  ]
59*85381e67SAlex Brachetsections:
60*85381e67SAlex Brachet  - Name:            .text
61*85381e67SAlex Brachet    Characteristics: [  ]
62*85381e67SAlex Brachet    Alignment:       4
63*85381e67SAlex Brachet    SectionData:     '41414141'
64*85381e67SAlex Brachet  - Name:            .other
65*85381e67SAlex Brachet    Characteristics: [  ]
66*85381e67SAlex Brachet    Alignment:       4
67*85381e67SAlex Brachet    SectionData:     '42424242'
68*85381e67SAlex Brachet  - Name:            .bss
69*85381e67SAlex Brachet    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA ]
70*85381e67SAlex Brachet    SizeOfRawData:   0
71*85381e67SAlex Brachetsymbols:
72*85381e67SAlex Brachet...
73