Skip to content

Commit

Permalink
Merge branch 'lukas/erts/fix-windows-pdb/OTP-19465'
Browse files Browse the repository at this point in the history
* lukas/erts/fix-windows-pdb:
  erts: Include jit.pdb and release all pdb files
  erts: Fix possible Visual Studio bug
  erts: Fix cc.sh to respect -O0
  Only need gcc/g++ when building interpreter
  • Loading branch information
garazdawi committed Feb 3, 2025
2 parents ede8aee + 0d42f58 commit 85a1222
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 22 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ jobs:
distribution: Ubuntu-18.04

- name: Install WSL dependencies
run: apt update && apt install -y g++-mingw-w64 gcc-mingw-w64 make autoconf unzip
run: apt update && apt install -y make autoconf unzip

- name: Install openssl
shell: cmd
Expand Down
4 changes: 4 additions & 0 deletions erts/emulator/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
4 changes: 3 additions & 1 deletion erts/emulator/beam/erl_bif_coverage.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,7 @@ get_cover_id_line(Process* c_p, const BeamCodeHeader* hdr)
for (i = hdr->line_coverage_len - 1; i >= 0; i--) {
Eterm coverage = am_error;
Uint* coverage_array = hdr->coverage;
Sint coverage_data;
unsigned cover_id;

if (!hdr->line_coverage_valid[i]) {
Expand All @@ -388,7 +389,8 @@ get_cover_id_line(Process* c_p, const BeamCodeHeader* hdr)
if (location == LINE_INVALID_LOCATION) {
continue;
}
coverage = make_small(MIN(coverage_array[i], MAX_SMALL));
coverage_data = coverage_array[i];
coverage = make_small(MIN(coverage_data, MAX_SMALL));
cover_id = loc2id[i];
tmp = TUPLE2(hp, make_small(cover_id), coverage);
hp += 3;
Expand Down
3 changes: 3 additions & 0 deletions erts/epmd/src/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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:
5 changes: 5 additions & 0 deletions erts/etc/common/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)"
Expand Down
2 changes: 2 additions & 0 deletions erts/etc/win32/wsl_tools/vc/cc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ while test -n "$1" ; do
MD=-MD;
fi
OPTIMIZED_BUILD=true;;
-O0)
;;
-O*)
# Optimization hardcoded
OPTIMIZE_FLAGS="-Ox -Z7";
Expand Down
3 changes: 3 additions & 0 deletions erts/lib_src/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
3 changes: 2 additions & 1 deletion lib/sasl/src/systools_make.erl
Original file line number Diff line number Diff line change
Expand Up @@ -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.

%%______________________________________________________________________
Expand Down
32 changes: 24 additions & 8 deletions lib/sasl/test/systools_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand All @@ -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
])
Expand Down
15 changes: 4 additions & 11 deletions otp_build
Original file line number Diff line number Diff line change
Expand Up @@ -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 ()
Expand Down

0 comments on commit 85a1222

Please sign in to comment.