aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2014-06-21 19:30:53 +0100
committerMatt Fleming <matt.fleming@intel.com>2014-06-24 22:25:31 +0100
commit1221f75d13fc1a5ca436ada6eb0cea17199a7bbe (patch)
tree96669c690495d9628d0bc5cbbf330fed1dc1e04c
parentf9dad5340bcefe34d860e991e8743be01a4d6c3c (diff)
downloadsyslinux-1221f75d13fc1a5ca436ada6eb0cea17199a7bbe.tar.gz
syslinux-1221f75d13fc1a5ca436ada6eb0cea17199a7bbe.tar.xz
syslinux-1221f75d13fc1a5ca436ada6eb0cea17199a7bbe.zip
efi: Tag __syslinux_adv* with __export
commit 415d571 ("adv: Remove double defintion") introduced a regression for the EFI boot loader. The commit is correct, but should have tagged the __syslinux_adv_ptr and __syslinux_adv_size data objects in the EFI core as __export. This change is required because symbols in the EFI code are not global by default, and so, when ldlinux.{e32,e64} tries to bind to the adv symbols it fails. The following demonstrates the ELF symbol changes, Before: 659: 0000000000034f40 8 OBJECT LOCAL DEFAULT 16 __syslinux_adv_ptr After: 957: 0000000000036fe0 8 OBJECT GLOBAL DEFAULT 16 __syslinux_adv_ptr Signed-off-by: Matt Fleming <matt.fleming@intel.com>
-rw-r--r--efi/main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/efi/main.c b/efi/main.c
index 1cc2456a..208fee4f 100644
--- a/efi/main.c
+++ b/efi/main.c
@@ -141,8 +141,8 @@ void __cdecl core_farcall(uint32_t c, const com32sys_t *a, com32sys_t *b)
}
__export struct firmware *firmware = NULL;
-void *__syslinux_adv_ptr;
-size_t __syslinux_adv_size;
+__export void *__syslinux_adv_ptr;
+__export size_t __syslinux_adv_size;
char core_xfer_buf[65536];
struct iso_boot_info {
uint32_t pvd; /* LBA of primary volume descriptor */