| ## Test a basic copy of an archive containing a wasm object. |
| |
| # RUN: yaml2obj %s -o %t |
| |
| ## Create an archive and copy it using llvm-objcopy. |
| # RUN: rm -f %t.a |
| # RUN: llvm-ar crs %t.a %t |
| # RUN: cp %t.a %t.copy.a |
| # RUN: llvm-objcopy %t.a %t2.a |
| ## Create another archive from an objcopy-copied object, verify that they match. |
| # RUN: llvm-objcopy %t %t2 |
| # RUN: llvm-ar p %t2.a > %t3 |
| # RUN: cmp %t2 %t3 |
| |
| ## Check that the copied archive has the correct index contents. |
| # RUN: llvm-nm --print-armap %t.a | FileCheck --check-prefix=INDEX-TABLE %s |
| # RUN: llvm-nm --print-armap %t2.a | FileCheck --check-prefix=INDEX-TABLE %s |
| ## Verify that llvm-objcopy has not modifed the input. |
| # RUN: cmp %t.copy.a %t.a |
| |
| # INDEX-TABLE: Archive map |
| # INDEX-TABLE-NEXT: func1 in |
| |
| ## Do the same with an archive that has no index. |
| # RUN: rm -f %t.no.index.a |
| # RUN: llvm-ar crS %t.no.index.a %t |
| # RUN: llvm-objcopy %t.no.index.a %t2.no.index.a |
| # RUN: llvm-ar p %t2.no.index.a > %t4 |
| |
| # RUN: llvm-nm --print-armap %t.no.index.a | FileCheck --check-prefix=NO-INDEX-TABLE %s |
| # RUN: llvm-nm --print-armap %t2.no.index.a | FileCheck --check-prefix=NO-INDEX-TABLE %s |
| # RUN: cmp %t2 %t4 |
| |
| # NO-INDEX-TABLE-NOT: Archive map |
| # NO-INDEX-TABLE-NOT: func1 in |
| |
| --- !WASM |
| FileHeader: |
| Version: 0x00000001 |
| Sections: |
| - Type: TYPE |
| Signatures: |
| - Index: 0 |
| ParamTypes: |
| - I32 |
| ReturnTypes: |
| - F32 |
| - Index: 1 |
| ParamTypes: |
| - I32 |
| - I64 |
| ReturnTypes: [] |
| - Type: FUNCTION |
| FunctionTypes: |
| - 0 |
| - 1 |
| - Type: CODE |
| Relocations: |
| - Type: R_WASM_TABLE_INDEX_SLEB |
| Index: 0 |
| Offset: 0x00000002 |
| - Type: R_WASM_FUNCTION_INDEX_LEB |
| Index: 1 |
| Offset: 0x0000002 |
| Functions: |
| - Index: 0 |
| Locals: |
| - Type: I32 |
| Count: 3 |
| Body: 010101010B |
| - Index: 1 |
| Locals: |
| - Type: I32 |
| Count: 1 |
| Body: 010101010B |
| - Type: CUSTOM |
| Name: linking |
| Version: 2 |
| SymbolTable: |
| - Index: 0 |
| Kind: FUNCTION |
| Name: func1 |
| Flags: [ ] |
| Function: 0 |
| - Index: 1 |
| Kind: FUNCTION |
| Name: func2 |
| Flags: [ ] |
| Function: 1 |
| ... |