[PATCH] x86: Don't declare __force_order in kaslr_64.c

From: H.J. Lu
Date: Fri Jan 24 2020 - 13:45:11 EST


On Fri, Jan 24, 2020 at 10:39 AM H.J. Lu <hjl.tools@xxxxxxxxx> wrote:
>
> On Fri, Jan 24, 2020 at 10:24 AM Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
> >
> >
> >
> > > On Jan 24, 2020, at 10:18 AM, H.J. Lu <hjl.tools@xxxxxxxxx> wrote:
> > >
> > > ïGCC 10 changed the default to -fno-common, which leads to
> > >
> > > LD arch/x86/boot/compressed/vmlinux
> > > ld: arch/x86/boot/compressed/pgtable_64.o:(.bss+0x0): multiple definition of `__force_order'; arch/x86/boot/compressed/kaslr_64.o:(.bss+0x0): first defined here
> > > make[2]: *** [arch/x86/boot/compressed/Makefile:119: arch/x86/boot/compressed/vmlinux] Error 1
> > >
> > > Since __force_order is already provided in pgtable_64.c, there is no
> > > need to declare __force_order in kaslr_64.c.
> >
> > Why does anything actually define that variable? Surely any actual references are just an outright bug. Is it needed for LTO?
>
> It is needed by GCC 10 without LTO.
>

This updated patch fixed a typo in Subject: "care" -> "declare".


--
H.J.
From c8c26194cf5a344cd53763eaaf16c3ab609736f4 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 16 Jan 2020 12:46:51 -0800
Subject: [PATCH] x86: Don't declare __force_order in kaslr_64.c

GCC 10 changed the default to -fno-common, which leads to

LD arch/x86/boot/compressed/vmlinux
ld: arch/x86/boot/compressed/pgtable_64.o:(.bss+0x0): multiple definition of `__force_order'; arch/x86/boot/compressed/kaslr_64.o:(.bss+0x0): first defined here
make[2]: *** [arch/x86/boot/compressed/Makefile:119: arch/x86/boot/compressed/vmlinux] Error 1

Since __force_order is already provided in pgtable_64.c, there is no
need to declare __force_order in kaslr_64.c.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com>
---
arch/x86/boot/compressed/kaslr_64.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/arch/x86/boot/compressed/kaslr_64.c b/arch/x86/boot/compressed/kaslr_64.c
index 748456c365f4..9557c5a15b91 100644
--- a/arch/x86/boot/compressed/kaslr_64.c
+++ b/arch/x86/boot/compressed/kaslr_64.c
@@ -29,9 +29,6 @@
#define __PAGE_OFFSET __PAGE_OFFSET_BASE
#include "../../mm/ident_map.c"

-/* Used by pgtable.h asm code to force instruction serialization. */
-unsigned long __force_order;
-
/* Used to track our page table allocation area. */
struct alloc_pgt_data {
unsigned char *pgt_buf;
--
2.24.1