[Buildroot] [git commit] package/x11r7/xserver_xorg-server: fix building on mips with GCC10
From: Arnout Vandecappelle (Essensium/Mind) <hidden>
Date: 2021-09-19 12:32:46
Subsystem:
the rest · Maintainer:
Linus Torvalds
commit: https://git.buildroot.net/buildroot/commit/?id=2e52de40d2e028707e5c20d55805fe616c106b15 branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master Port the following upstream commit: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/591/diffs?commit_id=0148a15da1616a868d71abe1b56e3f28cc79533c This fixes the following build error on mips with GCC10: CCLD libint10.la buildroot/output/host/lib/gcc/mips64el-buildroot-linux-gnu/10.3.0/../../../../mips64el-buildroot-linux-gnu/bin/ld: .libs/helper_mem.o:(.bss+0x0): multiple definition of `IOPortBase'; .libs/helper_exec.o:(.bss+0x0): first defined here Signed-off-by: Rapha��l M��lotte <redacted> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <redacted> --- ...don-t-define-inb-outb-and-friends-on-mips.patch | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+)
diff --git a/package/x11r7/xserver_xorg-server/0006-compiler.h-don-t-define-inb-outb-and-friends-on-mips.patch b/package/x11r7/xserver_xorg-server/0006-compiler.h-don-t-define-inb-outb-and-friends-on-mips.patch
new file mode 100644
index 0000000000..469ca7e3fc
--- /dev/null
+++ b/package/x11r7/xserver_xorg-server/0006-compiler.h-don-t-define-inb-outb-and-friends-on-mips.patch@@ -0,0 +1,73 @@ +From de5e24b5036a1a5a877f8f30169e3497d0e296d6 Mon Sep 17 00:00:00 2001 +From: Julien Cristau <jcristau@debian.org> +Date: Wed, 6 Jan 2021 10:20:53 +0100 +Subject: [PATCH] compiler.h: don't define inb/outb and friends on mips +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The definition relies on IOPortBase, which is only ever set in +hw/xfree86/os-support/bsd/arm_video.c + +This caused build failures on linux/mips with GCC 10, due to this +change (from https://gcc.gnu.org/gcc-10/changes.html#c): + +"GCC now defaults to -fno-common. As a result, global variable accesses +are more efficient on various targets. In C, global variables with +multiple tentative definitions now result in linker errors. With +-fcommon such definitions are silently merged during linking." + +As a result anything including compiler.h would get its own definition +of IOPortBase and the linker would error out. + +Signed-off-by: Rapha��l M��lotte <raphael.melotte@mind.be> +--- + hw/xfree86/common/compiler.h | 8 ++------ + hw/xfree86/os-support/bsd/arm_video.c | 3 +++ + 2 files changed, 5 insertions(+), 6 deletions(-) + +diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h +index 2b2008b3f..eb788d3fd 100644 +--- a/hw/xfree86/common/compiler.h ++++ b/hw/xfree86/common/compiler.h +@@ -518,14 +518,10 @@ xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset, + barrier(); + } + +-#elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__)) +-#if defined(__arm32__) || defined(__mips64) ++#elif defined(__arm32__) && !defined(__linux__) + #define PORT_SIZE long +-#else +-#define PORT_SIZE short +-#endif + +-_X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ ++extern _X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ + + static __inline__ void + outb(unsigned PORT_SIZE port, unsigned char val) +diff --git a/hw/xfree86/os-support/bsd/arm_video.c b/hw/xfree86/os-support/bsd/arm_video.c +index dd1020e33..180d70543 100644 +--- a/hw/xfree86/os-support/bsd/arm_video.c ++++ b/hw/xfree86/os-support/bsd/arm_video.c +@@ -65,6 +65,7 @@ + #include "xf86Priv.h" + #include "xf86_OSlib.h" + #include "xf86OSpriv.h" ++#include "compiler.h" + + #if defined(__NetBSD__) && !defined(MAP_FILE) + #define MAP_FLAGS MAP_SHARED +@@ -162,6 +163,8 @@ xf86DisableIO() + + #if defined(USE_ARC_MMAP) || defined(__arm32__) + ++unsigned int IOPortBase; ++ + Bool + xf86EnableIO() + { +-- +2.32.0 +