diff --git a/0001-sizeof-bool-used-by-gcc-depends-on-arch.patch b/0001-sizeof-bool-used-by-gcc-depends-on-arch.patch
new file mode 100644
index 00000000..2d5540a6
--- /dev/null
+++ b/0001-sizeof-bool-used-by-gcc-depends-on-arch.patch
@@ -0,0 +1,129 @@
+This patch includes changes of the upstream commits
+6017365a1d0c1c78fc34a7da63768ee5df5da511 and
+4f4b92ba7ae9c56cb0f181d5f95d709e085b8bd5 as well as the fix for the size
+of the gcc builtin type bool also known as _Bool from the include header
+stdbool.h.
+
+---
+ src/libsystemd/sd-bus/bus-message.c | 19 +++++++++++++++----
+ src/libsystemd/sd-bus/bus-protocol.h | 1 +
+ src/shared/architecture.h | 22 ++++++++++++++++------
+ 3 files changed, 32 insertions(+), 10 deletions(-)
+
+--- src/libsystemd/sd-bus/bus-message.c
++++ src/libsystemd/sd-bus/bus-message.c 2014-09-17 15:55:49.830236907 +0000
+@@ -2259,14 +2259,25 @@ int bus_message_append_ap(
+ r = sd_bus_message_append_basic(m, *t, &x);
+ break;
+ }
++ case SD_BUS_TYPE_BOOLEAN: {
++ if (sizeof(bool) == sizeof(uint32_t)) {
++ uint32_t x;
++
++ x = va_arg(ap, uint32_t);
++ r = sd_bus_message_append_basic(m, *t, &x);
++ } else {
++ uint8_t x;
+
+- case SD_BUS_TYPE_BOOLEAN:
++ x = (uint8_t) va_arg(ap, int);
++ r = sd_bus_message_append_basic(m, *t, &x);
++ }
++ break;
++ }
+ case SD_BUS_TYPE_INT32:
+ case SD_BUS_TYPE_UINT32:
+ case SD_BUS_TYPE_UNIX_FD: {
+ uint32_t x;
+
+- /* We assume a boolean is the same as int32_t */
+ assert_cc(sizeof(int32_t) == sizeof(int));
+
+ x = va_arg(ap, uint32_t);
+@@ -3229,7 +3240,7 @@ _public_ int sd_bus_message_read_basic(s
+
+ case SD_BUS_TYPE_BOOLEAN:
+ if (p)
+- *(int*) p = !!*(uint8_t*) q;
++ *(bool*) p = !!*(uint8_t*) q;
+ break;
+
+ case SD_BUS_TYPE_INT16:
+@@ -3339,7 +3350,7 @@ _public_ int sd_bus_message_read_basic(s
+
+ case SD_BUS_TYPE_BOOLEAN:
+ if (p)
+- *(int*) p = !!*(uint32_t*) q;
++ *(bool*) p = !!*(uint32_t*) q;
+ break;
+
+ case SD_BUS_TYPE_INT16:
+--- src/libsystemd/sd-bus/bus-protocol.h
++++ src/libsystemd/sd-bus/bus-protocol.h 2014-09-17 13:28:12.582235580 +0000
+@@ -21,6 +21,7 @@
+ along with systemd; If not, see .
+ ***/
+
++#include
+
+ /* Endianness */
+
+--- src/shared/architecture.h
++++ src/shared/architecture.h 2014-09-17 13:31:46.710735633 +0000
+@@ -21,6 +21,8 @@
+ along with systemd; If not, see .
+ ***/
+
++#include
++
+ #include "util.h"
+
+ /* A cleaned up architecture definition */
+@@ -64,13 +66,13 @@ Architecture uname_architecture(void);
+ #elif defined(__i386__)
+ # define native_architecture() ARCHITECTURE_X86
+ #elif defined(__powerpc64__)
+-# if defined(WORDS_BIGENDIAN)
++# if __BYTE_ORDER == __BIG_ENDIAN
+ # define native_architecture() ARCHITECTURE_PPC64
+ # else
+ # define native_architecture() ARCHITECTURE_PPC64_LE
+ # endif
+ #elif defined(__powerpc__)
+-# if defined(WORDS_BIGENDIAN)
++# if __BYTE_ORDER == __BIG_ENDIAN
+ # define native_architecture() ARCHITECTURE_PPC
+ # else
+ # define native_architecture() ARCHITECTURE_PPC_LE
+@@ -90,19 +92,27 @@ Architecture uname_architecture(void);
+ #elif defined(__sparc__)
+ # define native_architecture() ARCHITECTURE_SPARC
+ #elif defined(__mips64__)
+-# define native_architecture() ARCHITECTURE_MIPS64
++# if __BYTE_ORDER == __BIG_ENDIAN
++# define native_architecture() ARCHITECTURE_MIPS64
++# else
++# define native_architecture() ARCHITECTURE_MIPS64_LE
++# endif
+ #elif defined(__mips__)
+-# define native_architecture() ARCHITECTURE_MIPS
++# if __BYTE_ORDER == __BIG_ENDIAN
++# define native_architecture() ARCHITECTURE_MIPS
++# else
++# define native_architecture() ARCHITECTURE_MIPS_LE
++#endif
+ #elif defined(__alpha__)
+ # define native_architecture() ARCHITECTURE_ALPHA
+ #elif defined(__aarch64__)
+-# if defined(WORDS_BIGENDIAN)
++# if __BYTE_ORDER == __BIG_ENDIAN
+ # define native_architecture() ARCHITECTURE_ARM64_BE
+ # else
+ # define native_architecture() ARCHITECTURE_ARM64
+ # endif
+ #elif defined(__arm__)
+-# if defined(WORDS_BIGENDIAN)
++# if __BYTE_ORDER == __BIG_ENDIAN
+ # define native_architecture() ARCHITECTURE_ARM_BE
+ # else
+ # define native_architecture() ARCHITECTURE_ARM
diff --git a/systemd-mini.changes b/systemd-mini.changes
index 6299a5c6..2bc0fa3f 100644
--- a/systemd-mini.changes
+++ b/systemd-mini.changes
@@ -1,3 +1,10 @@
+-------------------------------------------------------------------
+Wed Sep 17 16:02:33 UTC 2014 - werner@suse.de
+
+- Add patch 0001-sizeof-bool-used-by-gcc-depends-on-arch.patch to
+ fix for the size of the gcc builtin type bool also known as _Bool
+ from the include header stdbool.h.
+
-------------------------------------------------------------------
Tue Sep 16 10:45:33 UTC 2014 - werner@suse.de
diff --git a/systemd-mini.spec b/systemd-mini.spec
index 09ccb39c..297191ae 100644
--- a/systemd-mini.spec
+++ b/systemd-mini.spec
@@ -856,6 +856,8 @@ Patch412: 0008-core-smack-setup-Actually-allow-for-succesfully-load.patch
Patch413: 0009-journal-do-not-leak-mmaps-on-OOM.patch
# PATCH-FIX-UPSTREAM added at 2014/09/16
Patch414: 0010-manager-use-correct-cleanup-function.patch
+# PATCH-FIX-SUSE Be aware that the size of the type bool may vary
+Patch415: 0001-sizeof-bool-used-by-gcc-depends-on-arch.patch
# UDEV PATCHES
# ============
@@ -1596,6 +1598,7 @@ cp %{SOURCE7} m4/
%patch412 -p0
%patch413 -p0
%patch414 -p0
+%patch415 -p0
# udev patches
%patch1001 -p1
diff --git a/systemd.changes b/systemd.changes
index 6299a5c6..2bc0fa3f 100644
--- a/systemd.changes
+++ b/systemd.changes
@@ -1,3 +1,10 @@
+-------------------------------------------------------------------
+Wed Sep 17 16:02:33 UTC 2014 - werner@suse.de
+
+- Add patch 0001-sizeof-bool-used-by-gcc-depends-on-arch.patch to
+ fix for the size of the gcc builtin type bool also known as _Bool
+ from the include header stdbool.h.
+
-------------------------------------------------------------------
Tue Sep 16 10:45:33 UTC 2014 - werner@suse.de
diff --git a/systemd.spec b/systemd.spec
index 17b43729..059216da 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -851,6 +851,8 @@ Patch412: 0008-core-smack-setup-Actually-allow-for-succesfully-load.patch
Patch413: 0009-journal-do-not-leak-mmaps-on-OOM.patch
# PATCH-FIX-UPSTREAM added at 2014/09/16
Patch414: 0010-manager-use-correct-cleanup-function.patch
+# PATCH-FIX-SUSE Be aware that the size of the type bool may vary
+Patch415: 0001-sizeof-bool-used-by-gcc-depends-on-arch.patch
# UDEV PATCHES
# ============
@@ -1591,6 +1593,7 @@ cp %{SOURCE7} m4/
%patch412 -p0
%patch413 -p0
%patch414 -p0
+%patch415 -p0
# udev patches
%patch1001 -p1