File 4626-erts-Restructure-include-of-hash.h-to-work-with-inli.patch of Package erlang

From b5ab81f3617bb9cb936beaacadae967d3c9ce541 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Mon, 12 Aug 2019 10:00:48 +0200
Subject: [PATCH 6/6] erts: Restructure include of hash.h to work with inline

erl_child_setup is linked together with hash.o so we need to
inline any functions into it when running in debug mode.
---
 erts/emulator/beam/erl_bif_port.c        |  1 +
 erts/emulator/beam/sys.h                 | 11 ++++++++++-
 erts/emulator/sys/common/erl_osenv.h     | 10 ++--------
 erts/emulator/sys/unix/erl_child_setup.c |  5 ++++-
 erts/emulator/sys/unix/sys_drivers.c     |  1 +
 erts/emulator/sys/win32/sys.c            |  1 +
 erts/emulator/sys/win32/sys_env.c        |  1 +
 7 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/erts/emulator/beam/erl_bif_port.c b/erts/emulator/beam/erl_bif_port.c
index ed825d3dda..dd1e884705 100644
--- a/erts/emulator/beam/erl_bif_port.c
+++ b/erts/emulator/beam/erl_bif_port.c
@@ -44,6 +44,7 @@
 #include "erl_bif_unique.h"
 #include "dtrace-wrapper.h"
 #include "erl_proc_sig_queue.h"
+#include "erl_osenv.h"
 
 static Port *open_port(Process* p, Eterm name, Eterm settings, int *err_typep, int *err_nump);
 static int merge_global_environment(erts_osenv_t *env, Eterm key_value_pairs);
diff --git a/erts/emulator/beam/sys.h b/erts/emulator/beam/sys.h
index db07512cf7..8a59b61b63 100644
--- a/erts/emulator/beam/sys.h
+++ b/erts/emulator/beam/sys.h
@@ -673,7 +673,16 @@ typedef struct preload {
  */
 typedef Eterm ErtsTracer;
 
-#include "erl_osenv.h"
+
+/*
+ * This structure contains the rb tree for the erlang osenv copy
+ * see erl_osenv.h for more details.
+ */
+typedef struct __erts_osenv_t {
+    struct __env_rbtnode_t *tree;
+    int variable_count;
+    int content_size;
+} erts_osenv_t;
 
 extern char *erts_default_arg0;
 
diff --git a/erts/emulator/sys/common/erl_osenv.h b/erts/emulator/sys/common/erl_osenv.h
index 4777f2148a..f2e96a6af7 100644
--- a/erts/emulator/sys/common/erl_osenv.h
+++ b/erts/emulator/sys/common/erl_osenv.h
@@ -35,16 +35,10 @@
 #  include "config.h"
 #endif
 
-typedef struct __erts_osenv_data_t erts_osenv_data_t;
-
-typedef struct __erts_osenv_t {
-    struct __env_rbtnode_t *tree;
-    int variable_count;
-    int content_size;
-} erts_osenv_t;
-
 #include "sys.h"
 
+typedef struct __erts_osenv_data_t erts_osenv_data_t;
+
 struct __erts_osenv_data_t {
     Sint length;
     void *data;
diff --git a/erts/emulator/sys/unix/erl_child_setup.c b/erts/emulator/sys/unix/erl_child_setup.c
index 9241660069..8f261761db 100644
--- a/erts/emulator/sys/unix/erl_child_setup.c
+++ b/erts/emulator/sys/unix/erl_child_setup.c
@@ -63,10 +63,13 @@
 
 #include "erl_driver.h"
 #include "sys_uds.h"
-#include "hash.h"
 #include "erl_term.h"
 #include "erl_child_setup.h"
 
+#undef ERTS_GLB_INLINE_INCL_FUNC_DEF
+#define ERTS_GLB_INLINE_INCL_FUNC_DEF 1
+#include "hash.h"
+
 #define SET_CLOEXEC(fd) fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC)
 
 #if defined(__ANDROID__)
diff --git a/erts/emulator/sys/unix/sys_drivers.c b/erts/emulator/sys/unix/sys_drivers.c
index 92020c6f35..870d0bd28a 100644
--- a/erts/emulator/sys/unix/sys_drivers.c
+++ b/erts/emulator/sys/unix/sys_drivers.c
@@ -55,6 +55,7 @@
 
 #define WANT_NONBLOCKING    /* must define this to pull in defs from sys.h */
 #include "sys.h"
+#include "erl_osenv.h"
 
 #include "erl_threads.h"
 
diff --git a/erts/emulator/sys/win32/sys.c b/erts/emulator/sys/win32/sys.c
index b95aadc9b2..bc3de42be7 100644
--- a/erts/emulator/sys/win32/sys.c
+++ b/erts/emulator/sys/win32/sys.c
@@ -27,6 +27,7 @@
 #endif
 
 #include "sys.h"
+#include "erl_osenv.h"
 #include "erl_alloc.h"
 #include "erl_sys_driver.h"
 #include "global.h"
diff --git a/erts/emulator/sys/win32/sys_env.c b/erts/emulator/sys/win32/sys_env.c
index c78161b344..36223c2c14 100644
--- a/erts/emulator/sys/win32/sys_env.c
+++ b/erts/emulator/sys/win32/sys_env.c
@@ -23,6 +23,7 @@
 #endif
 
 #include "sys.h"
+#include "erl_osenv.h"
 #include "erl_sys_driver.h"
 #include "erl_alloc.h"
 
-- 
2.16.4

openSUSE Build Service is sponsored by