| ## a) Show that llvm-dwarfdump dumps the .debug_str and |
| ## .debug_str.dwo sections when --debug-str is specified. |
| |
| ## "some string\0foo\0\0" |
| # RUN: yaml2obj -DCONTENT="736f6d6520737472696e6700666f6f0000" %s -o %t.o |
| # RUN: llvm-dwarfdump %t.o --debug-str | FileCheck %s |
| |
| # CHECK: .debug_str contents: |
| # CHECK-NEXT: 0x00000000: "some string" |
| # CHECK-NEXT: 0x0000000c: "foo" |
| # CHECK-NEXT: 0x00000010: "" |
| # CHECK: .debug_str.dwo contents: |
| # CHECK-NEXT: 0x00000000: "some string" |
| # CHECK-NEXT: 0x0000000c: "foo" |
| # CHECK-NEXT: 0x00000010: "" |
| # CHECK-EMPTY: |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .debug_str |
| Type: SHT_PROGBITS |
| Content: [[CONTENT]] |
| - Name: .debug_str.dwo |
| Type: SHT_PROGBITS |
| Content: [[CONTENT]] |
| |
| ## b) Test how we dump unprintable chars. |
| |
| ## ['\t', '\0', '\001', '\0', '\\', '0', '0', '1', '\0'] |
| # RUN: yaml2obj -DCONTENT="090001005C30303100" %s -o %t2.o |
| # RUN: llvm-dwarfdump --debug-str %t2.o | FileCheck %s --check-prefix=ESCAPED |
| |
| # ESCAPED: .debug_str contents: |
| # ESCAPED-NEXT: 0x00000000: "\t" |
| # ESCAPED-NEXT: 0x00000002: "\001" |
| # ESCAPED-NEXT: 0x00000004: "\\001" |
| # ESCAPED: .debug_str.dwo contents: |
| # ESCAPED-NEXT: 0x00000000: "\t" |
| # ESCAPED-NEXT: 0x00000002: "\001" |
| # ESCAPED-NEXT: 0x00000004: "\\001" |
| # ESCAPED-EMPTY: |
| |
| ## c) Test that llvm-dwarfdump emits a warning when it encounters a string without a null terminator. |
| |
| ## "abc\0" "abc" |
| # RUN: yaml2obj -DCONTENT="61626300616263" %s -o %t3.o |
| # RUN: llvm-dwarfdump --debug-str %t3.o 2>&1 | FileCheck %s --check-prefix=WARN |
| |
| # WARN: .debug_str contents: |
| # WARN-NEXT: 0x00000000: "abc" |
| # WARN-NEXT: warning: no null terminated string at offset 0x4 |
| # WARN: .debug_str.dwo contents: |
| # WARN-NEXT: 0x00000000: "abc" |
| # WARN-NEXT: warning: no null terminated string at offset 0x4 |