From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] package/openjdk: fix building against gcc10
Date: Thu, 18 Jun 2020 10:44:37 +0200 [thread overview]
Message-ID: <20200618084437.GL2351@scaer> (raw)
In-Reply-To: <20200617201958.2368005-1-aduskett@gmail.com>
Adam, All,
On 2020-06-17 13:19 -0700, aduskett at gmail.com spake thusly:
> From: Adam Duskett <Aduskett@gmail.com>
>
> GCC10 set's the -fno-common flag by default which causes OpenJDK to fail when
> compiling.
>
> Because there is no easy way to create a patch from the OpenJDK mercurial
> repository, this patch was created by hand from the three commits listed in
> the provided patch itself.
>
> Signed-off-by: Adam Duskett <Aduskett@gmail.com>
> ---
> package/openjdk/0001-fix-gcc-10-support.patch | 119 ++++++++++++++++++
> 1 file changed, 119 insertions(+)
> create mode 100644 package/openjdk/0001-fix-gcc-10-support.patch
>
> diff --git a/package/openjdk/0001-fix-gcc-10-support.patch b/package/openjdk/0001-fix-gcc-10-support.patch
openjdk has a version choice, so we have to have the patch in a
per-version sub-directory, even if the patch applies sas-is to both
versions.
Regards,
Yann E. MORIN.
> new file mode 100644
> index 0000000000..5364c47252
> --- /dev/null
> +++ b/package/openjdk/0001-fix-gcc-10-support.patch
> @@ -0,0 +1,119 @@
> +From 58911e9de888aece29f491995a8b8a31f7d6b424 Mon Sep 17 00:00:00 2001
> +From: Patrick Zhang <patrick.zhang@amperecomputing.com>
> +Date: Wed, 05 Feb 2020 17:14:15 -0700
> +Subject: [PATCH] fix gcc 10 support
> +
> +This patch fixes the "multiple definition" link errors with GCC10 due to
> +GCC10 setting -fno-common by default.
> +
> +This is a combination of the following upstream commits:
> + - https://hg.openjdk.java.net/jdk/jdk/rev/8e6fa89397ca
> + - https://hg.openjdk.java.net/jdk/jdk/rev/6925fca95959
> + - https://hg.openjdk.java.net/jdk/jdk/rev/9e54ea7d9cd9
> +
> +Signed-off-by: Patrick Zhang <patrick.zhang@amperecomputing.com>
> +Signed-off-by: Adam Duskett <Aduskett@gmail.com>
> +---
> + src/java.base/unix/native/libjava/childproc.c | 1 +
> + src/java.base/unix/native/libjava/childproc.h | 2 +-
> + .../share/native/libj2gss/NativeFunc.c | 3 +++
> + .../share/native/libj2gss/NativeFunc.h | 2 +-
> + src/jdk.sctp/unix/native/libsctp/Sctp.h | 12 ++++++------
> + src/jdk.sctp/unix/native/libsctp/SctpNet.c | 7 +++++++
> + 6 files changed, 19 insertions(+), 8 deletions(-)
> +
> +diff --git a/src/java.base/unix/native/libjava/childproc.c b/src/java.base/unix/native/libjava/childproc.c
> +index 811aaeac5..16480bfbf 100644
> +--- a/src/java.base/unix/native/libjava/childproc.c
> ++++ b/src/java.base/unix/native/libjava/childproc.c
> +@@ -34,6 +34,7 @@
> +
> + #include "childproc.h"
> +
> ++const char * const *parentPathv;
> +
> + ssize_t
> + restartableWrite(int fd, const void *buf, size_t count)
> +diff --git a/src/java.base/unix/native/libjava/childproc.h b/src/java.base/unix/native/libjava/childproc.h
> +index 091150930..d57e44b6e 100644
> +--- a/src/java.base/unix/native/libjava/childproc.h
> ++++ b/src/java.base/unix/native/libjava/childproc.h
> +@@ -126,7 +126,7 @@ typedef struct _SpawnInfo {
> + * The cached and split version of the JDK's effective PATH.
> + * (We don't support putenv("PATH=...") in native code)
> + */
> +-const char * const *parentPathv;
> ++extern const char * const *parentPathv;
> +
> + ssize_t restartableWrite(int fd, const void *buf, size_t count);
> + int restartableDup2(int fd_from, int fd_to);
> +diff --git a/src/java.security.jgss/share/native/libj2gss/NativeFunc.c b/src/java.security.jgss/share/native/libj2gss/NativeFunc.c
> +index da7bc0445..5941f7b5a 100644
> +--- a/src/java.security.jgss/share/native/libj2gss/NativeFunc.c
> ++++ b/src/java.security.jgss/share/native/libj2gss/NativeFunc.c
> +@@ -27,6 +27,9 @@
> + #include <stdlib.h>
> + #include "NativeFunc.h"
> +
> ++/* global GSS function table */
> ++GSS_FUNCTION_TABLE_PTR ftab;
> ++
> + /* standard GSS method names (ordering is from mapfile) */
> + static const char RELEASE_NAME[] = "gss_release_name";
> + static const char IMPORT_NAME[] = "gss_import_name";
> +diff --git a/src/java.security.jgss/share/native/libj2gss/NativeFunc.h b/src/java.security.jgss/share/native/libj2gss/NativeFunc.h
> +index 82914387c..e4a4981a3 100644
> +--- a/src/java.security.jgss/share/native/libj2gss/NativeFunc.h
> ++++ b/src/java.security.jgss/share/native/libj2gss/NativeFunc.h
> +@@ -277,6 +277,6 @@ typedef struct GSS_FUNCTION_TABLE {
> + typedef GSS_FUNCTION_TABLE *GSS_FUNCTION_TABLE_PTR;
> +
> + /* global GSS function table */
> +-GSS_FUNCTION_TABLE_PTR ftab;
> ++extern GSS_FUNCTION_TABLE_PTR ftab;
> +
> + #endif
> +diff --git a/src/jdk.sctp/unix/native/libsctp/Sctp.h b/src/jdk.sctp/unix/native/libsctp/Sctp.h
> +index cc1367f78..46b07db0a 100644
> +--- a/src/jdk.sctp/unix/native/libsctp/Sctp.h
> ++++ b/src/jdk.sctp/unix/native/libsctp/Sctp.h
> +@@ -322,12 +322,12 @@ typedef int sctp_peeloff_func(int sock, sctp_assoc_t id);
> +
> + #endif /* __linux__ */
> +
> +-sctp_getladdrs_func* nio_sctp_getladdrs;
> +-sctp_freeladdrs_func* nio_sctp_freeladdrs;
> +-sctp_getpaddrs_func* nio_sctp_getpaddrs;
> +-sctp_freepaddrs_func* nio_sctp_freepaddrs;
> +-sctp_bindx_func* nio_sctp_bindx;
> +-sctp_peeloff_func* nio_sctp_peeloff;
> ++extern sctp_getladdrs_func* nio_sctp_getladdrs;
> ++extern sctp_freeladdrs_func* nio_sctp_freeladdrs;
> ++extern sctp_getpaddrs_func* nio_sctp_getpaddrs;
> ++extern sctp_freepaddrs_func* nio_sctp_freepaddrs;
> ++extern sctp_bindx_func* nio_sctp_bindx;
> ++extern sctp_peeloff_func* nio_sctp_peeloff;
> +
> + jboolean loadSocketExtensionFuncs(JNIEnv* env);
> +
> +diff --git a/src/jdk.sctp/unix/native/libsctp/SctpNet.c b/src/jdk.sctp/unix/native/libsctp/SctpNet.c
> +index d40c15aa3..ab9b6e093 100644
> +--- a/src/jdk.sctp/unix/native/libsctp/SctpNet.c
> ++++ b/src/jdk.sctp/unix/native/libsctp/SctpNet.c
> +@@ -43,6 +43,13 @@ static jmethodID isaCtrID = 0;
> + static const char* nativeSctpLib = "libsctp.so.1";
> + static jboolean funcsLoaded = JNI_FALSE;
> +
> ++sctp_getladdrs_func* nio_sctp_getladdrs;
> ++sctp_freeladdrs_func* nio_sctp_freeladdrs;
> ++sctp_getpaddrs_func* nio_sctp_getpaddrs;
> ++sctp_freepaddrs_func* nio_sctp_freepaddrs;
> ++sctp_bindx_func* nio_sctp_bindx;
> ++sctp_peeloff_func* nio_sctp_peeloff;
> ++
> + JNIEXPORT jint JNICALL DEF_JNI_OnLoad
> + (JavaVM *vm, void *reserved) {
> + return JNI_VERSION_1_2;
> +--
> +2.26.2
> +
> --
> 2.26.2
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
prev parent reply other threads:[~2020-06-18 8:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-17 20:19 [Buildroot] [PATCH 1/1] package/openjdk: fix building against gcc10 aduskett at gmail.com
2020-06-18 8:44 ` Yann E. MORIN [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200618084437.GL2351@scaer \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.