mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 15:36:58 +00:00

[RFC](https://discourse.llvm.org/t/rfc-add-build-id-flag-to-lld-link/74661) Before, lld-link only generate the debug directory containing guid when generating PDB with the hash of PDB content. With this change, lld-link can generate the debug directory when only `/build-id` is given: 1. If generating PDB, `/build-id` is ignored. Same behaviour as before. 2. Not generating PDB, using hash of the binary. - Not under MinGW, the debug directory is still in `.rdata` section. - Under MinGW, place the debug directory into new `.buildid` section.
59 lines
1.5 KiB
ArmAsm
59 lines
1.5 KiB
ArmAsm
# REQUIRES: x86
|
|
|
|
# RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t.obj
|
|
|
|
# RUN: lld-link -lldmingw -debug:dwarf -build-id -out:%t.exe -entry:mainfunc -subsystem:console %t.obj
|
|
# RUN: llvm-readobj --sections %t.exe | FileCheck %s -check-prefix SECTIONS
|
|
# RUN: llvm-readobj --coff-basereloc %t.exe | FileCheck %s -check-prefix RELOCS
|
|
# RUN: llvm-readobj --file-headers %t.exe | FileCheck %s -check-prefix HEADERS
|
|
# RUN: llvm-readobj --coff-debug-directory %t.exe | FileCheck %s -check-prefix DEBUG
|
|
|
|
# SECTIONS: Number: 3
|
|
# SECTIONS-NEXT: Name: .buildid (2E 62 75 69 6C 64 69 64)
|
|
# SECTIONS-NEXT: VirtualSize: 0x35
|
|
# SECTIONS-NEXT: VirtualAddress: 0x3000
|
|
# SECTIONS: Number: 4
|
|
# SECTIONS-NEXT: Name: .data (2E 64 61 74 61 00 00 00)
|
|
# SECTIONS-NEXT: VirtualSize: 0x8
|
|
# SECTIONS-NEXT: VirtualAddress: 0x4000
|
|
|
|
# RELOCS: BaseReloc [
|
|
# RELOCS-NEXT: Entry {
|
|
# RELOCS-NEXT: Type: DIR64
|
|
# RELOCS-NEXT: Address: 0x4000
|
|
# RELOCS-NEXT: }
|
|
# RELOCS-NEXT: Entry {
|
|
# RELOCS-NEXT: Type: ABSOLUTE
|
|
# RELOCS-NEXT: Address: 0x4000
|
|
# RELOCS-NEXT: }
|
|
# RELOCS-NEXT: ]
|
|
|
|
# HEADERS: DebugRVA: 0x3000
|
|
# HEADERS: DebugSize: 0x1C
|
|
|
|
# DEBUG: DebugDirectory [
|
|
# DEBUG: DebugEntry {
|
|
# DEBUG: Type: CodeView (0x2)
|
|
# DEBUG: SizeOfData: 0x19
|
|
# DEBUG: AddressOfRawData: 0x301C
|
|
# DEBUG: PointerToRawData: 0x81C
|
|
|
|
.text
|
|
.def mainfunc;
|
|
.scl 2;
|
|
.type 32;
|
|
.endef
|
|
.globl mainfunc
|
|
mainfunc:
|
|
.Lfunc_begin0:
|
|
xorl %eax, %eax
|
|
retq
|
|
|
|
.data
|
|
.globl ptr
|
|
ptr:
|
|
.quad mainfunc
|
|
|
|
.section .debug_info,"dr"
|
|
.quad .Lfunc_begin0
|