summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/efi/efi/efi.c42
-rw-r--r--arch/efi/lib/elf_x86_64_efi.lds.S2
2 files changed, 2 insertions, 42 deletions
diff --git a/arch/efi/efi/efi.c b/arch/efi/efi/efi.c
index ed449dc8db..9c270a597e 100644
--- a/arch/efi/efi/efi.c
+++ b/arch/efi/efi/efi.c
@@ -293,46 +293,6 @@ extern char image_base[];
extern initcall_t __barebox_initcalls_start[], __barebox_early_initcalls_end[],
__barebox_initcalls_end[];
-/*
- * We have a position independent binary generated with -fpic. This function
- * fixes the linker generated tables.
- */
-static void fixup_tables(void)
-{
- initcall_t *initcall;
- unsigned long offset = (unsigned long)image_base;
- struct command *cmdtp;
- struct magicvar *m;
-
- for (initcall = __barebox_initcalls_start;
- initcall < __barebox_initcalls_end; initcall++)
- *initcall += offset;
-
- for (cmdtp = &__barebox_cmd_start;
- cmdtp != &__barebox_cmd_end;
- cmdtp++) {
- cmdtp->name += offset;
- cmdtp->cmd += offset;
- if (cmdtp->complete)
- cmdtp->complete += offset;
- if (cmdtp->desc)
- cmdtp->desc += offset;
- if (cmdtp->help)
- cmdtp->help += offset;
- if (cmdtp->opts)
- cmdtp->opts += offset;
- if (cmdtp->aliases)
- cmdtp->aliases = (void *)cmdtp->aliases + offset;
- }
-
- for (m = &__barebox_magicvar_start;
- m != &__barebox_magicvar_end;
- m++) {
- m->name += offset;
- m->description += offset;
- }
-}
-
static int efi_init(void)
{
char *env;
@@ -373,8 +333,6 @@ efi_status_t efi_main(efi_handle_t image, efi_system_table_t *sys_table)
BS->handle_protocol(efi_loaded_image->device_handle,
&efi_device_path_protocol_guid, (void **)&efi_device_path);
- fixup_tables();
-
mem = 0x3fffffff;
for (memsize = SZ_256M; memsize >= SZ_8M; memsize /= 2) {
efiret = BS->allocate_pages(EFI_ALLOCATE_MAX_ADDRESS,
diff --git a/arch/efi/lib/elf_x86_64_efi.lds.S b/arch/efi/lib/elf_x86_64_efi.lds.S
index 9aa4e8d829..e1bc2120fa 100644
--- a/arch/efi/lib/elf_x86_64_efi.lds.S
+++ b/arch/efi/lib/elf_x86_64_efi.lds.S
@@ -78,6 +78,8 @@ SECTIONS
.rela : {
*(.rela.data*)
+ *(.rela.barebox*)
+ *(.rela.initcall*)
*(.rela.got)
*(.rela.stab)
}