From f4048c4146bf962043adc7a421f2c020b256c681 Mon Sep 17 00:00:00 2001 From: Juan Hoyos Date: Thu, 17 Mar 2022 11:05:31 -0700 Subject: [PATCH] Surface native sourcelink on CoreCLR native PDBs for easier dump debugging (#66677) * Use managed sourcelink infrastructure to allow for win native sourcelink --- eng/native/configurecompiler.cmake | 5 +++++ eng/native/configurepaths.cmake | 1 + eng/versioning.targets | 7 +++++++ src/coreclr/runtime-prereqs.proj | 3 ++- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index cdf1a8f766afa..469eb5f59b4eb 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -78,6 +78,11 @@ if (MSVC) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /PDBCOMPRESS") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864") + if(EXISTS ${CLR_SOURCELINK_FILE_PATH}) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /sourcelink:${CLR_SOURCELINK_FILE_PATH}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /sourcelink:${CLR_SOURCELINK_FILE_PATH}") + endif(EXISTS ${CLR_SOURCELINK_FILE_PATH}) + # Checked build specific flags add_linker_flag(/INCREMENTAL:NO CHECKED) # prevent "warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification" add_linker_flag(/OPT:REF CHECKED) diff --git a/eng/native/configurepaths.cmake b/eng/native/configurepaths.cmake index 3f41026eee2ac..7d6851d1cf064 100644 --- a/eng/native/configurepaths.cmake +++ b/eng/native/configurepaths.cmake @@ -2,6 +2,7 @@ get_filename_component(CLR_REPO_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUT set(CLR_ENG_NATIVE_DIR ${CMAKE_CURRENT_LIST_DIR}) get_filename_component(CLR_SRC_NATIVE_DIR ${CMAKE_CURRENT_LIST_DIR}/../../src/native ABSOLUTE) set (CLR_ARTIFACTS_OBJ_DIR "${CLR_REPO_ROOT_DIR}/artifacts/obj") +set (CLR_SOURCELINK_FILE_PATH "${CLR_ARTIFACTS_OBJ_DIR}/native.sourcelink.json") set(VERSION_HEADER_PATH "${CLR_ARTIFACTS_OBJ_DIR}/_version.h") set(VERSION_FILE_PATH "${CLR_ARTIFACTS_OBJ_DIR}/_version.c") set(VERSION_FILE_RC_PATH "${CLR_ARTIFACTS_OBJ_DIR}/NativeVersion.rc") diff --git a/eng/versioning.targets b/eng/versioning.targets index 10226b7a490d0..9a4ea04f85d00 100644 --- a/eng/versioning.targets +++ b/eng/versioning.targets @@ -177,4 +177,11 @@ WriteOnlyWhenDifferent="true" /> + + + + diff --git a/src/coreclr/runtime-prereqs.proj b/src/coreclr/runtime-prereqs.proj index 36ed2ce497be1..167346101e0bf 100644 --- a/src/coreclr/runtime-prereqs.proj +++ b/src/coreclr/runtime-prereqs.proj @@ -3,6 +3,7 @@ $(ArtifactsObjDir)_version.h $(ArtifactsObjDir)_version.c $(ArtifactsObjDir)runtime_version.h + $(ArtifactsObjDir)native.sourcelink.json .NET Runtime @@ -13,5 +14,5 @@ - +