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.0...@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.0...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev