diff --git a/meta/recipes-core/systemd/systemd/0004-journal-prepend-the-sysroot-to-libaudit-s-includedir.patch b/meta/recipes-core/systemd/systemd/0004-journal-prepend-the-sysroot-to-libaudit-s-includedir.patch
new file mode 100644
index 0000000000..5212577955
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0004-journal-prepend-the-sysroot-to-libaudit-s-includedir.patch
@@ -0,0 +1,63 @@
+From 492b3f38c3cea1054bffe5f9e203dcf73ee8e981 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Wed, 21 Oct 2026 05:09:48 +0900
+Subject: [PATCH] journal: prepend the sysroot to libaudit's includedir if
+ pkg-config did not
+
+The audit type list generator builds its -I flag from the includedir
+variable of audit.pc. When cross-compiling, that variable is not
+necessarily relocated into the sysroot: with the freedesktop.org
+sysroot rules, pkg-config applies PKG_CONFIG_SYSROOT_DIR only to the
+-I/-L flags in Cflags/Libs, and returns variables as is. pkgconf
+follows these rules when PKG_CONFIG_FDO_SYSROOT_RULES is set, which
+OpenEmbedded does in its pkg-config wrapper.
+
+The includedir then yields the unprefixed /usr/include. GCC does not
+apply --sysroot to a plain -I, so the build host's headers get picked
+up, and toolchains built with -Werror=poison-system-directories, as
+OpenEmbedded's is, reject it:
+
+  cc1: error: include location "/usr/include" is unsafe for cross-compilation [-Werror=poison-system-directories]
+
+Query pc_sysrootdir, which pkgconf sets from PKG_CONFIG_SYSROOT_DIR,
+and prepend it to includedir unless includedir is already under it
+(pkgconf's default mode already relocates variables). This does not
+single out any particular directory, so a customized includedir is
+handled the same way.
+
+Follow-up for 0d06dbabc364fe58e4bd1b9696f3c5b823620dbc (v262).
+
+Co-authored-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
+
+Upstream-Status: Backport [https://github.com/systemd/systemd/commit/492b3f38c3cea1054bffe5f9e203dcf73ee8e981]
+Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
+---
+ src/journal/meson.build | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/meson.build b/src/journal/meson.build
+index a27b359b61..d6bc742b3d 100644
+--- a/src/journal/meson.build
++++ b/src/journal/meson.build
+@@ -33,9 +33,17 @@ systemd_journald_export_sources += journald_gperf_c
+ generate_audit_type_list = files('generate-audit_type-list.sh')
+ generate_audit_type_command = [env, 'bash', generate_audit_type_list, cpp]
+ if libaudit.found()
++        # With the freedesktop.org sysroot rules (e.g. PKG_CONFIG_FDO_SYSROOT_RULES=1, as set by
++        # OpenEmbedded), pkg-config does not prepend the sysroot to variables. Do it ourselves.
++        libaudit_includedir = libaudit.get_variable('includedir')
++        libaudit_sysroot = libaudit.get_variable(pkgconfig : 'pc_sysrootdir', default_value : '')
++        if libaudit_sysroot not in ['', '/'] and not libaudit_includedir.startswith(libaudit_sysroot + '/')
++                libaudit_includedir = libaudit_sysroot + libaudit_includedir
++        endif
++
+         generate_audit_type_command += [
+                 '-include', 'libaudit.h',
+-                '-I' + libaudit.get_variable('includedir'),
++                '-I' + libaudit_includedir,
+         ]
+ endif
+ generate_audit_type_command += system_include_args
+-- 
+2.43.0
+
diff --git a/meta/recipes-core/systemd/systemd_262.bb b/meta/recipes-core/systemd/systemd_262.bb
index e1d64a5c94..d70053182f 100644
--- a/meta/recipes-core/systemd/systemd_262.bb
+++ b/meta/recipes-core/systemd/systemd_262.bb
@@ -37,6 +37,7 @@ SRC_URI += "file://touchscreen.rules \
            file://coredumpd-kernel-version.conf \
            file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
            file://0003-Do-not-create-var-log-README.patch \
+           file://0004-journal-prepend-the-sysroot-to-libaudit-s-includedir.patch \
            "
 
 PAM_PLUGINS = " \
