Export ldexp aliases on Windows

skip END and add .drectve export in assembly versions

uncomment __strong_reference definition from cdefs-compat.h

use weak references in place of strong references on Mac

add DLLEXPORT to all strong references

Fixes Julia issue #6777
This commit is contained in:
Tony Kelman 2014-05-08 18:35:17 -07:00
parent 516b4f4222
commit 8b59bbc18b
4 changed files with 22 additions and 10 deletions

View file

@ -41,10 +41,14 @@ ENTRY(scalbn)
fstpl -8(%rsp)
movsd -8(%rsp),%xmm0
ret
#ifndef _WIN64
END(scalbn)
.globl CNAME(ldexp)
#else
.globl CNAME(ldexp); .section .drectve; .ascii " -export:ldexp"
#endif
.set CNAME(ldexp),CNAME(scalbn)
/* Enable stack protection */
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits

View file

@ -41,12 +41,14 @@ ENTRY(scalbnf)
fstps -8(%rsp)
movss -8(%rsp),%xmm0
ret
#ifndef _WIN64
END(scalbnf)
.globl CNAME(ldexpf)
.set CNAME(ldexpf),CNAME(scalbnf)
#else
.globl CNAME(ldexpf); .section .drectve; .ascii " -export:ldexpf"
#endif
.set CNAME(ldexpf),CNAME(scalbnf)
/* Enable stack protection */
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits

View file

@ -26,12 +26,14 @@ ENTRY(scalbnl)
fstpt (%rcx)
#endif
ret
#ifndef _WIN64
END(scalbnl)
.globl CNAME(ldexpl)
#else
.globl CNAME(ldexpl); .section .drectve; .ascii " -export:ldexpl"
#endif
.set CNAME(ldexpl),CNAME(scalbnl)
.globl CNAME(ldexpl)
.set CNAME(ldexpl),CNAME(scalbnl)
/* Enable stack protection */
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits

View file

@ -22,8 +22,12 @@
#ifdef __GNUC__
#ifndef __strong_reference
#define __strong_reference(sym,aliassym)
//extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
#ifdef __APPLE__
#define __strong_reference(sym,aliassym) __weak_reference(sym,aliassym)
#else
#define __strong_reference(sym,aliassym) \
DLLEXPORT extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
#endif /* __APPLE__ */
#endif /* __strong_reference */
#ifndef __weak_reference