On 12/1/2023 00:54, Khem Raj wrote:
CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know
the content is safe.
On Thu, Nov 30, 2023 at 12:31 AM wenlin.k...@windriver.com via
lists.yoctoproject.org
<wenlin.kang=windriver....@lists.yoctoproject.org> wrote:
From: Wenlin Kang <wenlin.k...@windriver.com>
Steps to reproduce
1) add layer meta-mingw
2) add line in local.conf
SDKMACHINE = "x86_64-mingw32"
3) bitbake nativesdk-libxcrypt
Fixed:
1. .symver error
| {standard input}: Assembler messages:
| {standard input}:4: Error: unknown pseudo-op: `.symver'
2. pedantic error
| ../git/lib/crypt.c:316:24: error: ISO C does not allow extra ';' outside
of a function [-Werror=pedantic]
| 316 | SYMVER_crypt_gensalt_rn;
| |
3. conversion error
| ../git/lib/util-get-random-bytes.c: In function '_crypt_get_random_bytes':
| ../git/lib/util-get-random-bytes.c:140:42: error: conversion from 'size_t'
{aka 'long long unsigned int'} to 'unsigned int' may change value
[-Werror=conversion]
| 140 | ssize_t nread = read (fd, buf, buflen);
Signed-off-by: Wenlin Kang <wenlin.k...@windriver.com>
---
.../0001-Fix-for-compilation-on-Windows.patch | 37 +++++++++++++++
...dom-bytes.c-fixed-conversion-error-w.patch | 47 +++++++++++++++++++
recipes-core/libxcrypt/libxcrypt_%.bbappend | 7 +++
3 files changed, 91 insertions(+)
create mode 100644
recipes-core/libxcrypt/libxcrypt/0001-Fix-for-compilation-on-Windows.patch
create mode 100644
recipes-core/libxcrypt/libxcrypt/0001-lib-util-get-random-bytes.c-fixed-conversion-error-w.patch
create mode 100644 recipes-core/libxcrypt/libxcrypt_%.bbappend
diff --git
a/recipes-core/libxcrypt/libxcrypt/0001-Fix-for-compilation-on-Windows.patch
b/recipes-core/libxcrypt/libxcrypt/0001-Fix-for-compilation-on-Windows.patch
new file mode 100644
index 0000000..5760ee0
--- /dev/null
+++ b/recipes-core/libxcrypt/libxcrypt/0001-Fix-for-compilation-on-Windows.patch
@@ -0,0 +1,37 @@
+From a507b628a5a5d4e4f1cf0f0a9a72967470ee7624 Mon Sep 17 00:00:00 2001
+From: Brecht Sanders <bre...@sanders.org>
+Date: Fri, 3 Feb 2023 08:44:49 +0100
+Subject: [PATCH] Fix for compilation on Windows
+
+This fix allows the library to build on Windows (at least with MinGW-w64).
+
+`.symver` is only supported for ELF format but Windows uses COFF/PE.
+
+Workaround dummy define of `symver_set()`
+
+Upstream-Status: Backport
[https://github.com/besser82/libxcrypt/commit/a507b628a5a5d4e4f1cf0f0a9a72967470ee7624]
+
+Signed-off-by: Wenlin Kang <wenlin.k...@windriver.com>
+---
+ lib/crypt-port.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/lib/crypt-port.h b/lib/crypt-port.h
+index f06ca24..a707939 100644
+--- a/lib/crypt-port.h
++++ b/lib/crypt-port.h
+@@ -201,6 +201,11 @@ extern size_t strcpy_or_abort (void *dst, size_t d_size,
const void *src);
+ __asm__(".globl _" extstr); \
+ __asm__(".set _" extstr ", _" #intname)
+
++#elif defined _WIN32
++
++/* .symver is only supported for ELF format, Windows uses COFF/PE */
++# define symver_set(extstr, intname, version, mode)
++
+ #elif defined __GNUC__ && __GNUC__ >= 3
+
+ # define _strong_alias(name, aliasname) \
+--
+2.34.1
+
diff --git
a/recipes-core/libxcrypt/libxcrypt/0001-lib-util-get-random-bytes.c-fixed-conversion-error-w.patch
b/recipes-core/libxcrypt/libxcrypt/0001-lib-util-get-random-bytes.c-fixed-conversion-error-w.patch
new file mode 100644
index 0000000..3846f76
--- /dev/null
+++
b/recipes-core/libxcrypt/libxcrypt/0001-lib-util-get-random-bytes.c-fixed-conversion-error-w.patch
@@ -0,0 +1,47 @@
+From ff99091eb8a6b9e6edc567f6d2552183fbaacec3 Mon Sep 17 00:00:00 2001
+From: Wenlin Kang <wenlin.k...@windriver.com>
+Date: Mon, 6 Nov 2023 14:43:28 +0800
+Subject: [PATCH] lib/util-get-random-bytes.c: fixed conversion error with
+ mingw
+
+With x86_64-w64-mingw32-gcc. get below error:
+| ../git/lib/util-get-random-bytes.c: In function '_crypt_get_random_bytes':
+| ../git/lib/util-get-random-bytes.c:140:42: error: conversion from 'size_t'
{aka 'long long unsigned int'} to 'unsigned int' may change value
[-Werror=conversion]
+| 140 | ssize_t nread = read (fd, buf, buflen);
+| | ^~~~~~
+
+In util-get-random-bytes.c, has get_random_bytes(void *buf, size_t buflen),
+but in mingw-w64-mingw-w64/mingw-w64-headers/crt/io.h, read() has "unsigned
int"
+read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount), and has:
+ #ifdef _WIN64
+ __MINGW_EXTENSION typedef unsigned __int64 size_t;
+ #else
+ typedef unsigned int size_t;
+ #endif /* _WIN64 */
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenlin Kang <wenlin.k...@windriver.com>
+---
+ lib/util-get-random-bytes.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/lib/util-get-random-bytes.c b/lib/util-get-random-bytes.c
+index 79816db..68cd378 100644
+--- a/lib/util-get-random-bytes.c
++++ b/lib/util-get-random-bytes.c
+@@ -137,7 +137,11 @@ get_random_bytes(void *buf, size_t buflen)
+ dev_urandom_doesnt_work = true;
+ else
+ {
++#ifdef _WIN64
++ ssize_t nread = read (fd, buf, (unsigned int)buflen);
++#else
+ ssize_t nread = read (fd, buf, buflen);
++#endif
read is system API and I wonder why we are not getting right API
signature here as I think
size_t should already be defined based on _WIN64 in system headers.
1. read() is declared in
https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-headers/crt/io.h,
but it has only a declaration for 32-bit, with 64-bit, it can't be found
2. for size_t, it has:
#ifdef _WIN64
__MINGW_EXTENSION typedef __int64 ssize_t;
#else
typedef int ssize_t;
#endif /* _WIN64 */
+ if (nread < 0 || (size_t)nread < buflen)
+ dev_urandom_doesnt_work = true;
+
+--
+2.25.1
+
diff --git a/recipes-core/libxcrypt/libxcrypt_%.bbappend
b/recipes-core/libxcrypt/libxcrypt_%.bbappend
new file mode 100644
index 0000000..cb9c45e
--- /dev/null
+++ b/recipes-core/libxcrypt/libxcrypt_%.bbappend
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI:append:mingw32 = "file://0001-Fix-for-compilation-on-Windows.patch \
+
file://0001-lib-util-get-random-bytes.c-fixed-conversion-error-w.patch \
+"
+
+CFLAGS:append:class-nativesdk:mingw32 = " -Wno-pedantic"
--
2.39.0
--
--
Thanks
Wenlin Kang
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#61784): https://lists.yoctoproject.org/g/yocto/message/61784
Mute This Topic: https://lists.yoctoproject.org/mt/102890384/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-