From 2e52de40d2e028707e5c20d55805fe616c106b15 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20M=C3=A9lotte?= Date: Tue, 7 Sep 2021 14:07:48 +0200 Subject: [PATCH] package/x11r7/xserver_xorg-server: fix building on mips with GCC10 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- ...-define-inb-outb-and-friends-on-mips.patch | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 package/x11r7/xserver_xorg-server/0006-compiler.h-don-t-define-inb-outb-and-friends-on-mips.patch 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 +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 +--- + 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 + -- 2.30.2