File: update-section.test

package info (click to toggle)
llvm-toolchain-17 1%3A17.0.6-22
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,799,624 kB
  • sloc: cpp: 6,428,607; ansic: 1,383,196; asm: 793,408; python: 223,504; objc: 75,364; f90: 60,502; lisp: 33,869; pascal: 15,282; sh: 9,684; perl: 7,453; ml: 4,937; awk: 3,523; makefile: 2,889; javascript: 2,149; xml: 888; fortran: 619; cs: 573
file content (72 lines) | stat: -rw-r--r-- 2,637 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# RUN: echo -n AAAB > %t.diff
# RUN: echo -n AAA > %t.smaller
# RUN: echo -n AAAAA > %t.larger

# RUN: yaml2obj %s -o %t

# RUN: llvm-objcopy --update-section=.text=%t.diff %t - | llvm-readobj -S -x .text - | FileCheck %s
# CHECK:        Section {
# CHECK-NEXT:     Number: 1
# CHECK-NEXT:     Name: .text
# CHECK-NOT:    }
# CHECK:          RawDataSize: 4
# CHECK:          Hex dump of section '.text':
# CHECK-NEXT:     0x00000000 41414142 AAAB

# RUN: llvm-objcopy --update-section=.text=%t.smaller %t - | llvm-readobj -S -x .text - | FileCheck %s --check-prefix=SMALLER
# SMALLER:      Section {
# SMALLER-NEXT:   Number: 1
# SMALLER-NEXT:   Name: .text
# SMALLER-NOT:  }
# SMALLER:        RawDataSize: 3
# SMALLER:        Hex dump of section '.text':
# SMALLER-NEXT:   0x00000000 414141 AAA

# RUN: llvm-objcopy --update-section=.text=%t.diff --update-section=.other=%t.diff %t - | \
# RUN:   llvm-readobj -S -x .text -x .other - | FileCheck %s --check-prefix=MULTIPLE
# MULTIPLE:     Section {
# MULTIPLE-NEXT:  Number: 1
# MULTIPLE-NEXT:  Name: .text
# MULTIPLE-NOT: }
# MULTIPLE:       RawDataSize: 4
# MULTIPLE:     Section {
# MULTIPLE-NEXT:  Number: 2
# MULTIPLE-NEXT:  Name: .other
# MULTIPLE-NOT: }
# MULTIPLE:       RawDataSize: 4
# MULTIPLE:       Hex dump of section '.text':
# MULTIPLE-NEXT:  0x00000000 41414142 AAAB
# MULTIPLE:       Hex dump of section '.other':
# MULTIPLE-NEXT:  0x00000000 41414142 AAAB

# RUN: not llvm-objcopy --update-section=.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=.bss=%t.diff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NO-CONTENTS
# NO-CONTENTS: error: {{.*}}section '.bss' cannot be updated because it does not have contents

# RUN: not llvm-objcopy --update-section=.text=%t.noexist %t /dev/null 2>&1 | \
# RUN:   FileCheck %s --check-prefix=NOENT -DENOENT=%errc_ENOENT
# NOENT: error: {{.*}}: [[ENOENT]]

# RUN: not llvm-objcopy --update-section=.noexist=%t.diff %t /dev/null 2>&1 | FileCheck %s --check-prefix=NO-SECTION
# NO-SECTION: error: {{.*}}could not find section with name '.noexist'

--- !COFF
header:
  Machine:           IMAGE_FILE_MACHINE_AMD64
  Characteristics:   [  ]
sections:
  - Name:            .text
    Characteristics: [  ]
    Alignment:       4
    SectionData:     '41414141'
  - Name:            .other
    Characteristics: [  ]
    Alignment:       4
    SectionData:     '42424242'
  - Name:            .bss
    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA ]
    SizeOfRawData:   0
symbols:
...