1# REQUIRES: x86, zlib 2# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o 3# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/gdb-index.s -o %t2.o 4# RUN: ld.lld --gdb-index %t1.o %t2.o -o %t 5 6# RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=DISASM 7# RUN: llvm-dwarfdump -gdb-index %t | FileCheck %s --check-prefix=DWARF 8 9## Drop .debug_gnu_pubnames and .debug_gnu_pubtypes. 10## Also drop their relocation sections if --emit-relocs is specified. 11# RUN: ld.lld --gdb-index --emit-relocs %t1.o %t2.o -o %t1 12# RUN: llvm-readelf --sections %t1 | FileCheck %s --check-prefix=SECTION 13 14# SECTION-NOT: .debug_gnu_pubnames 15# SECTION-NOT: .debug_gnu_pubtypes 16 17# RUN: llvm-mc -compress-debug-sections=zlib -filetype=obj -triple=x86_64-pc-linux \ 18# RUN: %p/Inputs/gdb-index.s -o %t2.o 19# RUN: ld.lld --gdb-index %t1.o %t2.o -o %t 20 21# RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=DISASM 22# RUN: llvm-dwarfdump -gdb-index %t | FileCheck %s --check-prefix=DWARF 23# RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SECTION 24 25# RUN: %if zstd %{ llvm-mc -compress-debug-sections=zlib -filetype=obj -triple=x86_64 %p/Inputs/gdb-index.s -o %t2.o %} 26# RUN: %if zstd %{ ld.lld --gdb-index %t1.o %t2.o -o %t %} 27# RUN: %if zstd %{ llvm-objdump -d %t | FileCheck %s --check-prefix=DISASM %} 28# RUN: %if zstd %{ llvm-dwarfdump --gdb-index %t | FileCheck %s --check-prefix=DWARF %} 29# RUN: %if zstd %{ llvm-readelf -S %t | FileCheck %s --check-prefix=SECTION %} 30 31# DISASM: Disassembly of section .text: 32# DISASM-EMPTY: 33# DISASM: <entrypoint>: 34# DISASM-CHECK: 201000: 90 nop 35# DISASM-CHECK: 201001: cc int3 36# DISASM-CHECK: 201002: cc int3 37# DISASM-CHECK: 201003: cc int3 38# DISASM: <aaaaaaaaaaaaaaaa>: 39# DISASM-CHECK: 201004: 90 nop 40# DISASM-CHECK: 201005: 90 nop 41 42# DWARF: .gdb_index contents: 43# DWARF-NEXT: Version = 7 44# DWARF: CU list offset = 0x18, has 2 entries: 45# DWARF-NEXT: 0: Offset = 0x0, Length = 0x34 46# DWARF-NEXT: 1: Offset = 0x34, Length = 0x34 47# DWARF: Address area offset = 0x38, has 2 entries: 48# DWARF-NEXT: Low/High address = [0x201120, 0x201121) (Size: 0x1), CU id = 0 49# DWARF-NEXT: Low/High address = [0x201124, 0x201126) (Size: 0x2), CU id = 1 50# DWARF: Symbol table offset = 0x60, size = 1024, filled slots: 51# DWARF-NEXT: 512: Name offset = 0x1c, CU vector offset = 0x0 52# DWARF-NEXT: String name: aaaaaaaaaaaaaaaa, CU vector index: 0 53# DWARF-NEXT: 754: Name offset = 0x38, CU vector offset = 0x10 54# DWARF-NEXT: String name: int, CU vector index: 2 55# DWARF-NEXT: 822: Name offset = 0x2d, CU vector offset = 0x8 56# DWARF-NEXT: String name: entrypoint, CU vector index: 1 57# DWARF: Constant pool offset = 0x2060, has 3 CU vectors: 58# DWARF-NEXT: 0(0x0): 0x30000001 59# DWARF-NEXT: 1(0x8): 0x30000000 60# DWARF-NEXT: 2(0x10): 0x90000000 0x90000001 61 62# RUN: ld.lld --gdb-index --no-gdb-index %t1.o %t2.o -o %t2 63# RUN: llvm-readobj --sections %t2 | FileCheck -check-prefix=NOGDB %s 64# NOGDB-NOT: Name: .gdb_index 65 66## The following section contents are created by this using gcc 7.1.0: 67## echo 'int entrypoint() { return 0; }' | gcc -gsplit-dwarf -xc++ -S -o- - 68 69.text 70.Ltext0: 71.globl entrypoint 72.type entrypoint, @function 73entrypoint: 74 nop 75.Letext0: 76 77.section .debug_info,"",@progbits 78.long 0x30 79.value 0x4 80.long 0 81.byte 0x8 82.uleb128 0x1 83.quad .Ltext0 84.quad .Letext0-.Ltext0 85.long 0 86.long 0 87.long 0 88.long 0 89.byte 0x63 90.byte 0x88 91.byte 0xb4 92.byte 0x61 93.byte 0xaa 94.byte 0xb6 95.byte 0xb0 96.byte 0x67 97 98.section .debug_abbrev,"",@progbits 99.uleb128 0x1 100.uleb128 0x11 101.byte 0 102.uleb128 0x11 103.uleb128 0x1 104.uleb128 0x12 105.uleb128 0x7 106.uleb128 0x10 107.uleb128 0x17 108.uleb128 0x2130 109.uleb128 0xe 110.uleb128 0x1b 111.uleb128 0xe 112.uleb128 0x2134 113.uleb128 0x19 114.uleb128 0x2133 115.uleb128 0x17 116.uleb128 0x2131 117.uleb128 0x7 118.byte 0 119.byte 0 120.byte 0 121 122.section .debug_gnu_pubnames,"",@progbits 123.long 0x1e 124.value 0x2 125.long .debug_info 126.long 0x33 127.long 0x18 128.byte 0x30 129.string "entrypoint" 130.long 0 131 132.section .debug_gnu_pubtypes,"",@progbits 133.long 0x17 134.value 0x2 135.long .debug_info 136.long 0x33 137.long 0x2b 138.byte 0x90 139.string "int" 140.long 0 141