@@ -51,7 +51,7 @@ LLDB_BASE_DIR := $(THIS_FILE_DIR)/../../../../../
5151#
5252# GNUWin32 uname gives "windows32" or "server version windows32" while
5353# some versions of MSYS uname return "MSYS_NT*", but most environments
54- # standardize on "Windows_NT", so we'll make it consistent here.
54+ # standardize on "Windows_NT", so we'll make it consistent here.
5555# When running tests from Visual Studio, the environment variable isn't
5656# inherited all the way down to the process spawned for make.
5757#----------------------------------------------------------------------
@@ -210,6 +210,12 @@ else
210210 ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
211211 DSYM = $(EXE).debug
212212 endif
213+
214+ ifeq "$(MAKE_DWP)" "YES"
215+ MAKE_DWO := YES
216+ DWP_NAME = $(EXE).dwp
217+ DYLIB_DWP_NAME = $(DYLIB_NAME).dwp
218+ endif
213219endif
214220
215221LIMIT_DEBUG_INFO_FLAGS =
@@ -358,6 +364,7 @@ ifneq "$(OS)" "Darwin"
358364
359365 OBJCOPY ?= $(call replace_cc_with,objcopy)
360366 ARCHIVER ?= $(call replace_cc_with,ar)
367+ DWP ?= $(call replace_cc_with,dwp)
361368 override AR = $(ARCHIVER)
362369endif
363370
@@ -528,6 +535,10 @@ ifneq "$(CXX)" ""
528535 endif
529536endif
530537
538+ ifeq "$(GEN_GNU_BUILD_ID)" "YES"
539+ LDFLAGS += -Wl,--build-id
540+ endif
541+
531542#----------------------------------------------------------------------
532543# DYLIB_ONLY variable can be used to skip the building of a.out.
533544# See the sections below regarding dSYM file as well as the building of
@@ -566,11 +577,25 @@ else
566577endif
567578else
568579ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
580+ ifeq "$(SAVE_FULL_DEBUG_BINARY)" "YES"
581+ cp "$(EXE)" "$(EXE).unstriped""
582+ endif
569583 $(OBJCOPY) --only-keep-debug "$(EXE)" "$(DSYM)"
570584 $(OBJCOPY) --strip-debug --add-gnu-debuglink="$(DSYM)" "$(EXE)" "$(EXE)"
571585endif
586+ ifeq "$(MAKE_DWP)" "YES"
587+ $(DWP) -o "$(DWP_NAME)" $(DWOS)
588+ endif
572589endif
573590
591+
592+ #----------------------------------------------------------------------
593+ # Support emitting the content of the GNU build-id into a file
594+ # This needs to be used in conjunction with GEN_GNU_BUILD_ID := YES
595+ #----------------------------------------------------------------------
596+ $(EXE).uuid : $(EXE)
597+ $(OBJCOPY) --dump-section=.note.gnu.build-id=$@ $<
598+
574599#----------------------------------------------------------------------
575600# Make the dylib
576601#----------------------------------------------------------------------
@@ -611,9 +636,15 @@ endif
611636else
612637 $(LD) $(DYLIB_OBJECTS) $(LDFLAGS) -shared -o "$(DYLIB_FILENAME)"
613638ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
639+ ifeq "$(SAVE_FULL_DEBUG_BINARY)" "YES"
640+ cp "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME).unstripped"
641+ endif
614642 $(OBJCOPY) --only-keep-debug "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME).debug"
615643 $(OBJCOPY) --strip-debug --add-gnu-debuglink="$(DYLIB_FILENAME).debug" "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME)"
616644endif
645+ ifeq "$(MAKE_DWP)" "YES"
646+ $(DWP) -o $(DYLIB_DWP_FILE) $(DYLIB_DWOS)
647+ endif
617648endif
618649
619650#----------------------------------------------------------------------
0 commit comments