Fix Solaris 10_x86 shared build. -Bsymbolic is required to avoid
"remaining relocations" in assembler modules. The latter seems to be new behaviour, elder as/ld managed to resolve this relocations as internal. It's possible to address this problem differently, but I settle for -Bsymbolic... PR: 546
This commit is contained in:
parent
d1360f6ecc
commit
07d488daf6
@ -457,7 +457,7 @@ link_o.solaris:
|
|||||||
LIBDEPS="$(LIBDEPS) -lc"; \
|
LIBDEPS="$(LIBDEPS) -lc"; \
|
||||||
ALLSYMSFLAGS="$${MINUSZ}allextract"; \
|
ALLSYMSFLAGS="$${MINUSZ}allextract"; \
|
||||||
NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
|
NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
|
||||||
SHAREDFLAGS="-G -dy -z text -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -R $(LIBRPATH)"; \
|
SHAREDFLAGS="-G -dy -z text -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -R $(LIBRPATH) -Wl,-Bsymbolic"; \
|
||||||
SHAREDCMD='$(CC)'; \
|
SHAREDCMD='$(CC)'; \
|
||||||
fi; \
|
fi; \
|
||||||
$(LINK_SO_O)
|
$(LINK_SO_O)
|
||||||
@ -473,7 +473,7 @@ link_a.solaris:
|
|||||||
LIBDEPS="$(LIBDEPS) -lc"; \
|
LIBDEPS="$(LIBDEPS) -lc"; \
|
||||||
ALLSYMSFLAGS="$${MINUSZ}allextract"; \
|
ALLSYMSFLAGS="$${MINUSZ}allextract"; \
|
||||||
NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
|
NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
|
||||||
SHAREDFLAGS="-G -dy -z text -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -R $(LIBRPATH)"; \
|
SHAREDFLAGS="-G -dy -z text -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -R $(LIBRPATH) -Wl,-Bsymbolic"; \
|
||||||
SHAREDCMD='$(CC)'; \
|
SHAREDCMD='$(CC)'; \
|
||||||
fi; \
|
fi; \
|
||||||
$(LINK_SO_A)
|
$(LINK_SO_A)
|
||||||
|
@ -205,8 +205,8 @@ sub main'nop { &out0("nop"); }
|
|||||||
sub main'test { &out2("testl",@_); }
|
sub main'test { &out2("testl",@_); }
|
||||||
sub main'bt { &out2("btl",@_); }
|
sub main'bt { &out2("btl",@_); }
|
||||||
sub main'leave { &out0("leave"); }
|
sub main'leave { &out0("leave"); }
|
||||||
sub main'cpuid { &out0(".word\t0xa20f"); }
|
sub main'cpuid { &out0(".byte 0x0f; .byte 0xa2"); }
|
||||||
sub main'rdtsc { &out0(".word\t0x310f"); }
|
sub main'rdtsc { &out0(".byte 0x0f; .byte 0x31"); }
|
||||||
sub main'halt { &out0("hlt"); }
|
sub main'halt { &out0("hlt"); }
|
||||||
|
|
||||||
# SSE2
|
# SSE2
|
||||||
@ -552,18 +552,18 @@ sub main'file_end
|
|||||||
pushf
|
pushf
|
||||||
popl %eax
|
popl %eax
|
||||||
xorl %ecx,%eax
|
xorl %ecx,%eax
|
||||||
bt \$21,%eax
|
btl \$21,%eax
|
||||||
jnc 1f
|
jnc 1f
|
||||||
pushl %edi
|
pushl %edi
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
movl %edx,%edi
|
movl %edx,%edi
|
||||||
movl \$1,%eax
|
movl \$1,%eax
|
||||||
.word 0xa20f
|
.byte 0x0f; .byte 0xa2
|
||||||
orl \$1<<10,%edx
|
orl \$1<<10,%edx
|
||||||
movl %edx,0(%edi)
|
movl %edx,0(%edi)
|
||||||
popl %ebx
|
popl %ebx
|
||||||
popl %edi
|
popl %edi
|
||||||
.align 4
|
.align $align
|
||||||
1:
|
1:
|
||||||
___
|
___
|
||||||
push (@out,$tmp);
|
push (@out,$tmp);
|
||||||
@ -708,6 +708,7 @@ sub main'initseg
|
|||||||
$tmp=<<___;
|
$tmp=<<___;
|
||||||
.section .init
|
.section .init
|
||||||
call $under$f
|
call $under$f
|
||||||
|
.align $align
|
||||||
___
|
___
|
||||||
}
|
}
|
||||||
elsif ($main'coff)
|
elsif ($main'coff)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user