Merge branch 'addmainunit3-altlink-sharedstmt-dieref-dwz3' into addmainunit3-altlink...
[lldb.git] / lldb / packages / Python / lldbsuite / test / make / Makefile.rules
index 374dd68..cea2a75 100644 (file)
@@ -26,6 +26,7 @@
 # SPLIT_DEBUG_SYMBOLS := YES
 # CROSS_COMPILE :=
 # USE_PRIVATE_MODULE_CACHE := YES
 # SPLIT_DEBUG_SYMBOLS := YES
 # CROSS_COMPILE :=
 # USE_PRIVATE_MODULE_CACHE := YES
+# DWZ := YES
 
 # Uncomment line below for debugging shell commands
 # SHELL = /bin/sh -x
 
 # Uncomment line below for debugging shell commands
 # SHELL = /bin/sh -x
@@ -198,8 +199,12 @@ else
                override ARCHFLAG := -
        endif
 
                override ARCHFLAG := -
        endif
 
-       ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
-               DSYM = $(EXE).debug
+       ifeq "$(DWZ)" "YES"
+               # DWZ always does SPLIT_DEBUG_SYMBOLS (as otherwise the dwz command fails)
+       else
+               ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
+                       DSYM = $(EXE).debug
+               endif
        endif
 endif
 
        endif
 endif
 
@@ -361,6 +366,26 @@ ifdef PIE
 endif
 
 #----------------------------------------------------------------------
 endif
 
 #----------------------------------------------------------------------
+# Make the DWZ symbol file from the executable if $(DWZ) = "YES"
+# The dwz retry without -m is there because:
+#   dwz -m still succeeds even for no debug info present (missing -g):
+#     dwz: $(1).debug: .debug_info section not present
+#   But dwz -m fails if there is some debug info but none if it is big enough
+#   to be shared from the the common file $(1).debug.dwz:
+#     dwz: $(1).debug.dwz: .debug_info section not present
+#----------------------------------------------------------------------
+ifeq "$(DWZ)" "YES"
+       dwz_strip = \
+               eu-strip --remove-comment -f "$(1).debug" "$(1)" \
+               && cp "$(1).debug" "$(1).debug.dup" \
+               && (dwz -m "$(1).debug.dwz" -M $$(basename "$(1).debug.dwz") "$(1).debug" "$(1).debug.dup" \
+                   || dwz "$(1).debug") \
+               && /usr/lib/rpm/sepdebugcrcfix . "$$(realpath --relative-to=$$PWD "$(1)")"
+else
+       dwz_strip =
+endif
+
+#----------------------------------------------------------------------
 # Windows specific options
 #----------------------------------------------------------------------
 ifeq "$(OS)" "Windows_NT"
 # Windows specific options
 #----------------------------------------------------------------------
 ifeq "$(OS)" "Windows_NT"
@@ -498,6 +523,7 @@ ifneq "$(DYLIB_NAME)" ""
 ifeq "$(DYLIB_ONLY)" ""
 $(EXE) : $(OBJECTS) $(DYLIB_FILENAME)
        $(LD) $(OBJECTS) -L. -l$(DYLIB_NAME) $(LDFLAGS) -o "$(EXE)"
 ifeq "$(DYLIB_ONLY)" ""
 $(EXE) : $(OBJECTS) $(DYLIB_FILENAME)
        $(LD) $(OBJECTS) -L. -l$(DYLIB_NAME) $(LDFLAGS) -o "$(EXE)"
+       $(call dwz_strip,$(EXE))
 ifneq "$(CODESIGN)" ""
        $(CODESIGN) -s - "$(EXE)"
 endif
 ifneq "$(CODESIGN)" ""
        $(CODESIGN) -s - "$(EXE)"
 endif
@@ -507,6 +533,7 @@ endif
 else
 $(EXE) : $(OBJECTS)
        $(LD) $(OBJECTS) $(LDFLAGS) -o "$(EXE)"
 else
 $(EXE) : $(OBJECTS)
        $(LD) $(OBJECTS) $(LDFLAGS) -o "$(EXE)"
+       $(call dwz_strip,$(EXE))
 ifneq "$(CODESIGN)" ""
        $(CODESIGN) -s - "$(EXE)"
 endif
 ifneq "$(CODESIGN)" ""
        $(CODESIGN) -s - "$(EXE)"
 endif
@@ -567,11 +594,16 @@ endif
 endif
 else
        $(LD) $(DYLIB_OBJECTS) $(LDFLAGS) -shared -o "$(DYLIB_FILENAME)"
 endif
 else
        $(LD) $(DYLIB_OBJECTS) $(LDFLAGS) -shared -o "$(DYLIB_FILENAME)"
+ifeq "$(DWZ)" "YES"
+        # DWZ always does SPLIT_DEBUG_SYMBOLS (as otherwise the dwz command fails)
+       $(call dwz_strip,$(DYLIB_FILENAME))
+else
 ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
        $(OBJCOPY) --only-keep-debug "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME).debug"
        $(OBJCOPY) --strip-debug --add-gnu-debuglink="$(DYLIB_FILENAME).debug" "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME)"
 endif
 endif
 ifeq "$(SPLIT_DEBUG_SYMBOLS)" "YES"
        $(OBJCOPY) --only-keep-debug "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME).debug"
        $(OBJCOPY) --strip-debug --add-gnu-debuglink="$(DYLIB_FILENAME).debug" "$(DYLIB_FILENAME)" "$(DYLIB_FILENAME)"
 endif
 endif
+endif
 
 #----------------------------------------------------------------------
 # Make the precompiled header and compile C++ sources against it
 
 #----------------------------------------------------------------------
 # Make the precompiled header and compile C++ sources against it