File 0201-erts-Add-recv-marker-testcase-for-prim_inet.patch of Package erlang
From 969431ed6da5d1c2170c9a671ca16dfedc91a181 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Thu, 20 Feb 2025 13:33:34 +0100
Subject: [PATCH 2/2] erts: Add recv marker testcase for prim_inet
---
lib/kernel/test/gen_tcp_misc_SUITE.erl | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/lib/kernel/test/gen_tcp_misc_SUITE.erl b/lib/kernel/test/gen_tcp_misc_SUITE.erl
index 50c457ed28..e6a3593887 100644
--- a/lib/kernel/test/gen_tcp_misc_SUITE.erl
+++ b/lib/kernel/test/gen_tcp_misc_SUITE.erl
@@ -49,7 +49,7 @@
-module(gen_tcp_misc_SUITE).
--include_lib("common_test/include/ct.hrl").
+-include_lib("stdlib/include/assert.hrl").
-include("kernel_test_lib.hrl").
-export([
@@ -108,7 +108,8 @@
otp_18883/1,
otp_18707/1,
otp_19560_inet/1, otp_19560_inet6/1,
- send_block_unblock/1
+ send_block_unblock/1,
+ prim_inet_recv_marker/1
]).
%% Internal exports.
@@ -205,7 +206,7 @@ inet_backend_default_cases() ->
all_std_cases().
inet_backend_inet_cases() ->
- all_std_cases().
+ [prim_inet_recv_marker] ++ all_std_cases().
inet_backend_socket_cases() ->
all_std_cases().
@@ -9433,6 +9434,24 @@ do_otp_18707(_Config) ->
?P("done"),
ok.
+%% Disassemble prim_inet.beam and make that sure each function has
+%% the correct number of recv markers.
+prim_inet_recv_marker(_Config) ->
+ [PrimInet | _] = filelib:wildcard(
+ filename:join([code:lib_dir(erts),"**","prim_inet.beam"])),
+
+ {beam_file, prim_inet, _Exports, _Vsn, _Attr, Functions} =
+ beam_disasm:file(PrimInet),
+ RecvMarkerCnt =
+ [{Name,Arity,length([C || {recv_marker_use,_} = C <- Code])}
+ || {function, Name, Arity, _, Code} <- Functions],
+ RecvMarkers =
+ [{Name, Arity} || {Name,Arity,Cnt} <- RecvMarkerCnt, Cnt =/= 0],
+
+ ?assert(lists:member({send,4}, RecvMarkers)),
+ ?assert(lists:member({do_sendto,4}, RecvMarkers)),
+
+ ok.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--
2.43.0