xref: /llvm-project/llvm/test/tools/llvm-objcopy/wasm/add-section.test (revision 91d0618368c0248e200d90b367322f9c1f74e387)
1b2c44de9SDerek Schuff## Test --add-section. This test dumps and removes the section first and checks
2b2c44de9SDerek Schuff## that adding it back doesn't change the result.
3b2c44de9SDerek Schuff# RUN: yaml2obj %s -o %t
4b2c44de9SDerek Schuff# RUN: llvm-objcopy --dump-section=producers=%t.sec --remove-section=producers %t %t2
5b2c44de9SDerek Schuff# RUN: llvm-objcopy --add-section=producers=%t.sec %t2 %t3
6b2c44de9SDerek Schuff# RUN: obj2yaml %t3 | FileCheck %s
7b2c44de9SDerek Schuff
8b2c44de9SDerek Schuff## Check that the producers section has been added back unchanged.
9b2c44de9SDerek Schuff# CHECK:      Name: producers
10b2c44de9SDerek Schuff# CHECK-NEXT: Tools:
11b2c44de9SDerek Schuff# CHECK-NEXT:  - Name:    clang
12b2c44de9SDerek Schuff# CHECK-NEXT:    Version: 9.0.0
13b2c44de9SDerek Schuff
14b2c44de9SDerek Schuff# Check that the section is replaced with new content in one invocation.
15b2c44de9SDerek Schuff# RUN: echo "123" > %t4
16b2c44de9SDerek Schuff# RUN: llvm-objcopy --remove-section=foo --add-section=foo=%t4 %t %t5
17b2c44de9SDerek Schuff# RUN: obj2yaml %t5 | FileCheck %s --check-prefix=REPLACE
18b2c44de9SDerek Schuff
19b2c44de9SDerek Schuff# REPLACE: - Type:  CUSTOM
20b2c44de9SDerek Schuff# REPLACE:   Name:    foo
21b2c44de9SDerek Schuff# REPLACE:   Payload: 3132330A
22b2c44de9SDerek Schuff
23*91d06183SGuilhem## Check that raw data bytes can be imported and exported unchanged especially the ones containing empty bytes.
24*91d06183SGuilhem# RUN: echo -e -n "\x02\x01\x00\x01\x02" > %t6
25*91d06183SGuilhem# RUN: llvm-objcopy --add-section=bar=%t6 %t %t7
26*91d06183SGuilhem# RUN: llvm-objcopy --dump-section=bar=%t8 %t7
27*91d06183SGuilhem# RUN: diff %t8 %t6
28*91d06183SGuilhem# RUN: obj2yaml %t7 | FileCheck %s --check-prefix=RAW-DATA
29*91d06183SGuilhem
30*91d06183SGuilhem## Check that raw data is well formated in the file as well.
31*91d06183SGuilhem# RAW-DATA:      Name: bar
32*91d06183SGuilhem# RAW-DATA-NEXT: Payload: '0201000102'
33*91d06183SGuilhem
34b2c44de9SDerek Schuff--- !WASM
35b2c44de9SDerek SchuffFileHeader:
36b2c44de9SDerek Schuff  Version: 0x00000001
37b2c44de9SDerek SchuffSections:
38b2c44de9SDerek Schuff  - Type: TYPE
39b2c44de9SDerek Schuff    Signatures:
40b2c44de9SDerek Schuff      - Index: 0
41b2c44de9SDerek Schuff        ParamTypes:
42b2c44de9SDerek Schuff          - I32
43b2c44de9SDerek Schuff        ReturnTypes:
44b2c44de9SDerek Schuff          - F32
45b2c44de9SDerek Schuff      - Index: 1
46b2c44de9SDerek Schuff        ParamTypes:
47b2c44de9SDerek Schuff          - I32
48b2c44de9SDerek Schuff          - I64
49b2c44de9SDerek Schuff        ReturnTypes: []
50b2c44de9SDerek Schuff  - Type: FUNCTION
51b2c44de9SDerek Schuff    FunctionTypes:
52b2c44de9SDerek Schuff      - 0
53b2c44de9SDerek Schuff      - 1
54b2c44de9SDerek Schuff  - Type: CODE
55b2c44de9SDerek Schuff    Relocations:
56b2c44de9SDerek Schuff      - Type: R_WASM_TABLE_INDEX_SLEB
57b2c44de9SDerek Schuff        Index: 0
58b2c44de9SDerek Schuff        Offset: 0x00000000
59b2c44de9SDerek Schuff      - Type: R_WASM_FUNCTION_INDEX_LEB
60b2c44de9SDerek Schuff        Index: 1
61b2c44de9SDerek Schuff        Offset: 0x0000000
62b2c44de9SDerek Schuff    Functions:
63b2c44de9SDerek Schuff      - Index: 0
64b2c44de9SDerek Schuff        Locals:
65b2c44de9SDerek Schuff         - Type: I32
66b2c44de9SDerek Schuff           Count: 3
67b2c44de9SDerek Schuff        Body: 010101010B
68b2c44de9SDerek Schuff      - Index: 1
69b2c44de9SDerek Schuff        Locals:
70b2c44de9SDerek Schuff         - Type:  I32
71b2c44de9SDerek Schuff           Count: 1
72b2c44de9SDerek Schuff        Body: 010101010B
73b2c44de9SDerek Schuff  - Type: CUSTOM
74b2c44de9SDerek Schuff    Name: linking
75b2c44de9SDerek Schuff    Version: 2
76b2c44de9SDerek Schuff    SymbolTable:
77b2c44de9SDerek Schuff      - Index:    0
78b2c44de9SDerek Schuff        Kind:     FUNCTION
79b2c44de9SDerek Schuff        Name:     func1
80b2c44de9SDerek Schuff        Flags:    [  ]
81b2c44de9SDerek Schuff        Function: 0
82b2c44de9SDerek Schuff      - Index:    1
83b2c44de9SDerek Schuff        Kind:     FUNCTION
84b2c44de9SDerek Schuff        Name:     func2
85b2c44de9SDerek Schuff        Flags:    [  ]
86b2c44de9SDerek Schuff        Function: 1
87b2c44de9SDerek Schuff  - Type: CUSTOM
88b2c44de9SDerek Schuff    Name: producers
89b2c44de9SDerek Schuff    Tools:
90b2c44de9SDerek Schuff      - Name:   clang
91b2c44de9SDerek Schuff        Version: 9.0.0
92b2c44de9SDerek Schuff  - Type: CUSTOM
93b2c44de9SDerek Schuff    Name: foo
94b2c44de9SDerek Schuff    Payload: ABC123
95