File 0509-erts-Include-jit.pdb-and-release-all-pdb-files.patch of Package erlang

From 0d42f58e41912749657b7adaa453151eba5f4dcb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Mon, 4 Nov 2024 16:12:29 +0100
Subject: [PATCH 4/4] erts: Include jit.pdb and release all pdb files

When debugging on windows, the name of the pdb file is
not the name of the file being debugger, but the name
of the file as it was compiled. We rename beam.jit.dll
to beam.smp.dll during the build so the pdb needed is called
jit.pdb and not smp.pdb.

We also make sure to release all pdb files so that they
are part of the installer.
---
 erts/emulator/Makefile.in        |  4 ++++
 erts/epmd/src/Makefile.in        |  3 +++
 erts/etc/common/Makefile.in      |  5 +++++
 erts/lib_src/Makefile.in         |  3 +++
 lib/sasl/src/systools_make.erl   |  3 ++-
 lib/sasl/test/systools_SUITE.erl | 32 ++++++++++++++++++++++++--------
 otp_build                        | 15 ++++-----------
 7 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
index a35bc38d40..f926ab6929 100644
--- a/erts/emulator/Makefile.in
+++ b/erts/emulator/Makefile.in
@@ -559,6 +559,10 @@ release_spec: all
 	$(INSTALL_DATA) $(RELEASE_INCLUDES) "$(RELEASE_PATH)/usr/include"
 	$(INSTALL_DATA) $(RELEASE_INCLUDES) "$(RELSYSDIR)/include"
 	$(INSTALL_PROGRAM) $(BINDIR)/$(EMULATOR_EXECUTABLE) "$(RELSYSDIR)/bin"
+ifeq ($(TARGET),win32)
+	$(INSTALL_DATA) $(BINDIR)/$(EMULATOR_EXECUTABLE:.dll=.pdb) "$(RELSYSDIR)/bin"
+	$(INSTALL_DATA) $(BINDIR)/$(FLAVOR_EXECUTABLE:.dll=.pdb) "$(RELSYSDIR)/bin"
+endif
 ifeq ($(RELEASE_LIBBEAM),yes)
 	$(INSTALL_DIR) "$(RELSYSDIR)/lib"
 	$(INSTALL_PROGRAM) $(BINDIR)/$(EMULATOR_LIB) "$(RELSYSDIR)/lib"
diff --git a/erts/epmd/src/Makefile.in b/erts/epmd/src/Makefile.in
index f21ac5e386..640ac84fbe 100644
--- a/erts/epmd/src/Makefile.in
+++ b/erts/epmd/src/Makefile.in
@@ -120,6 +120,9 @@ include $(ERL_TOP)/make/otp_release_targets.mk
 release_spec: all
 	$(INSTALL_DIR)     "$(RELEASE_PATH)/erts-$(VSN)/bin"
 	$(INSTALL_PROGRAM) $(INSTALL_PROGS) "$(RELEASE_PATH)/erts-$(VSN)/bin"
+ifeq ($(TARGET),win32)
+	$(INSTALL_DATA) $(INSTALL_PROGS:.exe=.pdb) "$(RELEASE_PATH)/erts-$(VSN)/bin"
+endif
 
 
 release_docs_spec:
diff --git a/erts/etc/common/Makefile.in b/erts/etc/common/Makefile.in
index 2778fb1504..6f8750d25f 100644
--- a/erts/etc/common/Makefile.in
+++ b/erts/etc/common/Makefile.in
@@ -467,6 +467,7 @@ $(OBJDIR)/safe_string.o: $(ETC)/safe_string.c $(RC_GENERATED)
 # erl_call
 $(BINDIR)/erl_call@EXEEXT@: $(ERL_TOP)/lib/erl_interface/bin/$(TARGET)/erl_call@EXEEXT@
 	$(ld_verbose)cp $< $@
+	$(ld_verbose)cp $(<:.exe=.pdb) $(@:.exe=.pdb)
 
 ifneq ($(TARGET),win32)
 $(BINDIR)/$(ERLEXEC): $(OBJDIR)/$(ERLEXEC).o $(ERTS_LIB)
@@ -545,6 +546,10 @@ ifneq ($(TARGET), win32)
 endif
 ifneq ($(INSTALL_PROGS),)
 	$(INSTALL_PROGRAM) $(INSTALL_PROGS) "$(RELEASE_PATH)/erts-$(VSN)/bin"
+ifeq ($(TARGET),win32)
+	$(INSTALL_DATA) $(INSTALL_PROGS:.exe=.pdb) "$(RELEASE_PATH)/erts-$(VSN)/bin"
+	$(INSTALL_DATA) $(INSTALL_PROGS:.dll=.pdb) "$(RELEASE_PATH)/erts-$(VSN)/bin"
+endif
 endif
 ifneq ($(INSTALL_TOP),)
 	$(INSTALL_SCRIPT) $(INSTALL_TOP) "$(RELEASE_PATH)"
diff --git a/erts/lib_src/Makefile.in b/erts/lib_src/Makefile.in
index 392d10f493..cdc51b4db5 100644
--- a/erts/lib_src/Makefile.in
+++ b/erts/lib_src/Makefile.in
@@ -455,6 +455,9 @@ INTERNAL_RELEASE_LIBS= \
 .PHONY: release_spec
 release_spec: all
 	$(INSTALL_PROGRAM) $(YCF_EXECUTABLE) "$(RELSYSDIR)/bin"
+ifeq ($(TARGET),win32)
+	$(INSTALL_DATA) $(YCF_EXECUTABLE:.exe=.pdb) "$(RELEASE_PATH)/erts-$(VSN)/bin"
+endif
 ifneq ($(strip $(RELEASE_INCLUDES)),)
 	$(INSTALL_DIR) "$(RELSYSDIR)/include"
 	$(INSTALL_DIR) "$(RELEASE_PATH)/usr/include"
