On 4/7/22 11:41, Andrew Scull wrote:
The sandbox doesn't populate the EFI lists so explicitly set the list
start and end symbols to indicate that the lists are empty. This
simplifies the linker scripts, removed references to non-existant
sections and removes '.' prefixed sections that conflicted with clang's
ASAN.


In u-boot.map I see:

10636  .text.efi_runtime
10637                 0x00000000000df50a      0x72d
/tmp/cctuEBRS.ltrans19.ltrans.o
10638                 0x00000000000df50a                efi_get_time
10639                 0x00000000000df519                efi_set_time
10640                 0x00000000000df528
efi_unimplemented.lto_priv.0
10641                 0x00000000000df54a
efi_update_capsule_unsupported
10642                 0x00000000000df559
efi_query_capsule_caps_unsupported

So there are definively functions that should go between
__efi_runtime_start and __efi_runtime_stop.

If ._efi_runtime_start == .__efi_runtime_stop, there is a bug in the
linker script. Deleting the symbols is the wrong way to deal with this
deficiency. Instead ensure correct placement of the functions marked as
__efi_runtime and the data marked as __efi_runtime_data.

Best regards

Heinrich


Signed-off-by: Andrew Scull <[email protected]>
---
  arch/sandbox/cpu/u-boot.lds | 32 +++++---------------------------
  arch/sandbox/lib/Makefile   |  2 +-
  arch/sandbox/lib/sections.c | 13 -------------
  3 files changed, 6 insertions(+), 41 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 6d710618f5..dd675cc3d2 100644
--- a/arch/sandbox/cpu/u-boot.lds
+++ b/arch/sandbox/cpu/u-boot.lds
@@ -19,33 +19,11 @@ SECTIONS
                *(.u_boot_sandbox_getopt_end)
        }

-       .__efi_runtime_start : {
-               *(.__efi_runtime_start)
-       }
-
-       .efi_runtime : {
-               *(efi_runtime_text)
-               *(efi_runtime_data)
-       }
-
-       .__efi_runtime_stop : {
-               *(.__efi_runtime_stop)
-       }
-
-       .efi_runtime_rel_start :
-       {
-               *(.__efi_runtime_rel_start)
-       }
-
-       .efi_runtime_rel : {
-               *(.relefi_runtime_text)
-               *(.relefi_runtime_data)
-       }
-
-       .efi_runtime_rel_stop :
-       {
-               *(.__efi_runtime_rel_stop)
-       }
+       /* Sandbox has empty EFI runtime lists. */
+       __efi_runtime_start = .;
+       __efi_runtime_stop = __efi_runtime_start;
+       __efi_runtime_rel_start = .;
+       __efi_runtime_rel_stop = __efi_runtime_rel_start;

        .dynsym :
        {
diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
index a2bc5a7ee6..05f06180f8 100644
--- a/arch/sandbox/lib/Makefile
+++ b/arch/sandbox/lib/Makefile
@@ -5,7 +5,7 @@
  # (C) Copyright 2002-2006
  # Wolfgang Denk, DENX Software Engineering, [email protected].

-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 2559eeea38..0000000000
--- a/arch/sandbox/lib/sections.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright 2013 Albert ARIBAUD <[email protected]>
- *
- */
-#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");

Reply via email to