[syslinux:master] efi: Tag __syslinux_adv* with __export

syslinux-bot for Matt Fleming matt.fleming at intel.com
Tue Jun 24 14:27:04 PDT 2014

Commit-ID:  1221f75d13fc1a5ca436ada6eb0cea17199a7bbe
Gitweb:     http://www.syslinux.org/commit/1221f75d13fc1a5ca436ada6eb0cea17199a7bbe
Author:     Matt Fleming <matt.fleming at intel.com>
AuthorDate: Sat, 21 Jun 2014 19:30:53 +0100
Committer:  Matt Fleming <matt.fleming at intel.com>
CommitDate: Tue, 24 Jun 2014 22:25:31 +0100

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,

  659: 0000000000034f40     8 OBJECT  LOCAL  DEFAULT   16 __syslinux_adv_ptr

  957: 0000000000036fe0     8 OBJECT  GLOBAL DEFAULT   16 __syslinux_adv_ptr

Signed-off-by: Matt Fleming <matt.fleming at intel.com>

 efi/main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/efi/main.c b/efi/main.c
index 1cc2456..208fee4 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 */

More information about the Syslinux-commits mailing list