diff mbox series

sandbox: cleanup linker scripts and sections

Message ID 20240614065357.182446-1-ilias.apalodimas@linaro.org
State Superseded
Headers show
Series sandbox: cleanup linker scripts and sections | expand

Commit Message

Ilias Apalodimas June 14, 2024, 6:53 a.m. UTC
commit 6e2228fb052b ("Merge patch series "Clean up arm linker scripts"")
was cleaning up linker scripts for armv7 and v8 in a similar fashion.

Several commits in the past -- e.g
commit d0b5d9da5de2 ("arm: make _end compiler-generated")
was moving symbols to be compiler generated. They were defined as c
variables in its own section to force the compiler emit relative a
reference. However, defining those in the linker script will do the
same thing since [0].

So let's remove the special sections from the linker scripts, the
variable definitions from sections.c, and define them as a symbols.
It's worth noting that the linker was discarding the symbols in the
older binary completely.

- new binary
$~ aarch64-linux-gnu-readelf -sW u-boot | grep efi_runtim
   246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
  3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
  6359: 00000000000dedff   217 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
  7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
  8869: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_stop
  9159: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_stop
  9410: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_start
 10137: 00000000005981bd     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
 10470: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_start

- old binary
$~ aarch64-linux-gnu-readelf -sW u-boot.old | grep efi_runtim
   246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
  3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
  6359: 00000000000dedff   221 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
  7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
 10135: 0000000000598320     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54

$~ bloat-o-meter u-bool.old u-boot
add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-4 (3)
Function                                     old     new   delta
efi_memory_init                              343     350      +7
efi_runtime_relocate                         221     217      -4
Total: Before=2009902, After=2009905, chg +0.00%

