[Mesa-dev] [PATCH] mapi: fix LTO compilation
Mike Lothian
mike at fireburn.co.uk
Mon Jun 6 13:39:32 UTC 2016
This doesn't seem to affect me using GCC 6.1 and gold
On Thu, 2 Jun 2016, 6:42 p.m. Jan Ziak (⚛), <0xe2.0x9a.0x9b at gmail.com>
wrote:
> LTO compilation can sometimes fail with GCC 4.9 and GCC 5.3 because
> src/mapi uses unusual mixing of C code and assembly code. The issue
> may be present in case of GCC 6.1 as well.
>
> This is a Mesa bug rather than a compiler bug (although in an ideal
> world the compilation with -flto should fail if and only if normal
> compilation fails).
>
> The error message:
>
> entry_x86-64_tls.h:61: undefined reference to `x86_64_entry_start'
>
> Without the patch:
> - using "-flto -O2 -DDEBUG" fails with GCC 4.9 and 5.3
> - using "-flto -O3 -DDEBUG" succeeds with GCC 4.9 and 5.3
> - using "-flto -O2 -DNDEBUG" succeeds with GCC 4.9 and 5.3
>
> The patch assumes that the assembler understands ".hidden" directive.
>
> Signed-off-by: Jan Ziak (⚛) <0xe2.0x9a.0x9b at gmail.com>
> ---
> src/mapi/entry_x86-64_tls.h | 5 +++--
> src/mapi/entry_x86_tls.h | 12 +++++++++---
> 2 files changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/src/mapi/entry_x86-64_tls.h b/src/mapi/entry_x86-64_tls.h
> index 38faccc..acabecc 100644
> --- a/src/mapi/entry_x86-64_tls.h
> +++ b/src/mapi/entry_x86-64_tls.h
> @@ -28,6 +28,8 @@
>
> __asm__(".text\n"
> ".balign 32\n"
> + ".globl x86_64_entry_start\n"
> + ".hidden x86_64_entry_start\n"
> "x86_64_entry_start:");
>
> #define STUB_ASM_ENTRY(func) \
> @@ -54,8 +56,7 @@ entry_patch_public(void)
> {
> }
>
> -static char
> -x86_64_entry_start[];
> +extern char x86_64_entry_start[];
>
> mapi_func
> entry_get_public(int slot)
> diff --git a/src/mapi/entry_x86_tls.h b/src/mapi/entry_x86_tls.h
> index 46d2ece..6078b9a 100644
> --- a/src/mapi/entry_x86_tls.h
> +++ b/src/mapi/entry_x86_tls.h
> @@ -29,7 +29,9 @@
>
> __asm__(".text");
>
> -__asm__("x86_current_tls:\n\t"
> +__asm__( ".globl x86_current_tls\n"
> + ".hidden x86_current_tls\n"
> + "x86_current_tls:\n\t"
> "call 1f\n"
> "1:\n\t"
> "popl %eax\n\t"
> @@ -42,6 +44,8 @@ __asm__(".section wtext, \"awx\", @progbits");
> #endif /* GLX_X86_READONLY_TEXT */
>
> __asm__(".balign 16\n"
> + ".globl x86_entry_start\n"
> + ".hidden x86_entry_start\n"
> "x86_entry_start:");
>
> #define STUB_ASM_ENTRY(func) \
> @@ -60,6 +64,8 @@ __asm__(".balign 16\n"
>
> #ifndef GLX_X86_READONLY_TEXT
> __asm__(".balign 16\n"
> + ".globl x86_entry_end\n"
> + ".hidden x86_entry_end\n"
> "x86_entry_end:");
> __asm__(".text");
> #endif /* GLX_X86_READONLY_TEXT */
> @@ -71,8 +77,8 @@ __asm__(".text");
> extern unsigned long
> x86_current_tls();
>
> -static char x86_entry_start[];
> -static char x86_entry_end[];
> +extern char x86_entry_start[];
> +extern char x86_entry_end[];
>
> void
> entry_patch_public(void)
> --
> 2.8.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160606/592a7fc9/attachment.html>
More information about the mesa-dev
mailing list