?MAKE:usedl ld dlsrc cccdlflags lddlflags ccdlflags bin_ELF ld_can_script: \
rm_try Getfile Myread test osname sed i_dld d_dlopen Findhdr Setvar \
src run cc ccflags ldflags optimize ls gccversion cat rsrc i_stdlib \
- i_unistd
+ i_unistd osvers
?MAKE: -pick add $@ %<
?Y:BOTTOM
?S:usedl:
EOM
case "$lddlflags" in
'') case "$osname" in
- beos) dflt='-nostart' ;;
haiku) dflt='-shared' ;;
hpux) dflt='-b';
case "$gccversion" in
;;
linux|irix*|gnu*) dflt="-shared $optimize" ;;
next) dflt='none' ;;
- solaris) dflt='-G' ;;
+ solaris) # See [perl #66604].
+ # On Solaris 11, gcc -m64 on amd64
+ # appears not to understand -G. gcc versions at
+ # least as old as 3.4.3 support -shared, so just
+ # use that with Solaris 11 and later, but keep
+ # the old behavior for older Solaris versions.
+ case "$gccversion" in
+ '') dflt='-G' ;;
+ *) case "$osvers" in
+ 2.?|2.10) dflt='-G' ;;
+ *) dflt='-shared' ;;
+ esac
+ ;;
+ esac
+ ;;
sunos) dflt='-assert nodefinitions' ;;
svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
*) dflt='none' ;;