[0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---
 arch/sandbox/cpu/u-boot.lds | 20 ++++----------------
 arch/sandbox/lib/Makefile   |  2 +-
 arch/sandbox/lib/sections.c | 13 -------------
 3 files changed, 5 insertions(+), 30 deletions(-)
 delete mode 100644 arch/sandbox/lib/sections.c

--
2.45.1

Comments

Ilias Apalodimas June 14, 2024, 7 a.m. UTC | #1
Hi Simon,

I just noticed that the sections in sandbox were discarded because
their definition was wrong to begin with.
They were defined with an extra _ -- ___efi_runtime_rel_start instead
of __efi_runtime_rel_start.

Let me know if you want me to respin this with a Fixes tag

Regards
/Ilias

On Fri, 14 Jun 2024 at 09:54, Ilias Apalodimas
<ilias.apalodimas@linaro.org> wrote:
>
> commit 6e2228fb052b ("Merge patch series "Clean up arm linker scripts"")
> was cleaning up linker scripts for armv7 and v8 in a similar fashion.
>
> Several commits in the past -- e.g
> commit d0b5d9da5de2 ("arm: make _end compiler-generated")
> was moving symbols to be compiler generated. They were defined as c
> variables in its own section to force the compiler emit relative a
> reference. However, defining those in the linker script will do the
> same thing since [0].
>
> So let's remove the special sections from the linker scripts, the
> variable definitions from sections.c, and define them as a symbols.
> It's worth noting that the linker was discarding the symbols in the
> older binary completely.
>
> - new binary
> $~ aarch64-linux-gnu-readelf -sW u-boot | grep efi_runtim
>    246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
>   3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
>   6359: 00000000000dedff   217 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
>   7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
>   8869: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_stop
>   9159: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_stop
>   9410: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_start
>  10137: 00000000005981bd     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
>  10470: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_start
>
> - old binary
> $~ aarch64-linux-gnu-readelf -sW u-boot.old | grep efi_runtim
>    246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
>   3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
>   6359: 00000000000dedff   221 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
>   7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
>  10135: 0000000000598320     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
>
> $~ bloat-o-meter u-bool.old u-boot
> add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-4 (3)
> Function                                     old     new   delta
> efi_memory_init                              343     350      +7
> efi_runtime_relocate                         221     217      -4
> Total: Before=2009902, After=2009905, chg +0.00%
>
> [0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> ---
>  arch/sandbox/cpu/u-boot.lds | 20 ++++----------------
>  arch/sandbox/lib/Makefile   |  2 +-
>  arch/sandbox/lib/sections.c | 13 -------------
>  3 files changed, 5 insertions(+), 30 deletions(-)
>  delete mode 100644 arch/sandbox/lib/sections.c
>
> diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
> index 52f13af3742f..6ee8095b6cbb 100644
> --- a/arch/sandbox/cpu/u-boot.lds
> +++ b/arch/sandbox/cpu/u-boot.lds
> @@ -19,30 +19,18 @@ SECTIONS
>                 *(_u_boot_sandbox_getopt_end)
>         }
>
> -       efi_runtime_start : {
> -               *(___efi_runtime_start)
> -       }
> -
>         efi_runtime : {
> +                __efi_runtime_start = .;
>                 *(efi_runtime_text)
>                 *(efi_runtime_data)
> -       }
> -
> -       efi_runtime_stop : {
> -               *(___efi_runtime_stop)
> -       }
> -
> -       efi_runtime_rel_start : {
> -               *(___efi_runtime_rel_start)
> +                __efi_runtime_stop = .;
>         }
>
>         efi_runtime_rel : {
> +                __efi_runtime_rel_start = .;
>                 *(.relefi_runtime_text)
>                 *(.relefi_runtime_data)
> -       }
> -
> -       efi_runtime_rel_stop : {
> -               *(___efi_runtime_rel_stop)
> +                __efi_runtime_rel_stop = .;
>         }
>
>         .dynsym :
> diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
> index a2bc5a7ee60f..d7d15a50bb6c 100644
> --- a/arch/sandbox/lib/Makefile
> +++ b/arch/sandbox/lib/Makefile
> @@ -5,7 +5,7 @@
>  # (C) Copyright 2002-2006
>  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>
> -obj-y  += fdt_fixup.o interrupts.o sections.o
> +obj-y                  += fdt_fixup.o interrupts.o
>  obj-$(CONFIG_PCI)      += pci_io.o
>  obj-$(CONFIG_CMD_BOOTM) += bootm.o
>  obj-$(CONFIG_CMD_BOOTZ) += bootm.o
> diff --git a/arch/sandbox/lib/sections.c b/arch/sandbox/lib/sections.c
> deleted file mode 100644
> index 2f2f3fbfdb86..000000000000
> --- a/arch/sandbox/lib/sections.c
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -/*
> - * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
> - *
> - */
> -#include <linux/compiler.h>
> -
> -char __efi_runtime_start[0] __section("___efi_runtime_start");
> -char __efi_runtime_stop[0] __section("___efi_runtime_stop");
> -char __efi_runtime_rel_start[0]
> -               __section("___efi_runtime_rel_start");
> -char __efi_runtime_rel_stop[0]
> -               __section("___efi_runtime_rel_stop");
> --
> 2.45.1
>
Heinrich Schuchardt June 14, 2024, 9:06 a.m. UTC | #2
On 14.06.24 08:53, Ilias Apalodimas wrote:
> commit 6e2228fb052b ("Merge patch series "Clean up arm linker scripts"")
> was cleaning up linker scripts for armv7 and v8 in a similar fashion.
>
> Several commits in the past -- e.g
> commit d0b5d9da5de2 ("arm: make _end compiler-generated")
> was moving symbols to be compiler generated. They were defined as c
> variables in its own section to force the compiler emit relative a
> reference. However, defining those in the linker script will do the
> same thing since [0].
>
> So let's remove the special sections from the linker scripts, the
> variable definitions from sections.c, and define them as a symbols.
> It's worth noting that the linker was discarding the symbols in the
> older binary completely.
>
> - new binary
> $~ aarch64-linux-gnu-readelf -sW u-boot | grep efi_runtim
>     246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
>    3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
>    6359: 00000000000dedff   217 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
>    7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
>    8869: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_stop
>    9159: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_stop
>    9410: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_start
>   10137: 00000000005981bd     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
>   10470: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_start
>
> - old binary
> $~ aarch64-linux-gnu-readelf -sW u-boot.old | grep efi_runtim
>     246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
>    3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
>    6359: 00000000000dedff   221 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
>    7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
>   10135: 0000000000598320     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
>
> $~ bloat-o-meter u-bool.old u-boot
> add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-4 (3)
> Function                                     old     new   delta
> efi_memory_init                              343     350      +7
> efi_runtime_relocate                         221     217      -4
> Total: Before=2009902, After=2009905, chg +0.00%
>
> [0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>

Tested with sandbox_defconfig on amd64, arm64, riscv64.

Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>

> ---
>   arch/sandbox/cpu/u-boot.lds | 20 ++++----------------
>   arch/sandbox/lib/Makefile   |  2 +-
>   arch/sandbox/lib/sections.c | 13 -------------
>   3 files changed, 5 insertions(+), 30 deletions(-)
>   delete mode 100644 arch/sandbox/lib/sections.c
>
> diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
> index 52f13af3742f..6ee8095b6cbb 100644
> --- a/arch/sandbox/cpu/u-boot.lds
> +++ b/arch/sandbox/cpu/u-boot.lds
> @@ -19,30 +19,18 @@ SECTIONS
>   		*(_u_boot_sandbox_getopt_end)
>   	}
>
> -	efi_runtime_start : {
> -		*(___efi_runtime_start)
> -	}
> -
>   	efi_runtime : {
> +                __efi_runtime_start = .;
>   		*(efi_runtime_text)
>   		*(efi_runtime_data)
> -	}
> -
> -	efi_runtime_stop : {
> -		*(___efi_runtime_stop)
> -	}
> -
> -	efi_runtime_rel_start : {
> -		*(___efi_runtime_rel_start)
> +                __efi_runtime_stop = .;
>   	}
>
>   	efi_runtime_rel : {
> +                __efi_runtime_rel_start = .;
>   		*(.relefi_runtime_text)
>   		*(.relefi_runtime_data)
> -	}
> -
> -	efi_runtime_rel_stop : {
> -		*(___efi_runtime_rel_stop)
> +                __efi_runtime_rel_stop = .;
>   	}
>
>   	.dynsym :
> diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
> index a2bc5a7ee60f..d7d15a50bb6c 100644
> --- a/arch/sandbox/lib/Makefile
> +++ b/arch/sandbox/lib/Makefile
> @@ -5,7 +5,7 @@
>   # (C) Copyright 2002-2006
>   # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>
> -obj-y	+= fdt_fixup.o interrupts.o sections.o
> +obj-y			+= fdt_fixup.o interrupts.o
>   obj-$(CONFIG_PCI)	+= pci_io.o
>   obj-$(CONFIG_CMD_BOOTM) += bootm.o
>   obj-$(CONFIG_CMD_BOOTZ) += bootm.o
> diff --git a/arch/sandbox/lib/sections.c b/arch/sandbox/lib/sections.c
> deleted file mode 100644
> index 2f2f3fbfdb86..000000000000
> --- a/arch/sandbox/lib/sections.c
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -/*
> - * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
> - *
> - */
> -#include <linux/compiler.h>
> -
> -char __efi_runtime_start[0] __section("___efi_runtime_start");
> -char __efi_runtime_stop[0] __section("___efi_runtime_stop");
> -char __efi_runtime_rel_start[0]
> -		__section("___efi_runtime_rel_start");
> -char __efi_runtime_rel_stop[0]
> -		__section("___efi_runtime_rel_stop");
> --
> 2.45.1
>
Simon Glass June 17, 2024, 1:53 p.m. UTC | #3
Hi Ilias,

On Fri, 14 Jun 2024 at 01:01, Ilias Apalodimas
<ilias.apalodimas@linaro.org> wrote:
>
> Hi Simon,
>
> I just noticed that the sections in sandbox were discarded because
> their definition was wrong to begin with.
> They were defined with an extra _ -- ___efi_runtime_rel_start instead
> of __efi_runtime_rel_start.
>
> Let me know if you want me to respin this with a Fixes tag

Yes please.

Reviewed-by: Simon Glass <sjg@chromium.org>


>
> Regards
> /Ilias
>
> On Fri, 14 Jun 2024 at 09:54, Ilias Apalodimas
> <ilias.apalodimas@linaro.org> wrote:
> >
> > commit 6e2228fb052b ("Merge patch series "Clean up arm linker scripts"")
> > was cleaning up linker scripts for armv7 and v8 in a similar fashion.
> >
> > Several commits in the past -- e.g
> > commit d0b5d9da5de2 ("arm: make _end compiler-generated")
> > was moving symbols to be compiler generated. They were defined as c
> > variables in its own section to force the compiler emit relative a
> > reference. However, defining those in the linker script will do the
> > same thing since [0].
> >
> > So let's remove the special sections from the linker scripts, the
> > variable definitions from sections.c, and define them as a symbols.
> > It's worth noting that the linker was discarding the symbols in the
> > older binary completely.
> >
> > - new binary
> > $~ aarch64-linux-gnu-readelf -sW u-boot | grep efi_runtim
> >    246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
> >   3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
> >   6359: 00000000000dedff   217 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
> >   7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
> >   8869: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_stop
> >   9159: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_stop
> >   9410: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_start
> >  10137: 00000000005981bd     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
> >  10470: 0000000000305e20     0 NOTYPE  GLOBAL DEFAULT   27 __efi_runtime_rel_start
> >
> > - old binary
> > $~ aarch64-linux-gnu-readelf -sW u-boot.old | grep efi_runtim
> >    246: 000000000004acbe    13 FUNC    LOCAL  DEFAULT   14 vbe_req_efi_runtime_rand
> >   3198: 0000000000318690    16 OBJECT  LOCAL  DEFAULT   29 efi_runtime_mmio
> >   6359: 00000000000dedff   221 FUNC    LOCAL  DEFAULT   14 efi_runtime_relocate
> >   7942: 00000000003074c0   136 OBJECT  GLOBAL HIDDEN    29 efi_runtime_services
> >  10135: 0000000000598320     0 NOTYPE  WEAK   HIDDEN    33 efi_runtime.c.de5bed54
> >
> > $~ bloat-o-meter u-bool.old u-boot
> > add/remove: 0/0 grow/shrink: 1/1 up/down: 7/-4 (3)
> > Function                                     old     new   delta
> > efi_memory_init                              343     350      +7
> > efi_runtime_relocate                         221     217      -4
> > Total: Before=2009902, After=2009905, chg +0.00%
> >
> > [0] binutils commit 6b3b0ab89663 ("Make linker assigned symbol dynamic only for shared object")
> >
> > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > ---
> >  arch/sandbox/cpu/u-boot.lds | 20 ++++----------------
> >  arch/sandbox/lib/Makefile   |  2 +-
> >  arch/sandbox/lib/sections.c | 13 -------------
> >  3 files changed, 5 insertions(+), 30 deletions(-)
> >  delete mode 100644 arch/sandbox/lib/sections.c
> >
> > diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
> > index 52f13af3742f..6ee8095b6cbb 100644
> > --- a/arch/sandbox/cpu/u-boot.lds
> > +++ b/arch/sandbox/cpu/u-boot.lds
> > @@ -19,30 +19,18 @@ SECTIONS
> >                 *(_u_boot_sandbox_getopt_end)
> >         }
> >
> > -       efi_runtime_start : {
> > -               *(___efi_runtime_start)
> > -       }
> > -
> >         efi_runtime : {
> > +                __efi_runtime_start = .;
> >                 *(efi_runtime_text)
> >                 *(efi_runtime_data)
> > -       }
> > -
> > -       efi_runtime_stop : {
> > -               *(___efi_runtime_stop)
> > -       }
> > -
> > -       efi_runtime_rel_start : {
> > -               *(___efi_runtime_rel_start)
> > +                __efi_runtime_stop = .;
> >         }
> >
> >         efi_runtime_rel : {
> > +                __efi_runtime_rel_start = .;
> >                 *(.relefi_runtime_text)
> >                 *(.relefi_runtime_data)
> > -       }
> > -
> > -       efi_runtime_rel_stop : {
> > -               *(___efi_runtime_rel_stop)
> > +                __efi_runtime_rel_stop = .;
> >         }
> >
> >         .dynsym :
> > diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
> > index a2bc5a7ee60f..d7d15a50bb6c 100644
> > --- a/arch/sandbox/lib/Makefile
> > +++ b/arch/sandbox/lib/Makefile
> > @@ -5,7 +5,7 @@
> >  # (C) Copyright 2002-2006
> >  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> >
> > -obj-y  += fdt_fixup.o interrupts.o sections.o
> > +obj-y                  += fdt_fixup.o interrupts.o
> >  obj-$(CONFIG_PCI)      += pci_io.o
> >  obj-$(CONFIG_CMD_BOOTM) += bootm.o
> >  obj-$(CONFIG_CMD_BOOTZ) += bootm.o
> > diff --git a/arch/sandbox/lib/sections.c b/arch/sandbox/lib/sections.c
> > deleted file mode 100644
> > index 2f2f3fbfdb86..000000000000
> > --- a/arch/sandbox/lib/sections.c
> > +++ /dev/null
> > @@ -1,13 +0,0 @@
> > -// SPDX-License-Identifier: GPL-2.0+
> > -/*
> > - * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
> > - *
> > - */
> > -#include <linux/compiler.h>
> > -
> > -char __efi_runtime_start[0] __section("___efi_runtime_start");
> > -char __efi_runtime_stop[0] __section("___efi_runtime_stop");
> > -char __efi_runtime_rel_start[0]
> > -               __section("___efi_runtime_rel_start");
> > -char __efi_runtime_rel_stop[0]
> > -               __section("___efi_runtime_rel_stop");
> > --
> > 2.45.1
> >
diff mbox series

