diff --git a/poky/meta/recipes-extended/cpio/cpio-2.13/0001-Use-__alignof__-with-clang.patch b/poky/meta/recipes-extended/cpio/cpio-2.13/0001-Use-__alignof__-with-clang.patch
new file mode 100644
index 0000000..d637e70
--- /dev/null
+++ b/poky/meta/recipes-extended/cpio/cpio-2.13/0001-Use-__alignof__-with-clang.patch
@@ -0,0 +1,42 @@
+From 6e169bb5fadb73b4dd300b28e9cae1e1772855e8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Jan 2023 02:05:23 -0800
+Subject: [PATCH] Use __alignof__ with clang.
+
+For clang versions < 8, use the same
+workaround as for GCC versions < 4.9.
+
+Backport couple of gnulib patches squashed
+
+[1] https://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/stdalign.in.h?id=57caf9541d98314102a55dd1cd0b8dc2be747471
+[2] https://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/stdalign.in.h?id=2af490a4c4ce85567296e27be6a9528964ca851e
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/stdalign.in.h?id=57caf9541d98314102a55dd1cd0b8dc2be747471]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gnu/stdalign.in.h | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/gnu/stdalign.in.h b/gnu/stdalign.in.h
+index 5f56eee..e6e6a65 100644
+--- a/gnu/stdalign.in.h
++++ b/gnu/stdalign.in.h
+@@ -53,9 +53,12 @@
+ #undef _Alignof
+ 
+ /* GCC releases before GCC 4.9 had a bug in _Alignof.  See GCC bug 52023
+-   <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.  */
++   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
++   clang versions < 8.0.0 have the same bug.  */
+ #if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
+-     || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9)))
++     || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
++         && !defined __clang__) \
++     || (defined __clang__ && __clang_major__ < 8))
+ # ifdef __cplusplus
+ #  if 201103 <= __cplusplus
+ #   define _Alignof(type) alignof (type)
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-extended/cpio/cpio-2.13/0001-obstack-Fix-a-clang-warning.patch b/poky/meta/recipes-extended/cpio/cpio-2.13/0001-obstack-Fix-a-clang-warning.patch
new file mode 100644
index 0000000..6f6e396
--- /dev/null
+++ b/poky/meta/recipes-extended/cpio/cpio-2.13/0001-obstack-Fix-a-clang-warning.patch
@@ -0,0 +1,27 @@
+From 02f1f63d3ff58f3473f1689a0322a234ce10b659 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 13 Jan 2023 22:13:45 -0800
+Subject: [PATCH] obstack: Fix a clang warning
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=0cc39712803ade7b2d4b89c36b143dad72404063]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gnu/obstack.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gnu/obstack.c b/gnu/obstack.c
+index 54b675d..4d6a1d5 100644
+--- a/gnu/obstack.c
++++ b/gnu/obstack.c
+@@ -326,7 +326,7 @@ int obstack_exit_failure = EXIT_FAILURE;
+ #   include <libio/iolibio.h>
+ #  endif
+ 
+-static _Noreturn void
++static __attribute_noreturn__ void
+ print_and_abort (void)
+ {
+   /* Don't change any of these strings.  Yes, it would be possible to add
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-extended/cpio/cpio_2.13.bb b/poky/meta/recipes-extended/cpio/cpio_2.13.bb
index e72a114..eb3dc13 100644
--- a/poky/meta/recipes-extended/cpio/cpio_2.13.bb
+++ b/poky/meta/recipes-extended/cpio/cpio_2.13.bb
@@ -9,7 +9,9 @@
 SRC_URI = "${GNU_MIRROR}/cpio/cpio-${PV}.tar.gz \
            file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
            file://0002-src-global.c-Remove-superfluous-declaration-of-progr.patch \
+           file://0001-obstack-Fix-a-clang-warning.patch \
            file://CVE-2021-38185.patch \
+           file://0001-Use-__alignof__-with-clang.patch \
            "
 
 SRC_URI[md5sum] = "389c5452d667c23b5eceb206f5000810"
diff --git a/poky/meta/recipes-extended/ed/ed_1.18.bb b/poky/meta/recipes-extended/ed/ed_1.19.bb
similarity index 80%
rename from poky/meta/recipes-extended/ed/ed_1.18.bb
rename to poky/meta/recipes-extended/ed/ed_1.19.bb
index e1548df..d01b748 100644
--- a/poky/meta/recipes-extended/ed/ed_1.18.bb
+++ b/poky/meta/recipes-extended/ed/ed_1.19.bb
@@ -4,8 +4,8 @@
 
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
-                    file://ed.h;endline=20;md5=6e6a818b0593f937fc63ba08d5e314bf \
-                    file://main.c;endline=17;md5=8419a08bb12936f32384a0d1c0f9e74c \
+                    file://ed.h;endline=20;md5=504a90a78b045972e2fd2f3fc418c195 \
+                    file://main.c;endline=17;md5=cf9d322b0ac4445ca2299c61ee175365 \
                     "
 
 SECTION = "base"
@@ -19,7 +19,7 @@
 SRC_URI = "${GNU_MIRROR}/ed/${BP}.tar.lz"
 UPSTREAM_CHECK_URI = "${GNU_MIRROR}/ed/"
 
-SRC_URI[sha256sum] = "aca8efad9800c587724a20b97aa8fc47e6b5a47df81606feaba831b074462b4f"
+SRC_URI[sha256sum] = "ce2f2e5c424790aa96d09dacb93d9bbfdc0b7eb6249c9cb7538452e8ec77cd48"
 
 EXTRA_OEMAKE = "-e MAKEFLAGS="
 
diff --git a/poky/meta/recipes-extended/ethtool/ethtool/0001-marvell.c-define-_GNU_SOURCE.patch b/poky/meta/recipes-extended/ethtool/ethtool/0001-marvell.c-define-_GNU_SOURCE.patch
new file mode 100644
index 0000000..8a7eeaf
--- /dev/null
+++ b/poky/meta/recipes-extended/ethtool/ethtool/0001-marvell.c-define-_GNU_SOURCE.patch
@@ -0,0 +1,59 @@
+From 5112785191e3279c671a027fe797be77e1071ecd Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 2 Jan 2023 13:45:46 +0100
+Subject: [PATCH] marvell.c: use portable integer types
+
+u_int32_t is not portable, but uint32_t is.
+
+Upstream-Status: Submitted [by email to mkubecek@suse.cz]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
+---
+ marvell.c | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/marvell.c b/marvell.c
+index d3d570e..3d42eed 100644
+--- a/marvell.c
++++ b/marvell.c
+@@ -31,23 +31,23 @@ static void dump_timer(const char *name, const void *p)
+ static void dump_queue(const char *name, const void *a, int rx)
+ {
+ 	struct desc {
+-		u_int32_t		ctl;
+-		u_int32_t		next;
+-		u_int32_t		data_lo;
+-		u_int32_t		data_hi;
+-		u_int32_t		status;
+-		u_int32_t		timestamp;
+-		u_int16_t		csum2;
+-		u_int16_t		csum1;
+-		u_int16_t		csum2_start;
+-		u_int16_t		csum1_start;
+-		u_int32_t		addr_lo;
+-		u_int32_t		addr_hi;
+-		u_int32_t		count_lo;
+-		u_int32_t		count_hi;
+-		u_int32_t               byte_count;
+-		u_int32_t               csr;
+-		u_int32_t               flag;
++		uint32_t		ctl;
++		uint32_t		next;
++		uint32_t		data_lo;
++		uint32_t		data_hi;
++		uint32_t		status;
++		uint32_t		timestamp;
++		uint16_t		csum2;
++		uint16_t		csum1;
++		uint16_t		csum2_start;
++		uint16_t		csum1_start;
++		uint32_t		addr_lo;
++		uint32_t		addr_hi;
++		uint32_t		count_lo;
++		uint32_t		count_hi;
++		uint32_t                byte_count;
++		uint32_t                csr;
++		uint32_t               flag;
+ 	};
+ 	const struct desc *d = a;
+ 
diff --git a/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch b/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
index c3cefbb..4994369 100644
--- a/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
+++ b/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
@@ -1,4 +1,4 @@
-From dea90ab711acad251b5d8536c534409979ea8be4 Mon Sep 17 00:00:00 2001
+From 0d066a901292e6a44ff7bc7ee16f99dd2ba4ea15 Mon Sep 17 00:00:00 2001
 From: Tudor Florea <tudor.florea@enea.com>
 Date: Wed, 28 May 2014 18:59:54 +0200
 Subject: [PATCH] ethtool: use serial-tests config needed by ptest.
@@ -15,11 +15,11 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 89d0e70..ab2be9c 100644
+index 3eb4e7b..ee5c72f 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
- AC_INIT(ethtool, 6.0, netdev@vger.kernel.org)
+ AC_INIT(ethtool, 6.1, netdev@vger.kernel.org)
  AC_PREREQ(2.52)
  AC_CONFIG_SRCDIR([ethtool.c])
 -AM_INIT_AUTOMAKE([gnu subdir-objects])
diff --git a/poky/meta/recipes-extended/ethtool/ethtool_6.0.bb b/poky/meta/recipes-extended/ethtool/ethtool_6.1.bb
similarity index 89%
rename from poky/meta/recipes-extended/ethtool/ethtool_6.0.bb
rename to poky/meta/recipes-extended/ethtool/ethtool_6.1.bb
index 8f36520..2b9bbe6 100644
--- a/poky/meta/recipes-extended/ethtool/ethtool_6.0.bb
+++ b/poky/meta/recipes-extended/ethtool/ethtool_6.1.bb
@@ -9,9 +9,10 @@
 SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
            file://run-ptest \
            file://avoid_parallel_tests.patch \
+           file://0001-marvell.c-define-_GNU_SOURCE.patch \
            "
 
-SRC_URI[sha256sum] = "f2168e2b45d7e58ed5b76e5533fd607ca0720c9e631f4271bfe997bf72330796"
+SRC_URI[sha256sum] = "1d03f1ce324fbd95591191c42ac0c4c9cc721e067b929083a20a46c4b4731436"
 
 UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
 
diff --git a/poky/meta/recipes-extended/gperf/gperf/0001-Make-the-code-C-17-compliant.patch b/poky/meta/recipes-extended/gperf/gperf/0001-Make-the-code-C-17-compliant.patch
new file mode 100644
index 0000000..96e70cd
--- /dev/null
+++ b/poky/meta/recipes-extended/gperf/gperf/0001-Make-the-code-C-17-compliant.patch
@@ -0,0 +1,29 @@
+From 6194f0027045433598a61965758b4531a3d06d1f Mon Sep 17 00:00:00 2001
+From: Bruno Haible <bruno@clisp.org>
+Date: Sun, 30 Aug 2020 12:36:15 +0200
+Subject: [PATCH] Make the code C++17 compliant.
+
+* lib/getline.cc (getstr): Don't use the 'register' keyword.
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/gitweb/?p=gperf.git;a=commit;h=a63b830554920476881837eeacd4a6b507632b19]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/getline.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/getline.cc b/lib/getline.cc
+index c57c633..0984a7c 100644
+--- a/lib/getline.cc
++++ b/lib/getline.cc
+@@ -55,7 +55,7 @@ getstr (char **lineptr, size_t *n, FILE *stream, char terminator, size_t offset)
+ 
+   for (;;)
+     {
+-      register int c = getc (stream);
++      int c = getc (stream);
+ 
+       /* We always want at least one char left in the buffer, since we
+          always (unless we get an error while reading the first char)
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-extended/gperf/gperf_3.1.bb b/poky/meta/recipes-extended/gperf/gperf_3.1.bb
index 4c32a5d..c57ade9 100644
--- a/poky/meta/recipes-extended/gperf/gperf_3.1.bb
+++ b/poky/meta/recipes-extended/gperf/gperf_3.1.bb
@@ -5,7 +5,8 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://src/main.cc;beginline=8;endline=19;md5=dec8f611845d047387ed56b5b85fa99b"
 
-SRC_URI  = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI  = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+            file://0001-Make-the-code-C-17-compliant.patch"
 SRC_URI[md5sum] = "9e251c0a618ad0824b51117d5d9db87e"
 SRC_URI[sha256sum] = "588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2"
 
diff --git a/poky/meta/recipes-extended/groff/files/0001-Fix-code-style-issues.patch b/poky/meta/recipes-extended/groff/files/0001-Fix-code-style-issues.patch
new file mode 100644
index 0000000..221490d
--- /dev/null
+++ b/poky/meta/recipes-extended/groff/files/0001-Fix-code-style-issues.patch
@@ -0,0 +1,536 @@
+From 99313d5c0ff35da6627e7dc985612f990ca64637 Mon Sep 17 00:00:00 2001
+From: "G. Branden Robinson" <g.branden.robinson@gmail.com>
+Date: Mon, 16 Aug 2021 12:37:22 +1000
+Subject: [PATCH] Fix code style issues.
+
+* src/preproc/grn/hgraph.cpp:
+* src/preproc/grn/hpoint.cpp:
+* src/preproc/grn/main.cpp:
+* src/preproc/grn/hdb.cpp: Drop use of `register` storage class.
+
+* src/preproc/grn/hgraph.cpp (len, HGPrintElt, picurve):
+* src/preproc/grn/hdb.cpp (DBRead): Wrap long lines.
+
+* src/preproc/grn/hgraph.cpp: Rename function from `Paramaterize` to
+  `Parameterize`.
+
+  (HGCurve): Update call site.
+
+* src/preproc/grn/main.cpp (add_file): Drop redundant cast in
+  `realloc()` call.
+
+  (conv, interpret): Use standard English in diagnostic messages.
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/groff.git/commit/?id=eead5f5cf1dedc6d180bdb34914d7157d39e270c]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/preproc/grn/hdb.cpp    |  20 +++---
+ src/preproc/grn/hgraph.cpp | 131 +++++++++++++++++++------------------
+ src/preproc/grn/hpoint.cpp |   2 +-
+ src/preproc/grn/main.cpp   |  38 +++++------
+ 4 files changed, 100 insertions(+), 91 deletions(-)
+
+diff --git a/src/preproc/grn/hdb.cpp b/src/preproc/grn/hdb.cpp
+index c61e099..2b4011b 100644
+--- a/src/preproc/grn/hdb.cpp
++++ b/src/preproc/grn/hdb.cpp
+@@ -35,7 +35,7 @@ extern POINT *PTInit();
+ extern POINT *PTMakePoint(double x, double y, POINT ** pplist);
+ 
+ 
+-int DBGetType(register char *s);
++int DBGetType(char *s);
+ 
+ 
+ /*
+@@ -61,7 +61,7 @@ DBCreateElt(int type,
+ 	    char *text,
+ 	    ELT **db)
+ {
+-  register ELT *temp;
++  ELT *temp = 0;
+ 
+   temp = (ELT *) malloc(sizeof(ELT));
+   temp->nextelt = *db;
+@@ -80,11 +80,11 @@ DBCreateElt(int type,
+  * pointer to that database.
+  */
+ ELT *
+-DBRead(register FILE *file)
++DBRead(FILE *file)
+ {
+-  register int i;
+-  register int done;		/* flag for input exhausted */
+-  register double nx;		/* x holder so x is not set before orienting */
++  int i;
++  int done;		/* flag for input exhausted */
++  double nx;		/* x holder so x is not set before orienting */
+   int type;			/* element type */
+   ELT *elist;			/* pointer to the file's elements */
+   POINT *plist;			/* pointer for reading in points */
+@@ -112,7 +112,9 @@ DBRead(register FILE *file)
+     /* if (fscanf(file,"%" MAXSTRING_S "s\n", string) == EOF) */
+     /* I changed the scanf format because the element */
+     /* can have two words (e.g. CURVE SPLINE)         */
+-    if (fscanf(file, "\n%" MAXSTRING_S "[^\n]%*[^\n]\n", string) == EOF) {
++    if (fscanf(file, "\n%"
++		      MAXSTRING_S
++		     "[^\n]%*[^\n]\n", string) == EOF) {
+       error("'%1', error in file format", gremlinfile);
+       return (elist);
+     }
+@@ -209,7 +211,7 @@ DBRead(register FILE *file)
+  * New file format has literal names for element types.
+  */
+ int
+-DBGetType(register char *s)
++DBGetType(char *s)
+ {
+   if (isdigit(s[0]) || (s[0] == '-'))	/* old element format or EOF */
+     return (atoi(s));
+@@ -298,7 +300,7 @@ xscanf(FILE *f,
+        double *xp,
+        double *yp)
+ {
+-  register int c, i, j, m, frac;
++  int c, i, j, m, frac;
+   int iscale = 1, jscale = 1;	/* x = i/scale, y=j/jscale */
+ 
+   while ((c = getc(f)) == ' ');
+diff --git a/src/preproc/grn/hgraph.cpp b/src/preproc/grn/hgraph.cpp
+index dbc0086..ad051ea 100644
+--- a/src/preproc/grn/hgraph.cpp
++++ b/src/preproc/grn/hgraph.cpp
+@@ -14,7 +14,8 @@
+ #define PointsPerInterval 64
+ #define pi		3.14159265358979324
+ #define twopi		(2.0 * pi)
+-#define len(a, b)	groff_hypot((double)(b.x-a.x), (double)(b.y-a.y))
++#define len(a, b)	groff_hypot((double)(b.x-a.x), \
++			            (double)(b.y-a.y))
+ 
+ 
+ extern int dotshifter;		/* for the length of dotted curves */
+@@ -48,7 +49,7 @@ extern double adj4;
+ extern int res;
+ 
+ void HGSetFont(int font, int size);
+-void HGPutText(int justify, POINT pnt, register char *string);
++void HGPutText(int justify, POINT pnt, char *string);
+ void HGSetBrush(int mode);
+ void tmove2(int px, int py);
+ void doarc(POINT cp, POINT sp, int angle);
+@@ -58,10 +59,10 @@ void drawwig(POINT * ptr, int type);
+ void HGtline(int x1, int y1);
+ void deltax(double x);
+ void deltay(double y);
+-void HGArc(register int cx, register int cy, int px, int py, int angle);
+-void picurve(register int *x, register int *y, int npts);
++void HGArc(int cx, int cy, int px, int py, int angle);
++void picurve(int *x, int *y, int npts);
+ void HGCurve(int *x, int *y, int numpoints);
+-void Paramaterize(int x[], int y[], double h[], int n);
++void Parameterize(int x[], int y[], double h[], int n);
+ void PeriodicSpline(double h[], int z[],
+ 		    double dz[], double d2z[], double d3z[],
+ 		    int npoints);
+@@ -83,10 +84,10 @@ void
+ HGPrintElt(ELT *element,
+ 	   int /* baseline */)
+ {
+-  register POINT *p1;
+-  register POINT *p2;
+-  register int length;
+-  register int graylevel;
++  POINT *p1;
++  POINT *p2;
++  int length;
++  int graylevel;
+ 
+   if (!DBNullelt(element) && !Nullpoint((p1 = element->ptlist))) {
+     /* p1 always has first point */
+@@ -168,7 +169,8 @@ HGPrintElt(ELT *element,
+ 
+ 	  if (polyfill == FILL || polyfill == BOTH) {
+ 	    /* do the interior */
+-	    char command = (polyfill == BOTH && element->brushf) ? 'p' : 'P';
++	    char command = (polyfill == BOTH && element->brushf)
++			   ? 'p' : 'P';
+ 
+ 	    /* include outline, if there is one and */
+ 	    /* the -p flag was set                  */
+@@ -278,7 +280,7 @@ HGPrintElt(ELT *element,
+ void
+ HGPutText(int justify,
+ 	  POINT pnt,
+-	  register char *string)
++	  char *string)
+ {
+   int savelasty = lasty;	/* vertical motion for text is to be */
+ 				/* ignored.  Save current y here     */
+@@ -387,7 +389,7 @@ HGSetFont(int font,
+ void
+ HGSetBrush(int mode)
+ {
+-  register int printed = 0;
++  int printed = 0;
+ 
+   if (linmod != style[--mode]) {
+     /* Groff doesn't understand \Ds, so we take it out */
+@@ -417,7 +419,7 @@ HGSetBrush(int mode)
+ void
+ deltax(double x)
+ {
+-  register int ix = (int) (x * troffscale);
++  int ix = (int) (x * troffscale);
+ 
+   printf(" %du", ix - lastx);
+   lastx = ix;
+@@ -437,7 +439,7 @@ deltax(double x)
+ void
+ deltay(double y)
+ {
+-  register int iy = (int) (y * troffscale);
++  int iy = (int) (y * troffscale);
+ 
+   printf(" %du", iy - lastyline);
+   lastyline = iy;
+@@ -457,8 +459,8 @@ void
+ tmove2(int px,
+        int py)
+ {
+-  register int dx;
+-  register int dy;
++  int dx;
++  int dy;
+ 
+   if ((dy = py - lasty)) {
+     printf("\\v'%du'", dy);
+@@ -483,10 +485,10 @@ tmove2(int px,
+ void
+ tmove(POINT * ptr)
+ {
+-  register int ix = (int) (ptr->x * troffscale);
+-  register int iy = (int) (ptr->y * troffscale);
+-  register int dx;
+-  register int dy;
++  int ix = (int) (ptr->x * troffscale);
++  int iy = (int) (ptr->y * troffscale);
++  int dx;
++  int dy;
+ 
+   if ((dy = iy - lasty)) {
+     printf(".sp %du\n", dy);
+@@ -547,7 +549,7 @@ void
+ drawwig(POINT * ptr,
+ 	int type)
+ {
+-  register int npts;			/* point list index */
++  int npts;			/* point list index */
+   int x[MAXPOINTS], y[MAXPOINTS];	/* point list */
+ 
+   for (npts = 1; !Nullpoint(ptr); ptr = PTNextPoint(ptr), npts++) {
+@@ -574,20 +576,20 @@ drawwig(POINT * ptr,
+  *----------------------------------------------------------------------------*/
+ 
+ void
+-HGArc(register int cx,
+-      register int cy,
++HGArc(int cx,
++      int cy,
+       int px,
+       int py,
+       int angle)
+ {
+   double xs, ys, resolution, fullcircle;
+   int m;
+-  register int mask;
+-  register int extent;
+-  register int nx;
+-  register int ny;
+-  register int length;
+-  register double epsilon;
++  int mask;
++  int extent;
++  int nx;
++  int ny;
++  int length;
++  double epsilon;
+ 
+   xs = px - cx;
+   ys = py - cy;
+@@ -633,15 +635,15 @@ HGArc(register int cx,
+  *----------------------------------------------------------------------------*/
+ 
+ void
+-picurve(register int *x,
+-	register int *y,
++picurve(int *x,
++	int *y,
+ 	int npts)
+ {
+-  register int nseg;		/* effective resolution for each curve */
+-  register int xp;		/* current point (and temporary) */
+-  register int yp;
+-  int pxp, pyp;			/* previous point (to make lines from) */
+-  int i;			/* inner curve segment traverser */
++  int nseg;		/* effective resolution for each curve */
++  int xp;		/* current point (and temporary) */
++  int yp;
++  int pxp, pyp;		/* previous point (to make lines from) */
++  int i;		/* inner curve segment traverser */
+   int length = 0;
+   double w;			/* position factor */
+   double t1, t2, t3;		/* calculation temps */
+@@ -671,7 +673,8 @@ picurve(register int *x,
+ 				/* 'nseg' is the number of line    */
+ 				/* segments that will be drawn for */
+ 				/* each curve segment.             */
+-    nseg = (int) ((double) (nseg + (int) groff_hypot((double) xp, (double) yp)) /
++    nseg = (int) ((double) (nseg + (int) groff_hypot((double) xp,
++						     (double) yp)) /
+ 		  res * PointsPerInterval);
+ 
+     for (i = 1; i < nseg; i++) {
+@@ -710,10 +713,10 @@ HGCurve(int *x,
+   double h[MAXPOINTS], dx[MAXPOINTS], dy[MAXPOINTS];
+   double d2x[MAXPOINTS], d2y[MAXPOINTS], d3x[MAXPOINTS], d3y[MAXPOINTS];
+   double t, t2, t3;
+-  register int j;
+-  register int k;
+-  register int nx;
+-  register int ny;
++  int j;
++  int k;
++  int nx;
++  int ny;
+   int lx, ly;
+   int length = 0;
+ 
+@@ -725,7 +728,7 @@ HGCurve(int *x,
+    * Solve for derivatives of the curve at each point separately for x and y
+    * (parametric).
+    */
+-  Paramaterize(x, y, h, numpoints);
++  Parameterize(x, y, h, numpoints);
+ 
+   /* closed curve */
+   if ((x[1] == x[numpoints]) && (y[1] == y[numpoints])) {
+@@ -771,15 +774,15 @@ HGCurve(int *x,
+  *----------------------------------------------------------------------------*/
+ 
+ void
+-Paramaterize(int x[],
++Parameterize(int x[],
+ 	     int y[],
+ 	     double h[],
+ 	     int n)
+ {
+-  register int dx;
+-  register int dy;
+-  register int i;
+-  register int j;
++  int dx;
++  int dy;
++  int i;
++  int j;
+   double u[MAXPOINTS];
+ 
+   for (i = 1; i <= n; ++i) {
+@@ -937,9 +940,9 @@ NaturalEndSpline(double h[],	/* parameterization */
+  *----------------------------------------------------------------------------*/
+ 
+ void
+-change(register int x,
+-       register int y,
+-       register int vis)
++change(int x,
++       int y,
++       int vis)
+ {
+   static int length = 0;
+ 
+@@ -967,17 +970,17 @@ void
+ HGtline(int x_1,
+ 	int y_1)
+ {
+-  register int x_0 = lastx;
+-  register int y_0 = lasty;
+-  register int dx;
+-  register int dy;
+-  register int oldcoord;
+-  register int res1;
+-  register int visible;
+-  register int res2;
+-  register int xinc;
+-  register int yinc;
+-  register int dotcounter;
++  int x_0 = lastx;
++  int y_0 = lasty;
++  int dx;
++  int dy;
++  int oldcoord;
++  int res1;
++  int visible;
++  int res2;
++  int xinc;
++  int yinc;
++  int dotcounter;
+ 
+   if (linmod == SOLID) {
+     line(x_1, y_1);
+@@ -1045,4 +1048,8 @@ HGtline(int x_1,
+     change(x_1, y_1, 0);
+ }
+ 
+-/* EOF */
++// Local Variables:
++// fill-column: 72
++// mode: C++
++// End:
++// vim: set cindent noexpandtab shiftwidth=2 textwidth=72:
+diff --git a/src/preproc/grn/hpoint.cpp b/src/preproc/grn/hpoint.cpp
+index b581cb0..77bfc9d 100644
+--- a/src/preproc/grn/hpoint.cpp
++++ b/src/preproc/grn/hpoint.cpp
+@@ -32,7 +32,7 @@ PTMakePoint(double x,
+ 	    double y,
+ 	    POINT **pplist)
+ {
+-  register POINT *pt;
++  POINT *pt;
+ 
+   if (Nullpoint(pt = *pplist)) {	/* empty list */
+     *pplist = (POINT *) malloc(sizeof(POINT));
+diff --git a/src/preproc/grn/main.cpp b/src/preproc/grn/main.cpp
+index 833fd60..d1887b6 100644
+--- a/src/preproc/grn/main.cpp
++++ b/src/preproc/grn/main.cpp
+@@ -88,7 +88,7 @@ extern "C" const char *Version_string;
+ 
+ extern void HGPrintElt(ELT *element, int baseline);
+ extern ELT *DBInit();
+-extern ELT *DBRead(register FILE *file);
++extern ELT *DBRead(FILE *file);
+ extern POINT *PTInit();
+ extern POINT *PTMakePoint(double x, double y, POINT **pplist);
+ 
+@@ -231,9 +231,9 @@ int compatibility_flag = FALSE;	/* TRUE if in compatibility mode */
+ 
+ void getres();
+ int doinput(FILE *fp);
+-void conv(register FILE *fp, int baseline);
++void conv(FILE *fp, int baseline);
+ void savestate();
+-int has_polygon(register ELT *elist);
++int has_polygon(ELT *elist);
+ void interpret(char *line);
+ 
+ 
+@@ -256,7 +256,7 @@ add_file(char **file,
+ {
+   if (*count >= *cur_size) {
+     *cur_size += FILE_SIZE_INCR;
+-    file = (char **) realloc((char **) file, *cur_size * sizeof(char *));
++    file = (char **) realloc(file, *cur_size * sizeof(char *));
+     if (file == NULL) {
+       fatal("unable to extend file array");
+     }
+@@ -283,9 +283,9 @@ main(int argc,
+ {
+   setlocale(LC_NUMERIC, "C");
+   program_name = argv[0];
+-  register FILE *fp;
+-  register int k;
+-  register char c;
++  FILE *fp;
++  int k;
++  char c;
+   int gfil = 0;
+   char **file = NULL;
+   int file_cur_size = INIT_FILE_SIZE;
+@@ -466,7 +466,7 @@ doinput(FILE *fp)
+ void
+ initpic()
+ {
+-  register int i;
++  int i;
+ 
+   for (i = 0; i < STYLES; i++) {	/* line thickness defaults */
+     thick[i] = defthick[i];
+@@ -511,12 +511,12 @@ initpic()
+  *----------------------------------------------------------------------------*/
+ 
+ void
+-conv(register FILE *fp,
++conv(FILE *fp,
+      int baseline)
+ {
+-  register FILE *gfp = NULL;	/* input file pointer */
+-  register int done = 0;	/* flag to remember if finished */
+-  register ELT *e;		/* current element pointer */
++  FILE *gfp = NULL;		/* input file pointer */
++  int done = 0;		/* flag to remember if finished */
++  ELT *e;			/* current element pointer */
+   ELT *PICTURE;			/* whole picture data base pointer */
+   double temp;			/* temporary calculating area */
+   /* POINT ptr; */		/* coordinates of a point to pass to 'mov' */
+@@ -543,7 +543,7 @@ conv(register FILE *fp,
+ 
+       if (!gremlinfile[0]) {
+ 	if (!setdefault)
+-	  error("at line %1: no picture filename.\n", baseline);
++	  error("no picture file name at line %1", baseline);
+ 	return;
+       }
+       char *path;
+@@ -577,7 +577,7 @@ conv(register FILE *fp,
+       }				/* here, troffscale is the */
+ 				/* picture's scaling factor */
+       if (pointscale) {
+-	register int i;		/* do pointscaling here, when */
++	int i;			/* do pointscaling here, when */
+ 				/* scale is known, before output */
+ 	for (i = 0; i < SIZES; i++)
+ 	  tsize[i] = (int) (troffscale * (double) tsize[i] + 0.5);
+@@ -700,7 +700,7 @@ conv(register FILE *fp,
+ void
+ savestate()
+ {
+-  register int i;
++  int i;
+ 
+   for (i = 0; i < STYLES; i++)	/* line thickness defaults */
+     defthick[i] = thick[i];
+@@ -761,8 +761,8 @@ interpret(char *line)
+ {
+   char str1[MAXINLINE];
+   char str2[MAXINLINE];
+-  register char *chr;
+-  register int i;
++  char *chr;
++  int i;
+   double par;
+ 
+   str2[0] = '\0';
+@@ -811,7 +811,7 @@ interpret(char *line)
+ 
+     if (str2[0] < '0') {
+   nofont:
+-      error("no fontname specified in line %1", linenum);
++      error("no font name specified in line %1", linenum);
+       break;
+     }
+     if (str1[1] == 't')
+@@ -935,7 +935,7 @@ interpret(char *line)
+  */
+ 
+ int
+-has_polygon(register ELT *elist)
++has_polygon(ELT *elist)
+ {
+   while (!DBNullelt(elist)) {
+     if (elist->type == POLYGON)
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-extended/groff/groff_1.22.4.bb b/poky/meta/recipes-extended/groff/groff_1.22.4.bb
index b281544..244c0e1 100644
--- a/poky/meta/recipes-extended/groff/groff_1.22.4.bb
+++ b/poky/meta/recipes-extended/groff/groff_1.22.4.bb
@@ -12,7 +12,8 @@
 	file://groff-not-search-fonts-on-build-host.patch \
 	file://0001-support-musl.patch \
 	file://0001-Include-config.h.patch \
-        file://0001-Make-manpages-mulitlib-identical.patch \
+	file://0001-Make-manpages-mulitlib-identical.patch \
+	file://0001-Fix-code-style-issues.patch \
 "
 
 SRC_URI[md5sum] = "08fb04335e2f5e73f23ea4c3adbf0c5f"
diff --git a/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.3.bb b/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.3.bb
index 8c6c207..f55e0b0 100644
--- a/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.3.bb
+++ b/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.3.bb
@@ -22,7 +22,7 @@
 EXTRA_OECONF = "--disable-gssapi"
 
 do_install:append() {
-	chown root:root ${D}${sysconfdir}/netconfig
+	test -e ${D}${sysconfdir}/netconfig && chown root:root ${D}${sysconfdir}/netconfig
 }
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/man-db/man-db_2.11.1.bb b/poky/meta/recipes-extended/man-db/man-db_2.11.2.bb
similarity index 96%
rename from poky/meta/recipes-extended/man-db/man-db_2.11.1.bb
rename to poky/meta/recipes-extended/man-db/man-db_2.11.2.bb
index 2d539c4..ca0cb1a 100644
--- a/poky/meta/recipes-extended/man-db/man-db_2.11.1.bb
+++ b/poky/meta/recipes-extended/man-db/man-db_2.11.2.bb
@@ -11,7 +11,7 @@
            file://99_mandb \
            file://0001-man-Move-local-variable-declaration-to-function-scop.patch \
            file://man_db.conf-avoid-multilib-install-file-conflict.patch"
-SRC_URI[sha256sum] = "2eabaa5251349847de9c9e43c634d986cbcc6f87642d1d9cb8608ec18487b6cc"
+SRC_URI[sha256sum] = "cffa1ee4e974be78646c46508e6dd2f37e7c589aaab2938cc1064f058fef9f8d"
 
 DEPENDS = "libpipeline gdbm groff-native base-passwd"
 RDEPENDS:${PN} += "base-passwd"
diff --git a/poky/meta/recipes-extended/man-pages/man-pages_6.01.bb b/poky/meta/recipes-extended/man-pages/man-pages_6.01.bb
deleted file mode 100644
index 1ad4ed1..0000000
--- a/poky/meta/recipes-extended/man-pages/man-pages_6.01.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Linux man-pages"
-DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
-SECTION = "console/utils"
-HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
-LICENSE = "GPL-2.0-or-later"
-
-LIC_FILES_CHKSUM = "file://README;md5=bf1faa9b0245e39a7c0c9690ffdf6e54"
-SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz"
-
-SRC_URI[sha256sum] = "c1e8bea88589f1a80b67dafd82fb98b018ddd7f7bfa594f8f79686258d26e784"
-
-inherit manpages
-
-MAN_PKG = "${PN}"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[manpages] = ""
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
-        oe_runmake install prefix=${prefix} DESTDIR=${D}
-}
-
-# Only deliveres man-pages so FILES:${PN} gets everything
-FILES:${PN}-doc = ""
-FILES:${PN} = "${mandir}/*"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE:${PN} = "crypt.3 crypt_r.3 getspnam.3 passwd.5"
-ALTERNATIVE_LINK_NAME[crypt.3] = "${mandir}/man3/crypt.3"
-ALTERNATIVE_LINK_NAME[crypt_r.3] = "${mandir}/man3/crypt_r.3"
-ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
-ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
diff --git a/poky/meta/recipes-extended/man-pages/man-pages_6.02.bb b/poky/meta/recipes-extended/man-pages/man-pages_6.02.bb
new file mode 100644
index 0000000..8f1eb38
--- /dev/null
+++ b/poky/meta/recipes-extended/man-pages/man-pages_6.02.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Linux man-pages"
+DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
+SECTION = "console/utils"
+HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
+LICENSE = "GPL-2.0-or-later & GPL-2.0-only & GPL-1.0-or-later & BSD-2-Clause & BSD-3-Clause & BSD-4-Clause & MIT"
+
+LIC_FILES_CHKSUM = "file://README;md5=26901408d8cfd6f6675f8b49daf9cc74 \
+                    file://LICENSES/BSD-2-Clause.txt;md5=d0f280d1058e77e66264a9b9e10e6c89 \
+                    file://LICENSES/BSD-3-Clause.txt;md5=71f739ef75581cae312e8c711bcdab16 \
+                    file://LICENSES/BSD-4-Clause-UC.txt;md5=1da3cf8ad50cd8d5d1de3cfc53196d01 \
+                    file://LICENSES/GPL-1.0-or-later.txt;md5=e5b7c80002ef72ab868b43ce47b65125 \
+                    file://LICENSES/GPL-2.0-only.txt;md5=3d26203303a722dedc6bf909d95ba815 \
+                    file://LICENSES/GPL-2.0-or-later.txt;md5=3d26203303a722dedc6bf909d95ba815 \
+                    file://LICENSES/Linux-man-pages-copyleft.txt;md5=173b960c686ff2d26f043ddaeb63f6ce \
+                    file://LICENSES/MIT.txt;md5=7dda4e90ded66ab88b86f76169f28663 \
+                   "
+SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz"
+
+SRC_URI[sha256sum] = "968def9e7055c9cbca9a4f21f79677b02ac8b0d2fa62ceea7bd8ef4dcc6cac41"
+
+inherit manpages
+
+MAN_PKG = "${PN}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[manpages] = ""
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+        oe_runmake install prefix=${prefix} DESTDIR=${D}
+}
+
+# Only deliveres man-pages so FILES:${PN} gets everything
+FILES:${PN}-doc = ""
+FILES:${PN} = "${mandir}/*"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "crypt.3 crypt_r.3 getspnam.3 passwd.5"
+ALTERNATIVE_LINK_NAME[crypt.3] = "${mandir}/man3/crypt.3"
+ALTERNATIVE_LINK_NAME[crypt_r.3] = "${mandir}/man3/crypt_r.3"
+ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
+ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
diff --git a/poky/meta/recipes-extended/mdadm/files/0001-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch b/poky/meta/recipes-extended/mdadm/files/0001-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch
new file mode 100644
index 0000000..9e3a30b
--- /dev/null
+++ b/poky/meta/recipes-extended/mdadm/files/0001-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch
@@ -0,0 +1,52 @@
+From 82c893bb9e01f914a6bdef1bef943af746cfc3e1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Jan 2023 12:42:18 -0800
+Subject: [PATCH] Define alignof using _Alignof when using C11 or newer
+
+WG14 N2350 made very clear that it is an UB having type definitions
+within "offsetof" [1]. This patch enhances the implementation of macro
+alignof_slot to use builtin "_Alignof" to avoid undefined behavior on
+when using std=c11 or newer
+
+clang 16+ has started to flag this [2]
+
+Fixes build when using -std >= gnu11 and using clang16+
+
+Older compilers gcc < 4.9 or clang < 8 has buggy _Alignof even though it
+may support C11, exclude those compilers too
+
+[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm
+[2] https://reviews.llvm.org/D133574
+
+Upstream-Status: Submitted [https://lore.kernel.org/linux-raid/20230118083236.24418-1-raj.khem@gmail.com/T/#u]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sha1.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/sha1.c b/sha1.c
+index 89b32f4..1e4ad5d 100644
+--- a/sha1.c
++++ b/sha1.c
+@@ -229,7 +229,17 @@ sha1_process_bytes (const void *buffer, size_t len, struct sha1_ctx *ctx)
+   if (len >= 64)
+     {
+ #if !_STRING_ARCH_unaligned
+-# define alignof(type) offsetof (struct { char c; type x; }, x)
++/* GCC releases before GCC 4.9 had a bug in _Alignof.  See GCC bug 52023
++   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
++   clang versions < 8.0.0 have the same bug.  */
++# if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
++      || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
++   && !defined __clang__) \
++      || (defined __clang__ && __clang_major__ < 8))
++#  define alignof(type) offsetof (struct { char c; type x; }, x)
++# else
++#  define alignof(type) _Alignof(type)
++# endif
+ # define UNALIGNED_P(p) (((size_t) p) % alignof (sha1_uint32) != 0)
+       if (UNALIGNED_P (buffer))
+ 	while (len > 64)
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb b/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb
index 7298860..1c43975 100644
--- a/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb
+++ b/poky/meta/recipes-extended/mdadm/mdadm_4.2.bb
@@ -25,6 +25,7 @@
            file://0001-Fix-parsing-of-r-in-monitor-manager-mode.patch \
            file://0001-Makefile-install-mdcheck.patch \
            file://0001-restripe.c-Use-_FILE_OFFSET_BITS-to-enable-largefile.patch \
+           file://0001-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch \
            "
 
 SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d"
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng/0001-test-float-Make-variables-global.patch b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-test-float-Make-variables-global.patch
new file mode 100644
index 0000000..2e598ca
--- /dev/null
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-test-float-Make-variables-global.patch
@@ -0,0 +1,34 @@
+From 958a86069c8d0149969b5c32212a28009c4a9ded Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 21 Jan 2023 23:18:18 -0800
+Subject: [PATCH] test-float: Make variables global
+
+Latest clang ( clang 16+ ) is able to optimize everything out when -O2 is used and as
+a result build succeeds and test output comes out to be wrong. Therefore
+make the variables global, so clang does not optimize away the functions
+
+Upstream-Status: Backport [https://github.com/ColinIanKing/stress-ng/commit/e299eb60a3a029e975304cc43045aea6ab1fad70]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ test/test-float.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/test/test-float.c b/test/test-float.c
+index d2800cd3..ad5503c3 100644
+--- a/test/test-float.c
++++ b/test/test-float.c
+@@ -61,10 +61,9 @@
+ /* Avoid implicit int in the definition of test even if FLOAT is not known. */
+ typedef FLOAT float_type;
+ 
++FLOAT a = 0.0, b = 0.0, c = 0.0, d = 0.0;
+ static float_type HOT OPTIMIZE3 test(void)
+ {
+-	FLOAT a = 0.0, b = 0.0, c = 0.0, d = 0.0;
+-
+ 	float_ops(FLOAT, a, b, c, d, sin, cos);
+ 	float_ops(FLOAT, a, b, c, d, sinl, cosl);
+ 
+-- 
+2.39.1
+
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng_0.15.01.bb b/poky/meta/recipes-extended/stress-ng/stress-ng_0.15.02.bb
similarity index 88%
rename from poky/meta/recipes-extended/stress-ng/stress-ng_0.15.01.bb
rename to poky/meta/recipes-extended/stress-ng/stress-ng_0.15.02.bb
index 0d95cad..75400f5 100644
--- a/poky/meta/recipes-extended/stress-ng/stress-ng_0.15.01.bb
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng_0.15.02.bb
@@ -6,8 +6,9 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https;branch=master \
+           file://0001-test-float-Make-variables-global.patch \
            file://0001-Pass-LD_GOLD-1-via-makefile-to-enable-gold-linker.patch"
-SRCREV = "8c7c3d95555c50148470553b55477db895a4f1ad"
+SRCREV = "4164f6842c712c2d9a13619c3c70fd35d8d02cdb"
 S = "${WORKDIR}/git"
 
 DEPENDS = "coreutils-native libbsd"
diff --git a/poky/meta/recipes-extended/xz/xz_5.4.0.bb b/poky/meta/recipes-extended/xz/xz_5.4.1.bb
similarity index 95%
rename from poky/meta/recipes-extended/xz/xz_5.4.0.bb
rename to poky/meta/recipes-extended/xz/xz_5.4.1.bb
index 75b7635..71bf4b5 100644
--- a/poky/meta/recipes-extended/xz/xz_5.4.0.bb
+++ b/poky/meta/recipes-extended/xz/xz_5.4.1.bb
@@ -25,7 +25,7 @@
                     "
 
 SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz"
-SRC_URI[sha256sum] = "7471ef5991f690268a8f2be019acec2e0564b7b233ca40035f339fe9a07f830b"
+SRC_URI[sha256sum] = "e4b0f81582efa155ccf27bb88275254a429d44968e488fc94b806f2a61cd3e22"
 UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
 
 CACHED_CONFIGUREVARS += "gl_cv_posix_shell=/bin/sh"