diff --git a/lib/sasl/src/systools_make.erl b/lib/sasl/src/systools_make.erl
index bc3b0ae92c..55743777fe 100644
--- a/lib/sasl/src/systools_make.erl
+++ b/lib/sasl/src/systools_make.erl
@@ -1589,9 +1589,10 @@ preloaded() ->
 
 erts_binary_filter() ->
     Cmds = ["typer", "dialyzer", "ct_run", "yielding_c_fun", "erlc"],
+    Extensions = [".exe", ".pdb"],
     case os:type() of
         {unix,_} -> Cmds;
-        {win32,_} -> [ [Cmd, ".exe"] || Cmd <- Cmds]
+        {win32,_} -> [ [Cmd, Ext] || Cmd <- Cmds, Ext <- Extensions]
     end.
 
 %%______________________________________________________________________
diff --git a/lib/sasl/test/systools_SUITE.erl b/lib/sasl/test/systools_SUITE.erl
index a72b65f0f7..a49968decb 100644
--- a/lib/sasl/test/systools_SUITE.erl
+++ b/lib/sasl/test/systools_SUITE.erl
@@ -1119,12 +1119,26 @@ erts_tar(Config) ->
                   "start","start_erl.src","start.src","to_erl"],
                  ["ct_run","dialyzer","erlc","typer","yielding_c_fun"]};
             {win32, _} ->
-                {["beam.smp.pdb","erl.exe",
-                  "erl.pdb","erl_log.exe","erlexec.dll","erlsrv.exe","heart.exe",
-                  "start_erl.exe","beam.smp.dll",
-                  "epmd.exe","erl.ini","erl_call.exe",
-                  "erlexec.pdb","escript.exe","inet_gethost.exe"],
-                 ["dialyzer.exe","erlc.exe","yielding_c_fun.exe","ct_run.exe","typer.exe"]}
+                Files = ["beam.smp.dll",
+                         "epmd.exe",
+                         "erl.exe",
+                         "erl_call.exe",
+                         "erl_log.exe",
+                         "erlexec.dll",
+                         "erlsrv.exe",
+                         "escript.exe",
+                         "heart.exe",
+                         "inet_gethost.exe",
+                         "start_erl.exe"],
+                PdbFiles = ["beam.jit.pdb" || erlang:system_info(emu_flavor) =:= jit]
+                    ++ [filename:rootname(F) ++ ".pdb" || F <- Files],
+                IgnoredFiles = ["ct_run.exe",
+                           "dialyzer.exe",
+                           "erlc.exe",
+                           "typer.exe",
+                           "yielding_c_fun.exe"],
+                PdbIgnored = [filename:rootname(F) ++ ".pdb" || F <- IgnoredFiles],
+                {["erl.ini"] ++ Files ++ PdbFiles, IgnoredFiles ++ PdbIgnored}
         end,
 
     ErtsTarContent =
@@ -1134,9 +1148,11 @@ erts_tar(Config) ->
                    || File <- tar_contents(TarName),
                       string:equal(filename:dirname(File),ERTS_DIR),
                       %% Filter out beam.*.smp.*
-                      re:run(filename:basename(File), "beam\\.[^\\.]+\\.smp(\\.dll)?") == nomatch,
+                      re:run(filename:basename(File), "beam\\.[^\\.]+\\.smp(\\.dll|\\.pdb)?") == nomatch,
                       %% Filter out beam.*.emu.*
-                      re:run(filename:basename(File), "beam\\.([^\\.]+\\.)?emu(\\.dll)?") == nomatch,
+                      re:run(filename:basename(File), "beam\\.([^\\.]+\\.)?emu(\\.dll\\.pdb)?") == nomatch,
+                      %% Filter out beam.*.jit.pdb
+                      re:run(filename:basename(File), "beam\\.[^\\.]+\\.?jit\\.pdb") == nomatch,
                       %% Filter out any erl_child_setup.*
                       re:run(filename:basename(File), "erl_child_setup\\..*") == nomatch
                   ])
diff --git a/otp_build b/otp_build
index d2946fec25..bec4886e1c 100755
--- a/otp_build
+++ b/otp_build
@@ -1257,20 +1257,13 @@ do_update_ex_doc ()
 do_debuginfo_win32 ()
 {
     setup_make
-    (cd erts/emulator && $MAKE MAKE="$MAKE" TARGET=$TARGET debug) || exit 1
+    ($MAKE MAKE="$MAKE" TARGET=$TARGET TYPE=debug) || exit 1
     if [ -z "$1" ]; then
-	RELDIR="$ERL_TOP/release/$TARGET"
+       RELDIR="$ERL_TOP/release/$TARGET"
     else
-	RELDIR="$1"
+       RELDIR="$1"
     fi
-    BINDIR="$ERL_TOP/bin/$TARGET"
-    EVSN=`grep '^VSN' erts/vsn.mk | sed 's,^VSN.*=[^0-9]*\([0-9].*\)$,@\1,g;s,^[^@].*,,g;s,^@,,g'`
-    for f in beam.debug.smp.dll beam.smp.pdb beam.debug.smp.dll.pdb erl.pdb erlexec.pdb; do
-	if [ -f $BINDIR/$f ]; then
-	    rm -f $RELDIR/erts-$EVSN/bin/$f
-	    cp $BINDIR/$f $RELDIR/erts-$EVSN/bin/$f
-	fi
-    done
+    ($MAKE release RELEASE_ROOT="$RELDIR" MAKE="$MAKE" TARGET=$TARGET TYPE=debug) || exit 1
 }
 
 do_installer_win32 ()
-- 
2.43.0

openSUSE Build Service is sponsored by