Patch

diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
index 52f13af3742f..6ee8095b6cbb 100644
--- a/arch/sandbox/cpu/u-boot.lds
+++ b/arch/sandbox/cpu/u-boot.lds
@@ -19,30 +19,18 @@  SECTIONS
 		*(_u_boot_sandbox_getopt_end)
 	}

-	efi_runtime_start : {
-		*(___efi_runtime_start)
-	}
-
 	efi_runtime : {
+                __efi_runtime_start = .;
 		*(efi_runtime_text)
 		*(efi_runtime_data)
-	}
-
-	efi_runtime_stop : {
-		*(___efi_runtime_stop)
-	}
-
-	efi_runtime_rel_start : {
-		*(___efi_runtime_rel_start)
+                __efi_runtime_stop = .;
 	}

 	efi_runtime_rel : {
+                __efi_runtime_rel_start = .;
 		*(.relefi_runtime_text)
 		*(.relefi_runtime_data)
-	}
-
-	efi_runtime_rel_stop : {
-		*(___efi_runtime_rel_stop)
+                __efi_runtime_rel_stop = .;
 	}

 	.dynsym :
diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
index a2bc5a7ee60f..d7d15a50bb6c 100644
--- a/arch/sandbox/lib/Makefile
+++ b/arch/sandbox/lib/Makefile
@@ -5,7 +5,7 @@ 
 # (C) Copyright 2002-2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.

-obj-y	+= fdt_fixup.o interrupts.o sections.o
+obj-y			+= fdt_fixup.o interrupts.o
 obj-$(CONFIG_PCI)	+= pci_io.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-$(CONFIG_CMD_BOOTZ) += bootm.o
diff --git a/arch/sandbox/lib/sections.c b/arch/sandbox/lib/sections.c
deleted file mode 100644
index 2f2f3fbfdb86..000000000000
--- a/arch/sandbox/lib/sections.c
+++ /dev/null
@@ -1,13 +0,0 @@ 
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
- *
- */
-#include <linux/compiler.h>
-
-char __efi_runtime_start[0] __section("___efi_runtime_start");
-char __efi_runtime_stop[0] __section("___efi_runtime_stop");
-char __efi_runtime_rel_start[0]
-		__section("___efi_runtime_rel_start");
-char __efi_runtime_rel_stop[0]
-		__section("___efi_runtime_rel_stop");