diff options
Diffstat (limited to 'dev-lang/erlang/files/erlang-22.2.2-gcc-10.patch')
-rw-r--r-- | dev-lang/erlang/files/erlang-22.2.2-gcc-10.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/dev-lang/erlang/files/erlang-22.2.2-gcc-10.patch b/dev-lang/erlang/files/erlang-22.2.2-gcc-10.patch new file mode 100644 index 000000000000..9a7d5939419e --- /dev/null +++ b/dev-lang/erlang/files/erlang-22.2.2-gcc-10.patch @@ -0,0 +1,45 @@ +https://github.com/erlang/otp/pull/2503 + +From 9fad0c9b71808458e857cbd3871cf80f46a75af1 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyfox@gentoo.org> +Date: Tue, 14 Jan 2020 23:15:01 +0000 +Subject: [PATCH] ei_portio.h: avoid ODR violation of + 'ei_default_socket_callbacks' + +Noticed as a build failure against fresh gcc-master: + +``` +LD otp/lib/erl_interface/bin/x86_64-unknown-linux-gnu/erl_call +ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(eirecv.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here +ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(send.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here +ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(send_reg.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here +ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(epmd_port.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here +ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_portio.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here +collect2: error: ld returned 1 exit status +make[3]: *** [x86_64-unknown-linux-gnu/Makefile:669: otp/lib/erl_interface/bin/x86_64-unknown-linux-gnu/erl_call] Error 1 +``` + +The failure looks legitimate: `ei_default_socket_callbacks` is a +struct defined in 'ei_portio.h' and in 'ei_portio.c'. + +The change flips 'ei_portio.h' definition to declaration. + +Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> +--- + lib/erl_interface/src/misc/ei_portio.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/erl_interface/src/misc/ei_portio.h ++++ b/lib/erl_interface/src/misc/ei_portio.h +@@ -47,7 +47,7 @@ int ei_writev_fill_ctx_t__(ei_socket_callbacks *cbs, void *ctx, const struct iov + int ei_socket_callbacks_have_writev__(ei_socket_callbacks *cbs); + #endif + +-ei_socket_callbacks ei_default_socket_callbacks; ++extern ei_socket_callbacks ei_default_socket_callbacks; + + #define EI_FD_AS_CTX__(FD) \ + ((void *) (long) (FD)) +-- +2.25.0 + |