| # RUN: yaml2obj %s -o %t |
| # RUN: cp %t %t3 |
| # RUN: llvm-objcopy --strip-debug %t %t2 |
| ## Test that debug sections (but not linking or names) are stripped with --strip-debug |
| # RUN: obj2yaml %t2 | FileCheck --implicit-check-not=.debug %s |
| # |
| # RUN: llvm-objcopy -g %t %t2g |
| # Verify that --strip-debug and -g produce the same output |
| # RUN: cmp %t2 %t2g |
| |
| # RUN: llvm-strip --strip-debug %t3 |
| # RUN: cmp %t2 %t3 |
| |
| # RUN: cp %t %t4 |
| # RUN: llvm-strip -d %t4 |
| # RUN: cmp %t2 %t4 |
| |
| # RUN: cp %t %t5 |
| # RUN: llvm-strip -g %t5 |
| # RUN: cmp %t2 %t5 |
| |
| # RUN: cp %t %t6 |
| # RUN: llvm-strip -S %t6 |
| # RUN: cmp %t2 %t6 |
| |
| # Verify that an archive with multiple object files is handled correctly. |
| # RUN: cp %t %t.duplicate |
| # RUN: cp %t2 %t.duplicate.stripped |
| # RUN: rm -f %t.multiple-stripped-obj.a |
| # RUN: llvm-ar crs %t.multiple-stripped-obj.a %t2 %t.duplicate.stripped |
| # RUN: rm -f %t.multiple-obj.a |
| # RUN: llvm-ar crs %t.multiple-obj.a %t %t.duplicate |
| # RUN: llvm-objcopy --strip-debug %t.multiple-obj.a %t.multiple-obj.stripped.a |
| # RUN: llvm-ar p %t.multiple-stripped-obj.a > %t.multiple-stripped-obj.a.dump |
| # RUN: llvm-ar p %t.multiple-obj.stripped.a > %t.multiple-obj.stripped.a.dump |
| # RUN: cmp %t.multiple-stripped-obj.a.dump %t.multiple-obj.stripped.a.dump |
| |
| # CHECK: Sections: |
| # CHECK-NEXT: - Type: TYPE |
| # CHECK: - Type: CUSTOM |
| ## We expect the linking section to be preceeded by the removed `.debug_info` |
| ## section. |
| # CHECK-NEXT: Name: .objcopy.removed |
| # CHECK-NEXT: Payload: '' |
| # CHECK-NEXT: - Type: CUSTOM |
| # CHECK-NEXT: Name: linking |
| # CHECK: Name: name |
| # CHECK-NEXT: FunctionNames: |
| # CHECK: Name: producers |
| ## Following the producers section we expect to find three removed sections. |
| ## The `.debug_line` section that two reloction section corresponding to the |
| ## two debug sections. |
| # CHECK: - Type: CUSTOM |
| # CHECK-NEXT: Name: .objcopy.removed |
| # CHECK-NEXT: Payload: '' |
| # CHECK-NEXT: - Type: CUSTOM |
| # CHECK-NEXT: Name: .objcopy.removed |
| # CHECK-NEXT: Payload: '' |
| # CHECK-NEXT: - Type: CUSTOM |
| # CHECK-NEXT: Name: .objcopy.removed |
| # CHECK-NEXT: Payload: '' |
| |
| |
| --- !WASM |
| FileHeader: |
| Version: 0x00000001 |
| Sections: |
| - Type: TYPE |
| Signatures: |
| - Index: 0 |
| ParamTypes: [] |
| ReturnTypes: [] |
| - Type: FUNCTION |
| FunctionTypes: [ 0 ] |
| - Type: CODE |
| Functions: |
| - Index: 0 |
| Locals: [] |
| Body: 0B |
| - Type: CUSTOM |
| Name: .debug_info |
| Payload: 'CAFE123456' |
| Relocations: |
| - Type: R_WASM_FUNCTION_INDEX_LEB |
| Index: 0 |
| Offset: 0x0000000 |
| - Type: CUSTOM |
| Name: linking |
| Version: 2 |
| SymbolTable: |
| - Index: 0 |
| Kind: FUNCTION |
| Name: foo |
| Flags: [ BINDING_LOCAL ] |
| Function: 0 |
| - Type: CUSTOM |
| Name: name |
| FunctionNames: |
| - Index: 0 |
| Name: foo |
| - Type: CUSTOM |
| Name: producers |
| Tools: |
| - Name: clang |
| Version: 9.0.0 |
| - Type: CUSTOM |
| Name: .debug_line |
| Payload: 'DEADBEEF01' |
| Relocations: |
| - Type: R_WASM_FUNCTION_INDEX_LEB |
| Index: 0 |
| Offset: 0x0000000 |