gcc + glibc package update from upstream el7
Signed-off-by: basebuilder_pel7ppc64bebuilder0 <basebuilder@powerel.org>master
parent
d4ecfd388a
commit
84f24d821e
|
@ -10,29 +10,29 @@
|
|||
# Find out which ABI we are using.
|
||||
echo 'int i;' > conftest.$ac_ext
|
||||
@@ -1326,7 +1326,10 @@
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
- ppc64-*linux*|powerpc64-*linux*)
|
||||
+ powerpc64le-*linux*)
|
||||
+ LD="${LD-ld} -m elf32lppclinux"
|
||||
+ ;;
|
||||
+ powerpc64-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
@@ -1345,7 +1348,10 @@
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
- ppc*-*linux*|powerpc*-*linux*)
|
||||
+ powerpcle-*linux*)
|
||||
+ LD="${LD-ld} -m elf64lppc"
|
||||
+ ;;
|
||||
+ powerpc-*linux*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
--- cloog-0.18.0/autoconf/config.sub.jj 2013-10-11 09:27:45.000000000 +0200
|
||||
+++ cloog-0.18.0/autoconf/config.sub 2014-04-10 10:38:39.000000000 +0200
|
||||
@@ -1,24 +1,18 @@
|
||||
|
@ -108,214 +108,214 @@
|
|||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
@@ -156,7 +149,7 @@ case $os in
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
- -apple | -axis | -knuth | -cray | -microblaze)
|
||||
+ -apple | -axis | -knuth | -cray | -microblaze*)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
@@ -259,10 +252,12 @@ case $basic_machine in
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
- | be32 | be64 \
|
||||
+ | arc | arceb \
|
||||
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
+ | avr | avr32 \
|
||||
+ | be32 | be64 \
|
||||
| bfin \
|
||||
| bfin \
|
||||
- | c4x | clipper \
|
||||
+ | c4x | c8051 | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
@@ -270,10 +265,11 @@ case $basic_machine in
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
+ | k1om \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
- | maxq | mb | microblaze | mcore | mep | metag \
|
||||
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
@@ -291,16 +287,17 @@ case $basic_machine in
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
+ | mipsr5900 | mipsr5900el \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
- | nios | nios2 \
|
||||
+ | nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
- | or32 \
|
||||
+ | or1k | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
@@ -328,7 +325,7 @@ case $basic_machine in
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
||||
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
@@ -370,13 +367,13 @@ case $basic_machine in
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
- | clipper-* | craynv-* | cydra-* \
|
||||
+ | c8051-* | clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
@@ -385,11 +382,13 @@ case $basic_machine in
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
+ | k1om-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
|
||||
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
|
||||
+ | microblaze-* | microblazeel-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
@@ -407,12 +406,13 @@ case $basic_machine in
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
+ | mipsr5900-* | mipsr5900el-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
- | nios-* | nios2-* \
|
||||
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| orion-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| orion-* \
|
||||
@@ -788,11 +788,15 @@ case $basic_machine in
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
- microblaze)
|
||||
+ microblaze*)
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
+ mingw64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ os=-mingw64
|
||||
+ ;;
|
||||
mingw32)
|
||||
mingw32)
|
||||
- basic_machine=i386-pc
|
||||
+ basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
@@ -828,7 +832,7 @@ case $basic_machine in
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
- basic_machine=i386-pc
|
||||
+ basic_machine=i686-pc
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
@@ -1019,7 +1023,11 @@ case $basic_machine in
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
- rdos)
|
||||
+ rdos | rdos64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ os=-rdos
|
||||
+ ;;
|
||||
+ rdos32)
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
@@ -1346,21 +1354,21 @@ case $os in
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
- | -sym* | -kopensolaris* \
|
||||
+ | -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
- | -openbsd* | -solidbsd* \
|
||||
+ | -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
- | -mingw32* | -linux-gnu* | -linux-android* \
|
||||
- | -linux-newlib* | -linux-uclibc* \
|
||||
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
@@ -1492,9 +1500,6 @@ case $os in
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
- -kaos*)
|
||||
- os=-kaos
|
||||
- ;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
@@ -1543,6 +1548,9 @@ case $basic_machine in
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
+ c8051-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
@@ -1586,6 +1594,9 @@ case $basic_machine in
|
||||
mips*-*)
|
||||
os=-elf
|
||||
;;
|
||||
mips*-*)
|
||||
os=-elf
|
||||
;;
|
||||
+ or1k-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
or32-*)
|
||||
os=-coff
|
||||
;;
|
||||
or32-*)
|
||||
os=-coff
|
||||
;;
|
||||
--- cloog-0.18.0/autoconf/config.guess.jj 2013-10-11 09:27:45.000000000 +0200
|
||||
+++ cloog-0.18.0/autoconf/config.guess 2014-04-10 10:38:36.000000000 +0200
|
||||
@@ -1,14 +1,12 @@
|
||||
|
@ -403,65 +403,65 @@
|
|||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit ;;
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit ;;
|
||||
+ *:Bitrig:*:*)
|
||||
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
||||
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
|
||||
+ exit ;;
|
||||
*:OpenBSD:*:*)
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
- arm:riscos:*:*|arm:RISCOS:*:*)
|
||||
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
|
||||
echo arm-unknown-riscos
|
||||
exit ;;
|
||||
echo arm-unknown-riscos
|
||||
exit ;;
|
||||
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
|
||||
@@ -801,6 +820,9 @@ EOF
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit ;;
|
||||
+ *:MINGW64*:*)
|
||||
+ echo ${UNAME_MACHINE}-pc-mingw64
|
||||
+ exit ;;
|
||||
*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
@@ -852,21 +874,21 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:GNU:*:*)
|
||||
# the GNU system
|
||||
# the GNU system
|
||||
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:GNU/*:*:*)
|
||||
# other systems with GNU libc and userland
|
||||
# other systems with GNU libc and userland
|
||||
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
aarch64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
aarch64_be:Linux:*:*)
|
||||
UNAME_MACHINE=aarch64_be
|
||||
UNAME_MACHINE=aarch64_be
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
alpha:Linux:*:*)
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
@@ -879,59 +901,54 @@ EOF
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
||||
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||
|
@ -469,46 +469,46 @@
|
|||
+ exit ;;
|
||||
+ arc:Linux:*:* | arceb:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
arm*:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
|
||||
else
|
||||
else
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
cris:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
crisv32:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
frv:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
hexagon:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
- LIBC=gnu
|
||||
- eval $set_cc_for_build
|
||||
|
@ -520,58 +520,58 @@
|
|||
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
||||
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
||||
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
ia64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
m32r*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
m68*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
mips:Linux:*:* | mips64:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
eval $set_cc_for_build
|
||||
@@ -950,54 +967,63 @@ EOF
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||
;;
|
||||
;;
|
||||
+ or1k:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
+ exit ;;
|
||||
or32:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
padre:Linux:*:*)
|
||||
- echo sparc-unknown-linux-gnu
|
||||
+ echo sparc-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||
- echo hppa64-unknown-linux-gnu
|
||||
+ echo hppa64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
||||
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
||||
- *) echo hppa-unknown-linux-gnu ;;
|
||||
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
|
||||
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
|
||||
+ *) echo hppa-unknown-linux-${LIBC} ;;
|
||||
esac
|
||||
exit ;;
|
||||
esac
|
||||
exit ;;
|
||||
ppc64:Linux:*:*)
|
||||
- echo powerpc64-unknown-linux-gnu
|
||||
+ echo powerpc64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
ppc:Linux:*:*)
|
||||
- echo powerpc-unknown-linux-gnu
|
||||
+ echo powerpc-unknown-linux-${LIBC}
|
||||
|
@ -581,55 +581,55 @@
|
|||
+ exit ;;
|
||||
+ ppcle:Linux:*:*)
|
||||
+ echo powerpcle-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
s390:Linux:*:* | s390x:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-ibm-linux
|
||||
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sh64*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sh*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
tile*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
vax:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:DYNIX/ptx:4*:*)
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
@@ -1201,6 +1227,9 @@ EOF
|
||||
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
|
||||
echo i586-pc-haiku
|
||||
exit ;;
|
||||
echo i586-pc-haiku
|
||||
exit ;;
|
||||
+ x86_64:Haiku:*:*)
|
||||
+ echo x86_64-unknown-haiku
|
||||
+ exit ;;
|
||||
SX-4:SUPER-UX:*:*)
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
@@ -1227,19 +1256,21 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:Darwin:*:*)
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
- case $UNAME_PROCESSOR in
|
||||
- i386)
|
||||
- eval $set_cc_for_build
|
||||
|
@ -658,20 +658,20 @@
|
|||
+ esac
|
||||
+ fi
|
||||
+ fi
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||
@@ -1256,7 +1287,7 @@ EOF
|
||||
NEO-?:NONSTOP_KERNEL:*:*)
|
||||
echo neo-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo neo-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
- NSE-?:NONSTOP_KERNEL:*:*)
|
||||
+ NSE-*:NONSTOP_KERNEL:*:*)
|
||||
echo nse-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo nse-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
NSR-?:NONSTOP_KERNEL:*:*)
|
||||
@@ -1330,9 +1361,6 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
-#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
|
@ -692,26 +692,26 @@
|
|||
# Find out which ABI we are using.
|
||||
echo 'int i;' > conftest.$ac_ext
|
||||
@@ -1326,7 +1326,10 @@
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
- ppc64-*linux*|powerpc64-*linux*)
|
||||
+ powerpc64le-*linux*)
|
||||
+ LD="${LD-ld} -m elf32lppclinux"
|
||||
+ ;;
|
||||
+ powerpc64-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
@@ -1345,7 +1348,10 @@
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
- ppc*-*linux*|powerpc*-*linux*)
|
||||
+ powerpcle-*linux*)
|
||||
+ LD="${LD-ld} -m elf64lppc"
|
||||
+ ;;
|
||||
+ powerpc-*linux*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,9 +5,9 @@
|
|||
--- fastjar-0.97/jartool.c 6 Sep 2009 22:16:00 -0000 1.59
|
||||
+++ fastjar-0.97/jartool.c 1 Mar 2010 15:38:43 -0000 1.60
|
||||
@@ -790,6 +790,7 @@ int read_entries (int fd)
|
||||
progname, jarfile);
|
||||
return 1;
|
||||
}
|
||||
progname, jarfile);
|
||||
return 1;
|
||||
}
|
||||
+ ze->filename[len] = '\0';
|
||||
len = UNPACK_UB4(header, CEN_EFLEN);
|
||||
len += UNPACK_UB4(header, CEN_COMLEN);
|
||||
|
|
|
@ -10,29 +10,29 @@
|
|||
# Find out which ABI we are using.
|
||||
echo 'int i;' > conftest.$ac_ext
|
||||
@@ -1277,7 +1277,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
- ppc64-*linux*|powerpc64-*linux*)
|
||||
+ powerpc64le-*linux*)
|
||||
+ LD="${LD-ld} -m elf32lppclinux"
|
||||
+ ;;
|
||||
+ powerpc64-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
@@ -1296,7 +1299,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
- ppc*-*linux*|powerpc*-*linux*)
|
||||
+ powerpcle-*linux*)
|
||||
+ LD="${LD-ld} -m elf64lppc"
|
||||
+ ;;
|
||||
+ powerpc-*linux*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
--- fastjar-0.97/config.sub.jj 2014-04-10 20:40:53.000000000 +0200
|
||||
+++ fastjar-0.97/config.sub 2014-04-10 10:38:39.000000000 +0200
|
||||
@@ -1,24 +1,18 @@
|
||||
|
@ -108,214 +108,214 @@
|
|||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
@@ -156,7 +149,7 @@ case $os in
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
- -apple | -axis | -knuth | -cray | -microblaze)
|
||||
+ -apple | -axis | -knuth | -cray | -microblaze*)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
@@ -259,10 +252,12 @@ case $basic_machine in
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
- | be32 | be64 \
|
||||
+ | arc | arceb \
|
||||
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
+ | avr | avr32 \
|
||||
+ | be32 | be64 \
|
||||
| bfin \
|
||||
| bfin \
|
||||
- | c4x | clipper \
|
||||
+ | c4x | c8051 | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
@@ -270,10 +265,11 @@ case $basic_machine in
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
+ | k1om \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
- | maxq | mb | microblaze | mcore | mep | metag \
|
||||
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
@@ -291,16 +287,17 @@ case $basic_machine in
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
+ | mipsr5900 | mipsr5900el \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
- | nios | nios2 \
|
||||
+ | nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
- | or32 \
|
||||
+ | or1k | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
@@ -328,7 +325,7 @@ case $basic_machine in
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
||||
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
@@ -370,13 +367,13 @@ case $basic_machine in
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
- | clipper-* | craynv-* | cydra-* \
|
||||
+ | c8051-* | clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
@@ -385,11 +382,13 @@ case $basic_machine in
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
+ | k1om-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
|
||||
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
|
||||
+ | microblaze-* | microblazeel-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
@@ -407,12 +406,13 @@ case $basic_machine in
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
+ | mipsr5900-* | mipsr5900el-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
- | nios-* | nios2-* \
|
||||
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| orion-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| orion-* \
|
||||
@@ -788,11 +788,15 @@ case $basic_machine in
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
- microblaze)
|
||||
+ microblaze*)
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
+ mingw64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ os=-mingw64
|
||||
+ ;;
|
||||
mingw32)
|
||||
mingw32)
|
||||
- basic_machine=i386-pc
|
||||
+ basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
@@ -828,7 +832,7 @@ case $basic_machine in
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
- basic_machine=i386-pc
|
||||
+ basic_machine=i686-pc
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
@@ -1019,7 +1023,11 @@ case $basic_machine in
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
- rdos)
|
||||
+ rdos | rdos64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ os=-rdos
|
||||
+ ;;
|
||||
+ rdos32)
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
@@ -1346,21 +1354,21 @@ case $os in
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
- | -sym* | -kopensolaris* \
|
||||
+ | -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
- | -openbsd* | -solidbsd* \
|
||||
+ | -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
- | -mingw32* | -linux-gnu* | -linux-android* \
|
||||
- | -linux-newlib* | -linux-uclibc* \
|
||||
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
@@ -1492,9 +1500,6 @@ case $os in
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
- -kaos*)
|
||||
- os=-kaos
|
||||
- ;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
@@ -1543,6 +1548,9 @@ case $basic_machine in
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
+ c8051-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
@@ -1586,6 +1594,9 @@ case $basic_machine in
|
||||
mips*-*)
|
||||
os=-elf
|
||||
;;
|
||||
mips*-*)
|
||||
os=-elf
|
||||
;;
|
||||
+ or1k-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
or32-*)
|
||||
os=-coff
|
||||
;;
|
||||
or32-*)
|
||||
os=-coff
|
||||
;;
|
||||
--- fastjar-0.97/config.guess.jj 2014-04-10 20:40:53.000000000 +0200
|
||||
+++ fastjar-0.97/config.guess 2014-04-10 10:38:36.000000000 +0200
|
||||
@@ -1,14 +1,12 @@
|
||||
|
@ -403,65 +403,65 @@
|
|||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit ;;
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit ;;
|
||||
+ *:Bitrig:*:*)
|
||||
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
||||
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
|
||||
+ exit ;;
|
||||
*:OpenBSD:*:*)
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
- arm:riscos:*:*|arm:RISCOS:*:*)
|
||||
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
|
||||
echo arm-unknown-riscos
|
||||
exit ;;
|
||||
echo arm-unknown-riscos
|
||||
exit ;;
|
||||
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
|
||||
@@ -801,6 +820,9 @@ EOF
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit ;;
|
||||
+ *:MINGW64*:*)
|
||||
+ echo ${UNAME_MACHINE}-pc-mingw64
|
||||
+ exit ;;
|
||||
*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
@@ -852,21 +874,21 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:GNU:*:*)
|
||||
# the GNU system
|
||||
# the GNU system
|
||||
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:GNU/*:*:*)
|
||||
# other systems with GNU libc and userland
|
||||
# other systems with GNU libc and userland
|
||||
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
aarch64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
aarch64_be:Linux:*:*)
|
||||
UNAME_MACHINE=aarch64_be
|
||||
UNAME_MACHINE=aarch64_be
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
alpha:Linux:*:*)
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
@@ -879,59 +901,54 @@ EOF
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
||||
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||
|
@ -469,46 +469,46 @@
|
|||
+ exit ;;
|
||||
+ arc:Linux:*:* | arceb:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
arm*:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
|
||||
else
|
||||
else
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
cris:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
crisv32:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
frv:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
hexagon:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
- LIBC=gnu
|
||||
- eval $set_cc_for_build
|
||||
|
@ -520,58 +520,58 @@
|
|||
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
||||
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
||||
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
ia64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
m32r*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
m68*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
mips:Linux:*:* | mips64:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
eval $set_cc_for_build
|
||||
@@ -950,54 +967,63 @@ EOF
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||
;;
|
||||
;;
|
||||
+ or1k:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
+ exit ;;
|
||||
or32:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
padre:Linux:*:*)
|
||||
- echo sparc-unknown-linux-gnu
|
||||
+ echo sparc-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||
- echo hppa64-unknown-linux-gnu
|
||||
+ echo hppa64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
||||
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
||||
- *) echo hppa-unknown-linux-gnu ;;
|
||||
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
|
||||
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
|
||||
+ *) echo hppa-unknown-linux-${LIBC} ;;
|
||||
esac
|
||||
exit ;;
|
||||
esac
|
||||
exit ;;
|
||||
ppc64:Linux:*:*)
|
||||
- echo powerpc64-unknown-linux-gnu
|
||||
+ echo powerpc64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
ppc:Linux:*:*)
|
||||
- echo powerpc-unknown-linux-gnu
|
||||
+ echo powerpc-unknown-linux-${LIBC}
|
||||
|
@ -581,55 +581,55 @@
|
|||
+ exit ;;
|
||||
+ ppcle:Linux:*:*)
|
||||
+ echo powerpcle-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
s390:Linux:*:* | s390x:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-ibm-linux
|
||||
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sh64*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sh*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
tile*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
vax:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:DYNIX/ptx:4*:*)
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
@@ -1201,6 +1227,9 @@ EOF
|
||||
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
|
||||
echo i586-pc-haiku
|
||||
exit ;;
|
||||
echo i586-pc-haiku
|
||||
exit ;;
|
||||
+ x86_64:Haiku:*:*)
|
||||
+ echo x86_64-unknown-haiku
|
||||
+ exit ;;
|
||||
SX-4:SUPER-UX:*:*)
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
@@ -1227,19 +1256,21 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:Darwin:*:*)
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
- case $UNAME_PROCESSOR in
|
||||
- i386)
|
||||
- eval $set_cc_for_build
|
||||
|
@ -658,11 +658,11 @@
|
|||
+ esac
|
||||
+ fi
|
||||
+ fi
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||
@@ -1330,9 +1361,6 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
-#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
|
@ -683,26 +683,26 @@
|
|||
# Find out which ABI we are using.
|
||||
echo 'int i;' > conftest.$ac_ext
|
||||
@@ -6936,7 +6936,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
- ppc64-*linux*|powerpc64-*linux*)
|
||||
+ powerpc64le-*linux*)
|
||||
+ LD="${LD-ld} -m elf32lppclinux"
|
||||
+ ;;
|
||||
+ powerpc64-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
@@ -6955,7 +6958,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
- ppc*-*linux*|powerpc*-*linux*)
|
||||
+ powerpcle-*linux*)
|
||||
+ LD="${LD-ld} -m elf64lppc"
|
||||
+ ;;
|
||||
+ powerpc-*linux*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
|
|
|
@ -46,14 +46,14 @@
|
|||
#endif
|
||||
- if(strcmp(tmp_buff, "..") == 0){
|
||||
+ if(idx - start == 2 && memcmp(start, "..", 2) == 0){
|
||||
--depth;
|
||||
if (depth < 0){
|
||||
fprintf(stderr, "Traversal to parent directories during unpacking!\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
--depth;
|
||||
if (depth < 0){
|
||||
fprintf(stderr, "Traversal to parent directories during unpacking!\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
- } else if (strcmp(tmp_buff, ".") != 0)
|
||||
+ } else if (idx - start != 1 || *start != '.')
|
||||
++depth;
|
||||
++depth;
|
||||
+
|
||||
+ start = idx + 1;
|
||||
+
|
||||
|
|
|
@ -6,18 +6,18 @@
|
|||
--- fastjar-0.97/Makefile.am.jj 2008-10-16 04:24:55.000000000 -0400
|
||||
+++ fastjar-0.97/Makefile.am 2010-06-21 09:29:41.021398000 -0400
|
||||
@@ -39,7 +39,7 @@ EXTRA_DIST = \
|
||||
texi2pod.pl
|
||||
texi2pod.pl
|
||||
|
||||
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
||||
-POD2MAN = pod2man --center="GNU" --release=@VERSION@
|
||||
+POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog)
|
||||
|
||||
.pod.1:
|
||||
-($(POD2MAN) --section=1 $< > $(@).T$$$$ && \
|
||||
-($(POD2MAN) --section=1 $< > $(@).T$$$$ && \
|
||||
--- fastjar-0.97/Makefile.in.jj 2008-10-16 04:15:16.000000000 -0400
|
||||
+++ fastjar-0.97/Makefile.in 2010-06-21 09:30:15.882810000 -0400
|
||||
@@ -515,7 +515,7 @@ EXTRA_DIST = \
|
||||
texi2pod.pl
|
||||
texi2pod.pl
|
||||
|
||||
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
||||
-POD2MAN = pod2man --center="GNU" --release=@VERSION@
|
||||
|
|
|
@ -93,3 +93,4 @@
|
|||
+typedef struct {const char *Array; String_Template *Bounds; } Fat_Pointer;
|
||||
|
||||
/* Types for Node/Entity Kinds: */
|
||||
|
||||
|
|
|
@ -32,3 +32,4 @@
|
|||
+
|
||||
/* Implement TARGET_HANDLE_OPTION.
|
||||
This function handles the target specific options for CPU/target selection.
|
||||
|
||||
|
|
|
@ -27,33 +27,33 @@
|
|||
for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++)
|
||||
{
|
||||
if (aarch64_register_saved_on_entry (regno))
|
||||
{
|
||||
{
|
||||
- rtx mem;
|
||||
+ rtx mem, reg1;
|
||||
mem = gen_mem_ref (DFmode,
|
||||
plus_constant (Pmode,
|
||||
base_rtx,
|
||||
start_offset));
|
||||
mem = gen_mem_ref (DFmode,
|
||||
plus_constant (Pmode,
|
||||
base_rtx,
|
||||
start_offset));
|
||||
+ reg1 = gen_rtx_REG (DFmode, regno);
|
||||
|
||||
for (regno2 = regno + 1;
|
||||
regno2 <= V31_REGNUM
|
||||
for (regno2 = regno + 1;
|
||||
regno2 <= V31_REGNUM
|
||||
@@ -1632,54 +1631,51 @@ aarch64_save_or_restore_fprs (int start_
|
||||
if (regno2 <= V31_REGNUM &&
|
||||
aarch64_register_saved_on_entry (regno2))
|
||||
{
|
||||
if (regno2 <= V31_REGNUM &&
|
||||
aarch64_register_saved_on_entry (regno2))
|
||||
{
|
||||
- rtx mem2;
|
||||
+ rtx mem2, reg2;
|
||||
/* Next highest register to be saved. */
|
||||
mem2 = gen_mem_ref (DFmode,
|
||||
plus_constant
|
||||
(Pmode,
|
||||
base_rtx,
|
||||
start_offset + increment));
|
||||
/* Next highest register to be saved. */
|
||||
mem2 = gen_mem_ref (DFmode,
|
||||
plus_constant
|
||||
(Pmode,
|
||||
base_rtx,
|
||||
start_offset + increment));
|
||||
+ reg2 = gen_rtx_REG (DFmode, regno2);
|
||||
+
|
||||
if (restore == false)
|
||||
{
|
||||
if (restore == false)
|
||||
{
|
||||
- insn = emit_insn
|
||||
- ( gen_store_pairdf (mem, gen_rtx_REG (DFmode, regno),
|
||||
- mem2, gen_rtx_REG (DFmode, regno2)));
|
||||
|
@ -65,9 +65,9 @@
|
|||
+ frame-related if explicitly marked. */
|
||||
+ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
- insn = emit_insn
|
||||
- ( gen_load_pairdf (gen_rtx_REG (DFmode, regno), mem,
|
||||
- gen_rtx_REG (DFmode, regno2), mem2));
|
||||
|
@ -77,7 +77,7 @@
|
|||
+ emit_insn (gen_load_pairdf (reg1, mem, reg2, mem2));
|
||||
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops);
|
||||
}
|
||||
}
|
||||
|
||||
- /* The first part of a frame-related parallel insn
|
||||
- is always assumed to be relevant to the frame
|
||||
|
@ -85,28 +85,28 @@
|
|||
- frame-related if explicitly marked. */
|
||||
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0,
|
||||
- 1)) = 1;
|
||||
regno = regno2;
|
||||
start_offset += increment * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (restore == false)
|
||||
regno = regno2;
|
||||
start_offset += increment * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (restore == false)
|
||||
- insn = emit_move_insn (mem, gen_rtx_REG (DFmode, regno));
|
||||
+ {
|
||||
+ insn = emit_move_insn (mem, reg1);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
else
|
||||
{
|
||||
- insn = emit_move_insn (gen_rtx_REG (DFmode, regno), mem);
|
||||
- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno));
|
||||
+ emit_move_insn (reg1, mem);
|
||||
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||
}
|
||||
start_offset += increment;
|
||||
}
|
||||
}
|
||||
start_offset += increment;
|
||||
}
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
-
|
||||
}
|
||||
|
@ -132,34 +132,34 @@
|
|||
@@ -1702,11 +1699,13 @@ aarch64_save_or_restore_callee_save_regi
|
||||
{
|
||||
if (aarch64_register_saved_on_entry (regno))
|
||||
{
|
||||
{
|
||||
- rtx mem;
|
||||
+ rtx mem, reg1;
|
||||
+
|
||||
mem = gen_mem_ref (Pmode,
|
||||
plus_constant (Pmode,
|
||||
base_rtx,
|
||||
start_offset));
|
||||
mem = gen_mem_ref (Pmode,
|
||||
plus_constant (Pmode,
|
||||
base_rtx,
|
||||
start_offset));
|
||||
+ reg1 = gen_rtx_REG (DImode, regno);
|
||||
|
||||
for (regno2 = regno + 1;
|
||||
regno2 <= limit
|
||||
for (regno2 = regno + 1;
|
||||
regno2 <= limit
|
||||
@@ -1718,56 +1717,54 @@ aarch64_save_or_restore_callee_save_regi
|
||||
if (regno2 <= limit &&
|
||||
aarch64_register_saved_on_entry (regno2))
|
||||
{
|
||||
if (regno2 <= limit &&
|
||||
aarch64_register_saved_on_entry (regno2))
|
||||
{
|
||||
- rtx mem2;
|
||||
+ rtx mem2, reg2;
|
||||
/* Next highest register to be saved. */
|
||||
mem2 = gen_mem_ref (Pmode,
|
||||
plus_constant
|
||||
(Pmode,
|
||||
base_rtx,
|
||||
start_offset + increment));
|
||||
/* Next highest register to be saved. */
|
||||
mem2 = gen_mem_ref (Pmode,
|
||||
plus_constant
|
||||
(Pmode,
|
||||
base_rtx,
|
||||
start_offset + increment));
|
||||
+ reg2 = gen_rtx_REG (DImode, regno2);
|
||||
+
|
||||
if (restore == false)
|
||||
{
|
||||
if (restore == false)
|
||||
{
|
||||
- insn = emit_insn
|
||||
- ( gen_store_pairdi (mem, gen_rtx_REG (DImode, regno),
|
||||
- mem2, gen_rtx_REG (DImode, regno2)));
|
||||
|
@ -171,9 +171,9 @@
|
|||
+ frame-related if explicitly marked. */
|
||||
+ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
- insn = emit_insn
|
||||
- ( gen_load_pairdi (gen_rtx_REG (DImode, regno), mem,
|
||||
- gen_rtx_REG (DImode, regno2), mem2));
|
||||
|
@ -183,7 +183,7 @@
|
|||
+ emit_insn (gen_load_pairdi (reg1, mem, reg2, mem2));
|
||||
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops);
|
||||
}
|
||||
}
|
||||
|
||||
- /* The first part of a frame-related parallel insn
|
||||
- is always assumed to be relevant to the frame
|
||||
|
@ -191,28 +191,28 @@
|
|||
- frame-related if explicitly marked. */
|
||||
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0,
|
||||
- 1)) = 1;
|
||||
regno = regno2;
|
||||
start_offset += increment * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (restore == false)
|
||||
regno = regno2;
|
||||
start_offset += increment * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (restore == false)
|
||||
- insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno));
|
||||
+ {
|
||||
+ insn = emit_move_insn (mem, reg1);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
else
|
||||
{
|
||||
- insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem);
|
||||
- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno));
|
||||
+ emit_move_insn (reg1, mem);
|
||||
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||
}
|
||||
start_offset += increment;
|
||||
}
|
||||
}
|
||||
start_offset += increment;
|
||||
}
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- aarch64_save_or_restore_fprs (start_offset, increment, restore, base_rtx);
|
||||
|
@ -223,7 +223,7 @@
|
|||
|
||||
/* AArch64 stack frames generated by this compiler look like:
|
||||
@@ -1966,7 +1963,7 @@ aarch64_expand_prologue (void)
|
||||
}
|
||||
}
|
||||
|
||||
aarch64_save_or_restore_callee_save_registers
|
||||
- (fp_offset + cfun->machine->frame.hardfp_offset, 0);
|
||||
|
@ -241,8 +241,8 @@
|
|||
original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size;
|
||||
@@ -2035,15 +2033,17 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||
insn = emit_insn (gen_add3_insn (stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx,
|
||||
GEN_INT (- fp_offset)));
|
||||
hard_frame_pointer_rtx,
|
||||
GEN_INT (- fp_offset)));
|
||||
+ /* CFA should be calculated from the value of SP from now on. */
|
||||
+ add_reg_note (insn, REG_CFA_ADJUST_CFA,
|
||||
+ gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
|
@ -263,17 +263,17 @@
|
|||
if (offset > 0)
|
||||
@@ -2051,6 +2051,8 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||
if (frame_pointer_needed)
|
||||
{
|
||||
rtx mem_fp, mem_lr;
|
||||
{
|
||||
rtx mem_fp, mem_lr;
|
||||
+ rtx reg_fp = hard_frame_pointer_rtx;
|
||||
+ rtx reg_lr = gen_rtx_REG (DImode, LR_REGNUM);
|
||||
|
||||
if (fp_offset)
|
||||
{
|
||||
if (fp_offset)
|
||||
{
|
||||
@@ -2063,52 +2065,36 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||
stack_pointer_rtx,
|
||||
fp_offset
|
||||
+ UNITS_PER_WORD));
|
||||
stack_pointer_rtx,
|
||||
fp_offset
|
||||
+ UNITS_PER_WORD));
|
||||
- insn = emit_insn (gen_load_pairdi (hard_frame_pointer_rtx,
|
||||
- mem_fp,
|
||||
- gen_rtx_REG (DImode,
|
||||
|
@ -283,10 +283,10 @@
|
|||
+
|
||||
+ insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||
+ GEN_INT (offset)));
|
||||
}
|
||||
else
|
||||
{
|
||||
insn = emit_insn (gen_loadwb_pairdi_di
|
||||
}
|
||||
else
|
||||
{
|
||||
insn = emit_insn (gen_loadwb_pairdi_di
|
||||
- (stack_pointer_rtx,
|
||||
- stack_pointer_rtx,
|
||||
- hard_frame_pointer_rtx,
|
||||
|
@ -294,7 +294,7 @@
|
|||
- GEN_INT (offset),
|
||||
+ (stack_pointer_rtx, stack_pointer_rtx,
|
||||
+ reg_fp, reg_lr, GEN_INT (offset),
|
||||
GEN_INT (GET_MODE_SIZE (DImode) + offset)));
|
||||
GEN_INT (GET_MODE_SIZE (DImode) + offset)));
|
||||
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1;
|
||||
- add_reg_note (insn, REG_CFA_ADJUST_CFA,
|
||||
- (gen_rtx_SET (Pmode, stack_pointer_rtx,
|
||||
|
@ -317,16 +317,16 @@
|
|||
- insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||
- GEN_INT (offset)));
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
}
|
||||
+ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_fp, cfi_ops);
|
||||
+ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_lr, cfi_ops);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||
GEN_INT (offset)));
|
||||
{
|
||||
insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||
GEN_INT (offset)));
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
}
|
||||
+ cfi_ops = alloc_reg_note (REG_CFA_ADJUST_CFA,
|
||||
+ gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
+ plus_constant (Pmode, cfa_reg,
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
@@ -1022,7 +1022,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
||||
# and the system's installed libraries.
|
||||
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
|
||||
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
||||
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
||||
-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||
+BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||
$(ZLIB)
|
||||
$(ZLIB)
|
||||
# Any system libraries needed just for GNAT.
|
||||
SYSLIBS = @GNAT_LIBEXC@
|
||||
@@ -3442,6 +3442,15 @@ $(common_out_object_file): $(common_out_
|
||||
$(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(OPTS_H) $(TM_H) $(TM_P_H) $(MACHMODE_H)
|
||||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
|
||||
$< $(OUTPUT_OPTION)
|
||||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
|
||||
$< $(OUTPUT_OPTION)
|
||||
+
|
||||
+graphite%.o : \
|
||||
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||
|
|
|
@ -47,8 +47,8 @@
|
|||
"TRACE=$(TRACE)" \
|
||||
@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
|
||||
"exeext=.exeext.should.not.be.used " \
|
||||
'CC=the.host.compiler.should.not.be.needed' \
|
||||
"GCC_FOR_TARGET=$(CC)" \
|
||||
'CC=the.host.compiler.should.not.be.needed' \
|
||||
"GCC_FOR_TARGET=$(CC)" \
|
||||
- "CFLAGS=$(CFLAGS)"
|
||||
+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
|
||||
|
||||
|
@ -68,30 +68,30 @@
|
|||
--- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
|
||||
+++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
|
||||
@@ -516,6 +516,8 @@ multi-do:
|
||||
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
||||
prefix="$(prefix)" \
|
||||
exec_prefix="$(exec_prefix)" \
|
||||
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
||||
prefix="$(prefix)" \
|
||||
exec_prefix="$(exec_prefix)" \
|
||||
+ mandir="$(mandir)" \
|
||||
+ infodir="$(infodir)" \
|
||||
GCJFLAGS="$(GCJFLAGS) $${flags}" \
|
||||
GOCFLAGS="$(GOCFLAGS) $${flags}" \
|
||||
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
||||
GCJFLAGS="$(GCJFLAGS) $${flags}" \
|
||||
GOCFLAGS="$(GOCFLAGS) $${flags}" \
|
||||
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
||||
--- libjava/Makefile.am.jj 2010-07-09 11:17:33.729604090 +0200
|
||||
+++ libjava/Makefile.am 2010-07-09 13:16:41.894375641 +0200
|
||||
@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
|
||||
## later.
|
||||
@echo Installing dummy lib libgcj_bc.so.1.0.0; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
@echo Installing dummy lib libgcj_bc.so.1.0.0; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
- mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
+ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
|
||||
-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
|
||||
rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
|
||||
--- libjava/Makefile.in.jj 2010-07-09 11:17:34.000000000 +0200
|
||||
+++ libjava/Makefile.in 2010-07-09 13:18:07.542572270 +0200
|
||||
@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
|
||||
install-libexecsubPROGRAMS
|
||||
install-libexecsubPROGRAMS
|
||||
@USE_LIBGCJ_BC_TRUE@ @echo Installing dummy lib libgcj_bc.so.1.0.0; \
|
||||
@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
-@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
|
||||
+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
|
||||
@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
|
||||
;;
|
||||
*)
|
||||
if test -z "$with_arch"; then
|
||||
;;
|
||||
*)
|
||||
if test -z "$with_arch"; then
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
fi
|
||||
esac
|
||||
;;
|
||||
fi
|
||||
esac
|
||||
;;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
--- libjava/configure.ac.jj 2007-12-07 17:55:50.000000000 +0100
|
||||
+++ libjava/configure.ac 2007-12-07 18:36:56.000000000 +0100
|
||||
@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
|
||||
[allow rebuilding of .class and .h files]))
|
||||
[allow rebuilding of .class and .h files]))
|
||||
AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
|
||||
|
||||
+AC_ARG_ENABLE(libjava-multilib,
|
||||
|
@ -40,3 +40,5 @@
|
|||
+fi
|
||||
+
|
||||
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
|
||||
|
||||
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
+++ libgo/Makefile.am 2014-02-18 17:31:54.798484657 +0100
|
||||
@@ -1109,8 +1109,7 @@ go_crypto_dsa_files = \
|
||||
go_crypto_ecdsa_files = \
|
||||
go/crypto/ecdsa/ecdsa.go
|
||||
go/crypto/ecdsa/ecdsa.go
|
||||
go_crypto_elliptic_files = \
|
||||
- go/crypto/elliptic/elliptic.go \
|
||||
- go/crypto/elliptic/p224.go
|
||||
+ go/crypto/elliptic/elliptic.go
|
||||
go_crypto_hmac_files = \
|
||||
go/crypto/hmac/hmac.go
|
||||
go/crypto/hmac/hmac.go
|
||||
go_crypto_md5_files = \
|
||||
--- libgo/Makefile.in.jj 2013-12-12 19:01:49.000000000 +0100
|
||||
+++ libgo/Makefile.in 2014-02-18 17:32:11.350389191 +0100
|
||||
@@ -1274,8 +1274,7 @@ go_crypto_ecdsa_files = \
|
||||
go/crypto/ecdsa/ecdsa.go
|
||||
go/crypto/ecdsa/ecdsa.go
|
||||
|
||||
go_crypto_elliptic_files = \
|
||||
- go/crypto/elliptic/elliptic.go \
|
||||
|
@ -21,7 +21,7 @@
|
|||
+ go/crypto/elliptic/elliptic.go
|
||||
|
||||
go_crypto_hmac_files = \
|
||||
go/crypto/hmac/hmac.go
|
||||
go/crypto/hmac/hmac.go
|
||||
--- libgo/go/crypto/elliptic/elliptic.go.jj 2012-12-13 11:32:02.640039537 +0100
|
||||
+++ libgo/go/crypto/elliptic/elliptic.go 2014-02-18 17:28:22.909692022 +0100
|
||||
@@ -327,7 +327,6 @@ var p384 *CurveParams
|
||||
|
@ -29,9 +29,9 @@
|
|||
|
||||
func initAll() {
|
||||
- initP224()
|
||||
initP256()
|
||||
initP384()
|
||||
initP521()
|
||||
initP256()
|
||||
initP384()
|
||||
initP521()
|
||||
--- libgo/go/crypto/elliptic/elliptic_test.go.jj 2012-12-13 11:32:02.640039537 +0100
|
||||
+++ libgo/go/crypto/elliptic/elliptic_test.go 2014-02-18 17:31:04.052774265 +0100
|
||||
@@ -5,329 +5,14 @@
|
||||
|
@ -42,7 +42,7 @@
|
|||
- "encoding/hex"
|
||||
- "fmt"
|
||||
- "math/big"
|
||||
"testing"
|
||||
"testing"
|
||||
)
|
||||
|
||||
-func TestOnCurve(t *testing.T) {
|
||||
|
@ -356,17 +356,17 @@
|
|||
-}
|
||||
-
|
||||
func TestInfinity(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
curve Curve
|
||||
}{
|
||||
tests := []struct {
|
||||
name string
|
||||
curve Curve
|
||||
}{
|
||||
- {"p224", P224()},
|
||||
{"p256", P256()},
|
||||
}
|
||||
{"p256", P256()},
|
||||
}
|
||||
|
||||
@@ -359,43 +44,3 @@ func TestInfinity(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-
|
||||
-func BenchmarkBaseMult(b *testing.B) {
|
||||
|
@ -415,26 +415,26 @@
|
|||
|
||||
func TestKeyGeneration(t *testing.T) {
|
||||
- testKeyGeneration(t, elliptic.P224(), "p224")
|
||||
if testing.Short() {
|
||||
return
|
||||
}
|
||||
if testing.Short() {
|
||||
return
|
||||
}
|
||||
@@ -63,7 +62,6 @@ func testSignAndVerify(t *testing.T, c e
|
||||
}
|
||||
|
||||
func TestSignAndVerify(t *testing.T) {
|
||||
- testSignAndVerify(t, elliptic.P224(), "p224")
|
||||
if testing.Short() {
|
||||
return
|
||||
}
|
||||
if testing.Short() {
|
||||
return
|
||||
}
|
||||
@@ -129,8 +127,6 @@ func TestVectors(t *testing.T) {
|
||||
parts := strings.SplitN(line, ",", 2)
|
||||
parts := strings.SplitN(line, ",", 2)
|
||||
|
||||
switch parts[0] {
|
||||
switch parts[0] {
|
||||
- case "P-224":
|
||||
- pub.Curve = elliptic.P224()
|
||||
case "P-256":
|
||||
pub.Curve = elliptic.P256()
|
||||
case "P-384":
|
||||
case "P-256":
|
||||
pub.Curve = elliptic.P256()
|
||||
case "P-384":
|
||||
--- libgo/go/crypto/x509/x509.go.jj 2013-08-14 13:55:08.939843607 +0200
|
||||
+++ libgo/go/crypto/x509/x509.go 2014-02-18 17:28:22.943691764 +0100
|
||||
@@ -283,9 +283,6 @@ func getPublicKeyAlgorithmFromOID(oid as
|
||||
|
@ -452,36 +452,36 @@
|
|||
// NB: secp256r1 is equivalent to prime256v1
|
||||
var (
|
||||
- oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33}
|
||||
oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
|
||||
oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
|
||||
oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
|
||||
oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
|
||||
oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
|
||||
oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
|
||||
@@ -306,8 +302,6 @@ var (
|
||||
|
||||
func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
|
||||
switch {
|
||||
switch {
|
||||
- case oid.Equal(oidNamedCurveP224):
|
||||
- return elliptic.P224()
|
||||
case oid.Equal(oidNamedCurveP256):
|
||||
return elliptic.P256()
|
||||
case oid.Equal(oidNamedCurveP384):
|
||||
case oid.Equal(oidNamedCurveP256):
|
||||
return elliptic.P256()
|
||||
case oid.Equal(oidNamedCurveP384):
|
||||
@@ -320,8 +314,6 @@ func namedCurveFromOID(oid asn1.ObjectId
|
||||
|
||||
func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
|
||||
switch curve {
|
||||
switch curve {
|
||||
- case elliptic.P224():
|
||||
- return oidNamedCurveP224, true
|
||||
case elliptic.P256():
|
||||
return oidNamedCurveP256, true
|
||||
case elliptic.P384():
|
||||
case elliptic.P256():
|
||||
return oidNamedCurveP256, true
|
||||
case elliptic.P384():
|
||||
@@ -1212,7 +1204,7 @@ func CreateCertificate(rand io.Reader, t
|
||||
hashFunc = crypto.SHA1
|
||||
case *ecdsa.PrivateKey:
|
||||
switch priv.Curve {
|
||||
hashFunc = crypto.SHA1
|
||||
case *ecdsa.PrivateKey:
|
||||
switch priv.Curve {
|
||||
- case elliptic.P224(), elliptic.P256():
|
||||
+ case elliptic.P256():
|
||||
hashFunc = crypto.SHA256
|
||||
signatureAlgorithm.Algorithm = oidSignatureECDSAWithSHA256
|
||||
case elliptic.P384():
|
||||
hashFunc = crypto.SHA256
|
||||
signatureAlgorithm.Algorithm = oidSignatureECDSAWithSHA256
|
||||
case elliptic.P384():
|
||||
--- libgo/go/crypto/elliptic/p224.go.jj 2012-12-13 11:32:02.641039533 +0100
|
||||
+++ libgo/go/crypto/elliptic/p224.go 2014-02-15 11:40:56.191557928 +0100
|
||||
@@ -1,765 +0,0 @@
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,3 +14,4 @@
|
|||
+ __attribute__((__aligned__(sizeof (void *))));
|
||||
} omp_nest_lock_t;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,26 +2,26 @@ libtool sucks.
|
|||
--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
|
||||
+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
|
||||
@@ -5394,6 +5394,7 @@ EOF
|
||||
rpath="$finalize_rpath"
|
||||
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
||||
for libdir in $rpath; do
|
||||
rpath="$finalize_rpath"
|
||||
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
||||
for libdir in $rpath; do
|
||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
@@ -6071,6 +6072,7 @@ EOF
|
||||
rpath=
|
||||
hardcode_libdirs=
|
||||
for libdir in $compile_rpath $finalize_rpath; do
|
||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
@@ -6120,6 +6122,7 @@ EOF
|
||||
rpath=
|
||||
hardcode_libdirs=
|
||||
for libdir in $finalize_rpath; do
|
||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
if test -n "$hardcode_libdir_flag_spec"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
if test -z "$hardcode_libdirs"; then
|
||||
|
|
|
@ -66,14 +66,14 @@
|
|||
/* Now output the underlying data. If we've handling the padding, return.
|
||||
@@ -4612,8 +4614,7 @@ output_constant (tree exp, unsigned HOST
|
||||
switch (TREE_CODE (exp))
|
||||
{
|
||||
case CONSTRUCTOR:
|
||||
{
|
||||
case CONSTRUCTOR:
|
||||
- output_constructor (exp, size, align, NULL);
|
||||
- return;
|
||||
+ return output_constructor (exp, size, align, NULL);
|
||||
case STRING_CST:
|
||||
thissize = MIN ((unsigned HOST_WIDE_INT)TREE_STRING_LENGTH (exp),
|
||||
size);
|
||||
case STRING_CST:
|
||||
thissize = MIN ((unsigned HOST_WIDE_INT)TREE_STRING_LENGTH (exp),
|
||||
size);
|
||||
@@ -4648,11 +4649,10 @@ output_constant (tree exp, unsigned HOST
|
||||
case RECORD_TYPE:
|
||||
case UNION_TYPE:
|
||||
|
@ -99,7 +99,7 @@
|
|||
|
||||
@@ -4759,7 +4761,7 @@ output_constructor_array_range (oc_local
|
||||
if (local->val == NULL_TREE)
|
||||
assemble_zeros (fieldsize);
|
||||
assemble_zeros (fieldsize);
|
||||
else
|
||||
- output_constant (local->val, fieldsize, align2);
|
||||
+ fieldsize = output_constant (local->val, fieldsize, align2);
|
||||
|
|
|
@ -94,9 +94,9 @@ c/
|
|||
|
||||
/* Add an 'abstract_origin' attribute below a given DIE. The DIE is found
|
||||
@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena
|
||||
if (strcmp (language_string, "GNU Go") == 0)
|
||||
language = DW_LANG_Go;
|
||||
}
|
||||
if (strcmp (language_string, "GNU Go") == 0)
|
||||
language = DW_LANG_Go;
|
||||
}
|
||||
+ else if (strcmp (language_string, "GNU C") == 0
|
||||
+ && lang_hooks.source_language
|
||||
+ && lang_hooks.source_language () >= 1999)
|
||||
|
|
|
@ -15,24 +15,24 @@
|
|||
+++ gcc/combine.c (revision 208204)
|
||||
@@ -3706,6 +3706,9 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
|
||||
#ifdef HAVE_cc0
|
||||
&& !reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 0))
|
||||
&& !reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 0))
|
||||
#endif
|
||||
+ /* If I3 is a jump, ensure that set0 is a jump so that
|
||||
+ we do not create invalid RTL. */
|
||||
+ && (!JUMP_P (i3) || SET_DEST (XVECEXP (newpat, 0, 0)) == pc_rtx)
|
||||
)
|
||||
{
|
||||
newi2pat = XVECEXP (newpat, 0, 1);
|
||||
)
|
||||
{
|
||||
newi2pat = XVECEXP (newpat, 0, 1);
|
||||
@@ -3716,6 +3719,9 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
|
||||
#ifdef HAVE_cc0
|
||||
&& !reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 1))
|
||||
&& !reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 1))
|
||||
#endif
|
||||
+ /* If I3 is a jump, ensure that set1 is a jump so that
|
||||
+ we do not create invalid RTL. */
|
||||
+ && (!JUMP_P (i3) || SET_DEST (XVECEXP (newpat, 0, 1)) == pc_rtx)
|
||||
)
|
||||
{
|
||||
newi2pat = XVECEXP (newpat, 0, 0);
|
||||
)
|
||||
{
|
||||
newi2pat = XVECEXP (newpat, 0, 0);
|
||||
--- gcc/testsuite/gcc.c-torture/compile/pr52714.c (revision 0)
|
||||
+++ gcc/testsuite/gcc.c-torture/compile/pr52714.c (revision 208204)
|
||||
@@ -0,0 +1,25 @@
|
||||
|
|
|
@ -179,7 +179,7 @@
|
|||
- is too precious. */
|
||||
+ is too precious. */
|
||||
if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
|
||||
align = data_align;
|
||||
align = data_align;
|
||||
#endif
|
||||
@@ -989,9 +1056,7 @@ align_variable (tree decl, bool dont_out
|
||||
#endif
|
||||
|
@ -193,7 +193,7 @@
|
|||
|
||||
/* Return the section into which the given VAR_DECL or CONST_DECL
|
||||
@@ -1043,7 +1108,8 @@ get_variable_section (tree decl, bool pr
|
||||
return bss_noswitch_section;
|
||||
return bss_noswitch_section;
|
||||
}
|
||||
|
||||
- return targetm.asm_out.select_section (decl, reloc, DECL_ALIGN (decl));
|
||||
|
@ -203,7 +203,7 @@
|
|||
|
||||
/* Return the block into which object_block DECL should be placed. */
|
||||
@@ -1780,7 +1846,8 @@ emit_bss (tree decl ATTRIBUTE_UNUSED,
|
||||
unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED)
|
||||
unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED)
|
||||
{
|
||||
#if defined ASM_OUTPUT_ALIGNED_BSS
|
||||
- ASM_OUTPUT_ALIGNED_BSS (asm_out_file, decl, name, size, DECL_ALIGN (decl));
|
||||
|
@ -237,23 +237,23 @@
|
|||
unsigned HOST_WIDE_INT size, rounded;
|
||||
|
||||
@@ -1850,7 +1919,7 @@ assemble_noswitch_variable (tree decl, c
|
||||
* (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
|
||||
* (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
|
||||
|
||||
if (!sect->noswitch.callback (decl, name, size, rounded)
|
||||
- && (unsigned HOST_WIDE_INT) DECL_ALIGN_UNIT (decl) > rounded)
|
||||
+ && (unsigned HOST_WIDE_INT) (align / BITS_PER_UNIT) > rounded)
|
||||
warning (0, "requested alignment for %q+D is greater than "
|
||||
"implemented alignment of %wu", decl, rounded);
|
||||
"implemented alignment of %wu", decl, rounded);
|
||||
}
|
||||
@@ -1880,7 +1949,7 @@ assemble_variable_contents (tree decl, c
|
||||
/* Output the actual data. */
|
||||
output_constant (DECL_INITIAL (decl),
|
||||
tree_low_cst (DECL_SIZE_UNIT (decl), 1),
|
||||
/* Output the actual data. */
|
||||
output_constant (DECL_INITIAL (decl),
|
||||
tree_low_cst (DECL_SIZE_UNIT (decl), 1),
|
||||
- DECL_ALIGN (decl));
|
||||
+ get_variable_align (decl));
|
||||
else
|
||||
/* Leave space for it. */
|
||||
assemble_zeros (tree_low_cst (DECL_SIZE_UNIT (decl), 1));
|
||||
/* Leave space for it. */
|
||||
assemble_zeros (tree_low_cst (DECL_SIZE_UNIT (decl), 1));
|
||||
@@ -1904,6 +1973,7 @@ assemble_variable (tree decl, int top_le
|
||||
const char *name;
|
||||
rtx decl_rtl, symbol;
|
||||
|
@ -286,7 +286,7 @@
|
|||
+ ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (align / BITS_PER_UNIT));
|
||||
assemble_variable_contents (decl, name, dont_output_data);
|
||||
if (asan_protected)
|
||||
{
|
||||
{
|
||||
@@ -6709,10 +6781,10 @@ bool
|
||||
decl_binds_to_current_def_p (tree decl)
|
||||
{
|
||||
|
@ -301,7 +301,7 @@
|
|||
if (TREE_CODE (decl) == VAR_DECL
|
||||
&& (TREE_STATIC (decl) || DECL_EXTERNAL (decl)))
|
||||
@@ -6730,10 +6802,20 @@ decl_binds_to_current_def_p (tree decl)
|
||||
return resolution_to_local_definition_p (node->symbol.resolution);
|
||||
return resolution_to_local_definition_p (node->symbol.resolution);
|
||||
}
|
||||
/* Otherwise we have to assume the worst for DECL_WEAK (hidden weaks
|
||||
- binds locally but still can be overwritten).
|
||||
|
@ -331,7 +331,7 @@
|
|||
+ alignment = get_variable_align (decl);
|
||||
size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
|
||||
if (flag_asan && asan_protect_global (decl))
|
||||
{
|
||||
{
|
||||
--- gcc/config/s390/s390.h (revision 199897)
|
||||
+++ gcc/config/s390/s390.h (revision 199898)
|
||||
@@ -221,7 +221,7 @@ enum processor_flags
|
||||
|
@ -374,7 +374,7 @@
|
|||
-extern int ix86_data_alignment (tree, int);
|
||||
+extern int ix86_data_alignment (tree, int, bool);
|
||||
extern unsigned int ix86_local_alignment (tree, enum machine_mode,
|
||||
unsigned int);
|
||||
unsigned int);
|
||||
extern unsigned int ix86_minimum_alignment (tree, enum machine_mode,
|
||||
--- gcc/config/i386/i386.c (revision 199897)
|
||||
+++ gcc/config/i386/i386.c (revision 199898)
|
||||
|
@ -408,7 +408,7 @@
|
|||
+ && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
|
||||
+ && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 128
|
||||
+ || TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 128)
|
||||
return 128;
|
||||
return 128;
|
||||
}
|
||||
|
||||
+ if (!opt)
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
+ emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx));
|
||||
+
|
||||
insn = emit_insn (gen_add3_insn (stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx,
|
||||
GEN_INT (- fp_offset)));
|
||||
hard_frame_pointer_rtx,
|
||||
GEN_INT (- fp_offset)));
|
||||
@@ -2048,6 +2054,9 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||
/* Restore the frame pointer and lr if the frame pointer is needed. */
|
||||
if (offset > 0)
|
||||
|
@ -35,19 +35,19 @@
|
|||
+ emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx));
|
||||
+
|
||||
if (frame_pointer_needed)
|
||||
{
|
||||
rtx mem_fp, mem_lr;
|
||||
{
|
||||
rtx mem_fp, mem_lr;
|
||||
@@ -2067,6 +2076,10 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||
+ UNITS_PER_WORD));
|
||||
emit_insn (gen_load_pairdi (reg_fp, mem_fp, reg_lr, mem_lr));
|
||||
+ UNITS_PER_WORD));
|
||||
emit_insn (gen_load_pairdi (reg_fp, mem_fp, reg_lr, mem_lr));
|
||||
|
||||
+ if (need_barrier_p)
|
||||
+ emit_insn (gen_stack_tie (stack_pointer_rtx,
|
||||
+ stack_pointer_rtx));
|
||||
+
|
||||
insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||
GEN_INT (offset)));
|
||||
}
|
||||
insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||
GEN_INT (offset)));
|
||||
}
|
||||
@@ -2128,6 +2141,9 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||
|
||||
if (frame_size > -1)
|
||||
|
@ -56,5 +56,5 @@
|
|||
+ emit_insn (gen_stack_tie (stack_pointer_rtx, stack_pointer_rtx));
|
||||
+
|
||||
if (frame_size >= 0x1000000)
|
||||
{
|
||||
rtx op0 = gen_rtx_REG (Pmode, IP0_REGNUM);
|
||||
{
|
||||
rtx op0 = gen_rtx_REG (Pmode, IP0_REGNUM);
|
||||
|
|
|
@ -20,3 +20,4 @@
|
|||
+ std::__throw_runtime_error(__N("random_device could not be read"));
|
||||
return __ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
+++ gcc/config/aarch64/aarch64.md (revision 226592)
|
||||
@@ -3101,6 +3101,17 @@
|
||||
(mult:GPF
|
||||
(neg:GPF (match_operand:GPF 1 "register_operand" "w"))
|
||||
(match_operand:GPF 2 "register_operand" "w")))]
|
||||
(neg:GPF (match_operand:GPF 1 "register_operand" "w"))
|
||||
(match_operand:GPF 2 "register_operand" "w")))]
|
||||
+ "TARGET_FLOAT && !flag_rounding_math"
|
||||
+ "fnmul\\t%<s>0, %<s>1, %<s>2"
|
||||
+ [(set_attr "v8type" "fmul")
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
2015-07-14 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
PR target/66840
|
||||
* config/rs6000/t-rs6000 (TM_H): Add rs6000-cpus.def.
|
||||
|
||||
diff -Nrup a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000
|
||||
--- /gcc/config/rs6000/t-rs6000 2013-08-14 05:55:11.000000000 -0600
|
||||
+++ gcc/config/rs6000/t-rs6000 2018-04-18 12:09:30.614737081 -0600
|
||||
@@ -19,6 +19,7 @@
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
|
||||
+TM_H += $(srcdir)/config/rs6000/rs6000-cpus.def
|
||||
|
||||
rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(REGS_H) hard-reg-set.h \
|
|
@ -114,9 +114,9 @@
|
|||
+
|
||||
+(define_insn "*tabort<wd>c"
|
||||
[(set (match_operand:CC 3 "cc_reg_operand" "=x")
|
||||
(unspec_volatile:CC [(match_operand 0 "u5bit_cint_operand" "n")
|
||||
(match_operand:GPR 1 "gpc_reg_operand" "r")
|
||||
(match_operand:GPR 2 "gpc_reg_operand" "r")]
|
||||
(unspec_volatile:CC [(match_operand 0 "u5bit_cint_operand" "n")
|
||||
(match_operand:GPR 1 "gpc_reg_operand" "r")
|
||||
(match_operand:GPR 2 "gpc_reg_operand" "r")]
|
||||
- UNSPECV_HTM_TABORTXC))]
|
||||
+ UNSPECV_HTM_TABORTXC))
|
||||
+ (set (match_operand:BLK 4) (unspec:BLK [(match_dup 4)] UNSPEC_HTM_FENCE))]
|
||||
|
@ -142,9 +142,9 @@
|
|||
+
|
||||
+(define_insn "*tabort<wd>ci"
|
||||
[(set (match_operand:CC 3 "cc_reg_operand" "=x")
|
||||
(unspec_volatile:CC [(match_operand 0 "u5bit_cint_operand" "n")
|
||||
(match_operand:GPR 1 "gpc_reg_operand" "r")
|
||||
(match_operand 2 "s5bit_cint_operand" "n")]
|
||||
(unspec_volatile:CC [(match_operand 0 "u5bit_cint_operand" "n")
|
||||
(match_operand:GPR 1 "gpc_reg_operand" "r")
|
||||
(match_operand 2 "s5bit_cint_operand" "n")]
|
||||
- UNSPECV_HTM_TABORTXCI))]
|
||||
+ UNSPECV_HTM_TABORTXCI))
|
||||
+ (set (match_operand:BLK 4) (unspec:BLK [(match_dup 4)] UNSPEC_HTM_FENCE))]
|
||||
|
@ -168,7 +168,7 @@
|
|||
+
|
||||
+(define_insn "*tbegin"
|
||||
[(set (match_operand:CC 1 "cc_reg_operand" "=x")
|
||||
(unspec_volatile:CC [(match_operand 0 "const_0_to_1_operand" "n")]
|
||||
(unspec_volatile:CC [(match_operand 0 "const_0_to_1_operand" "n")]
|
||||
- UNSPECV_HTM_TBEGIN))]
|
||||
+ UNSPECV_HTM_TBEGIN))
|
||||
+ (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
|
||||
|
@ -215,7 +215,7 @@
|
|||
+
|
||||
+(define_insn "*tend"
|
||||
[(set (match_operand:CC 1 "cc_reg_operand" "=x")
|
||||
(unspec_volatile:CC [(match_operand 0 "const_0_to_1_operand" "n")]
|
||||
(unspec_volatile:CC [(match_operand 0 "const_0_to_1_operand" "n")]
|
||||
- UNSPECV_HTM_TEND))]
|
||||
+ UNSPECV_HTM_TEND))
|
||||
+ (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
|
||||
|
@ -262,7 +262,7 @@
|
|||
+
|
||||
+(define_insn "*treclaim"
|
||||
[(set (match_operand:CC 1 "cc_reg_operand" "=x")
|
||||
(unspec_volatile:CC [(match_operand:SI 0 "gpc_reg_operand" "r")]
|
||||
(unspec_volatile:CC [(match_operand:SI 0 "gpc_reg_operand" "r")]
|
||||
- UNSPECV_HTM_TRECLAIM))]
|
||||
+ UNSPECV_HTM_TRECLAIM))
|
||||
+ (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
|
||||
|
@ -286,7 +286,7 @@
|
|||
+
|
||||
+(define_insn "*tsr"
|
||||
[(set (match_operand:CC 1 "cc_reg_operand" "=x")
|
||||
(unspec_volatile:CC [(match_operand 0 "const_0_to_1_operand" "n")]
|
||||
(unspec_volatile:CC [(match_operand 0 "const_0_to_1_operand" "n")]
|
||||
- UNSPECV_HTM_TSR))]
|
||||
+ UNSPECV_HTM_TSR))
|
||||
+ (set (match_operand:BLK 2) (unspec:BLK [(match_dup 2)] UNSPEC_HTM_FENCE))]
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
--- gcc/calls.c (revision 231278)
|
||||
+++ gcc/calls.c (revision 231279)
|
||||
@@ -564,6 +564,17 @@ special_function_p (const_tree fndecl, i
|
||||
flags |= ECF_NORETURN;
|
||||
flags |= ECF_NORETURN;
|
||||
}
|
||||
|
||||
+ if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL)
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
2016-12-13 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2016-12-07 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
PR target/72717
|
||||
* config/rs6000/rs6000.c (rs6000_expand_vector_init): If the
|
||||
V2DImode elements are SUBREG's convert the result into DImode
|
||||
rather than failing in emit_move_insn.
|
||||
|
||||
--- gcc/testsuite/gcc.target/powerpc/pr72717.c (nonexistent)
|
||||
+++ gcc/testsuite/gcc.target/powerpc/pr72717.c (revision 243626)
|
||||
@@ -0,0 +1,18 @@
|
||||
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
|
||||
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
|
||||
+/* { dg-require-effective-target powerpc_p8vector_ok } */
|
||||
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
|
||||
+/* { dg-options "-mcpu=power8 -O2" } */
|
||||
+
|
||||
+typedef long V __attribute__((__vector_size__(32)));
|
||||
+
|
||||
+extern void foo (V *, V*);
|
||||
+
|
||||
+/* This test generated an failure in emit_move_insn. */
|
||||
+
|
||||
+void
|
||||
+foo(V *p, V *q)
|
||||
+{
|
||||
+ V v = *q;
|
||||
+ *p = v << v[0];
|
||||
+}
|
||||
--- gcc/config/rs6000/rs6000.c (revision 243625)
|
||||
+++ gcc/config/rs6000/rs6000.c (revision 243626)
|
||||
@@ -6667,25 +6667,43 @@
|
||||
/* Double word values on VSX can use xxpermdi or lxvdsx. */
|
||||
if (VECTOR_MEM_VSX_P (mode) && (mode == V2DFmode || mode == V2DImode))
|
||||
{
|
||||
- rtx op0 = XVECEXP (vals, 0, 0);
|
||||
- rtx op1 = XVECEXP (vals, 0, 1);
|
||||
+ rtx op[2];
|
||||
+ size_t i;
|
||||
+ size_t num_elements = (all_same) ? 1 : 2;
|
||||
+ for (i = 0; i < num_elements; i++)
|
||||
+ {
|
||||
+ op[i] = XVECEXP (vals, 0, i);
|
||||
+ /* Just in case there is a SUBREG with a smaller mode, do a
|
||||
+ conversion. */
|
||||
+ if (GET_MODE (op[i]) != inner_mode)
|
||||
+ {
|
||||
+ rtx tmp = gen_reg_rtx (inner_mode);
|
||||
+ convert_move (tmp, op[i], 0);
|
||||
+ op[i] = tmp;
|
||||
+ }
|
||||
+ /* Allow load with splat double word. */
|
||||
+ else if (MEM_P (op[i]))
|
||||
+ {
|
||||
+ if (!all_same)
|
||||
+ op[i] = force_reg (inner_mode, op[i]);
|
||||
+ }
|
||||
+ else if (!REG_P (op[i]))
|
||||
+ op[i] = force_reg (inner_mode, op[i]);
|
||||
+ }
|
||||
+
|
||||
if (all_same)
|
||||
{
|
||||
- if (!MEM_P (op0) && !REG_P (op0))
|
||||
- op0 = force_reg (inner_mode, op0);
|
||||
if (mode == V2DFmode)
|
||||
- emit_insn (gen_vsx_splat_v2df (target, op0));
|
||||
+ emit_insn (gen_vsx_splat_v2df (target, op[0]));
|
||||
else
|
||||
- emit_insn (gen_vsx_splat_v2di (target, op0));
|
||||
+ emit_insn (gen_vsx_splat_v2di (target, op[0]));
|
||||
}
|
||||
else
|
||||
{
|
||||
- op0 = force_reg (inner_mode, op0);
|
||||
- op1 = force_reg (inner_mode, op1);
|
||||
if (mode == V2DFmode)
|
||||
- emit_insn (gen_vsx_concat_v2df (target, op0, op1));
|
||||
+ emit_insn (gen_vsx_concat_v2df (target, op[0], op[1]));
|
||||
else
|
||||
- emit_insn (gen_vsx_concat_v2di (target, op0, op1));
|
||||
+ emit_insn (gen_vsx_concat_v2di (target, op[0], op[1]));
|
||||
}
|
||||
return;
|
||||
}
|
|
@ -13,7 +13,7 @@
|
|||
+++ gcc/config/rs6000/vsx.md (revision 239762)
|
||||
@@ -716,13 +716,27 @@ (define_expand "vsx_load_<mode>"
|
||||
[(set (match_operand:VSX_M 0 "vsx_register_operand" "")
|
||||
(match_operand:VSX_M 1 "memory_operand" ""))]
|
||||
(match_operand:VSX_M 1 "memory_operand" ""))]
|
||||
"VECTOR_MEM_VSX_P (<MODE>mode)"
|
||||
- "")
|
||||
+{
|
||||
|
@ -27,7 +27,7 @@
|
|||
|
||||
(define_expand "vsx_store_<mode>"
|
||||
[(set (match_operand:VSX_M 0 "memory_operand" "")
|
||||
(match_operand:VSX_M 1 "vsx_register_operand" ""))]
|
||||
(match_operand:VSX_M 1 "vsx_register_operand" ""))]
|
||||
"VECTOR_MEM_VSX_P (<MODE>mode)"
|
||||
- "")
|
||||
+{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
2017-05-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backported from mainline
|
||||
Backported from mainline
|
||||
2016-09-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/77375
|
||||
|
@ -12,14 +12,14 @@
|
|||
--- gcc/cp/class.c 2017-10-17 17:27:32.287980595 +0200
|
||||
+++ gcc/cp/class.c 2017-10-17 17:29:11.104213281 +0200
|
||||
@@ -1479,6 +1479,8 @@ check_bases (tree t,
|
||||
|= CLASSTYPE_CONTAINS_EMPTY_CLASS_P (basetype);
|
||||
|= CLASSTYPE_CONTAINS_EMPTY_CLASS_P (basetype);
|
||||
TYPE_HAS_COMPLEX_DFLT (t) |= (!TYPE_HAS_DEFAULT_CONSTRUCTOR (basetype)
|
||||
|| TYPE_HAS_COMPLEX_DFLT (basetype));
|
||||
|| TYPE_HAS_COMPLEX_DFLT (basetype));
|
||||
+ if (TYPE_HAS_MUTABLE_P (basetype))
|
||||
+ CLASSTYPE_HAS_MUTABLE (t) = 1;
|
||||
|
||||
/* A standard-layout class is a class that:
|
||||
...
|
||||
...
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/g++.dg/cpp0x/mutable1.C
|
||||
@@ -0,0 +1,12 @@
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
2017-05-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backported from mainline
|
||||
Backported from mainline
|
||||
2016-12-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/77767
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
2017-05-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backported from mainline
|
||||
Backported from mainline
|
||||
2016-11-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/78378
|
||||
|
@ -14,11 +14,11 @@
|
|||
@@ -7342,6 +7342,7 @@ make_extraction (machine_mode mode, rtx inner, HOST_WIDE_INT pos,
|
||||
if (tmode != BLKmode
|
||||
&& ((pos_rtx == 0 && (pos % BITS_PER_WORD) == 0
|
||||
&& !MEM_P (inner)
|
||||
&& !MEM_P (inner)
|
||||
+ && (pos == 0 || REG_P (inner))
|
||||
&& (inner_mode == tmode
|
||||
|| !REG_P (inner)
|
||||
|| TRULY_NOOP_TRUNCATION_MODES_P (tmode, inner_mode)
|
||||
&& (inner_mode == tmode
|
||||
|| !REG_P (inner)
|
||||
|| TRULY_NOOP_TRUNCATION_MODES_P (tmode, inner_mode)
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.c-torture/execute/pr78378.c
|
||||
@@ -0,0 +1,18 @@
|
||||
|
@ -40,3 +40,4 @@
|
|||
+ __builtin_abort();
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
+++ gcc/expmed.c
|
||||
@@ -3844,7 +3844,15 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
if (unsignedp)
|
||||
ext_op1 &= GET_MODE_MASK (mode);
|
||||
ext_op1 &= GET_MODE_MASK (mode);
|
||||
op1_is_pow2 = ((EXACT_POWER_OF_2_OR_ZERO_P (ext_op1)
|
||||
- || (! unsignedp && EXACT_POWER_OF_2_OR_ZERO_P (-ext_op1))));
|
||||
+ /* If mode is wider than HWI and op1 has msb set,
|
||||
|
@ -28,7 +28,7 @@
|
|||
@@ -3987,8 +3995,17 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
op1_is_constant = CONST_INT_P (op1);
|
||||
op1_is_pow2 = (op1_is_constant
|
||||
&& ((EXACT_POWER_OF_2_OR_ZERO_P (INTVAL (op1))
|
||||
&& ((EXACT_POWER_OF_2_OR_ZERO_P (INTVAL (op1))
|
||||
- || (! unsignedp
|
||||
- && EXACT_POWER_OF_2_OR_ZERO_P (-UINTVAL (op1))))));
|
||||
+ /* If mode is wider than HWI and op1 has msb set,
|
||||
|
@ -46,46 +46,46 @@
|
|||
|
||||
/* If one of the operands is a volatile MEM, copy it into a register. */
|
||||
@@ -4031,7 +4048,8 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
unsigned HOST_WIDE_INT d = (INTVAL (op1)
|
||||
& GET_MODE_MASK (compute_mode));
|
||||
unsigned HOST_WIDE_INT d = (INTVAL (op1)
|
||||
& GET_MODE_MASK (compute_mode));
|
||||
|
||||
- if (EXACT_POWER_OF_2_OR_ZERO_P (d))
|
||||
+ if (EXACT_POWER_OF_2_OR_ZERO_P (d)
|
||||
+ && (INTVAL (op1) >= 0 || size <= HOST_BITS_PER_WIDE_INT))
|
||||
{
|
||||
pre_shift = floor_log2 (d);
|
||||
if (rem_flag)
|
||||
{
|
||||
pre_shift = floor_log2 (d);
|
||||
if (rem_flag)
|
||||
@@ -4179,6 +4197,7 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
goto fail1;
|
||||
}
|
||||
else if (EXACT_POWER_OF_2_OR_ZERO_P (d)
|
||||
goto fail1;
|
||||
}
|
||||
else if (EXACT_POWER_OF_2_OR_ZERO_P (d)
|
||||
+ && (size <= HOST_BITS_PER_WIDE_INT || d >= 0)
|
||||
&& (rem_flag
|
||||
? smod_pow2_cheap (speed, compute_mode)
|
||||
: sdiv_pow2_cheap (speed, compute_mode))
|
||||
&& (rem_flag
|
||||
? smod_pow2_cheap (speed, compute_mode)
|
||||
: sdiv_pow2_cheap (speed, compute_mode))
|
||||
@@ -4192,7 +4211,9 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
compute_mode)
|
||||
!= CODE_FOR_nothing)))
|
||||
;
|
||||
compute_mode)
|
||||
!= CODE_FOR_nothing)))
|
||||
;
|
||||
- else if (EXACT_POWER_OF_2_OR_ZERO_P (abs_d))
|
||||
+ else if (EXACT_POWER_OF_2_OR_ZERO_P (abs_d)
|
||||
+ && (size <= HOST_BITS_PER_WIDE_INT
|
||||
+ || abs_d != (unsigned HOST_WIDE_INT) d))
|
||||
{
|
||||
if (rem_flag)
|
||||
{
|
||||
{
|
||||
if (rem_flag)
|
||||
{
|
||||
@@ -4504,7 +4525,10 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
|
||||
case CEIL_MOD_EXPR:
|
||||
if (unsignedp)
|
||||
{
|
||||
if (unsignedp)
|
||||
{
|
||||
- if (op1_is_constant && EXACT_POWER_OF_2_OR_ZERO_P (INTVAL (op1)))
|
||||
+ if (op1_is_constant
|
||||
+ && EXACT_POWER_OF_2_OR_ZERO_P (INTVAL (op1))
|
||||
+ && (size <= HOST_BITS_PER_WIDE_INT
|
||||
+ || INTVAL (op1) >= 0))
|
||||
{
|
||||
rtx t1, t2, t3;
|
||||
unsigned HOST_WIDE_INT d = INTVAL (op1);
|
||||
{
|
||||
rtx t1, t2, t3;
|
||||
unsigned HOST_WIDE_INT d = INTVAL (op1);
|
||||
--- gcc/testsuite/gcc.dg/torture/pr78416.c
|
||||
+++ gcc/testsuite/gcc.dg/torture/pr78416.c
|
||||
@@ -0,0 +1,17 @@
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
--- gcc/config/rs6000/rs6000.c (revision 244555)
|
||||
+++ gcc/config/rs6000/rs6000.c (revision 244556)
|
||||
@@ -3727,6 +3727,54 @@ rs6000_option_override_internal (bool gl
|
||||
atoi (rs6000_sched_insert_nops_str));
|
||||
atoi (rs6000_sched_insert_nops_str));
|
||||
}
|
||||
|
||||
+ /* Handle stack protector */
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
--- gcc/config/rs6000/predicates.md (revision 245812)
|
||||
+++ gcc/config/rs6000/predicates.md (revision 245813)
|
||||
@@ -1086,8 +1086,8 @@
|
||||
&& ((DEFAULT_ABI != ABI_AIX
|
||||
&& DEFAULT_ABI != ABI_ELFv2)
|
||||
|| !SYMBOL_REF_EXTERNAL_P (op)))
|
||||
&& ((DEFAULT_ABI != ABI_AIX
|
||||
&& DEFAULT_ABI != ABI_ELFv2)
|
||||
|| !SYMBOL_REF_EXTERNAL_P (op)))
|
||||
- || (op == XEXP (DECL_RTL (current_function_decl),
|
||||
- 0)))")))
|
||||
+ || (op == XEXP (DECL_RTL (current_function_decl), 0)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
2017-05-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backported from mainline
|
||||
Backported from mainline
|
||||
2017-03-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/80129
|
||||
|
@ -12,8 +12,8 @@
|
|||
--- gcc/gimplify.c
|
||||
+++ gcc/gimplify.c
|
||||
@@ -4293,6 +4293,14 @@ gimplify_modify_expr_rhs (tree *expr_p, tree *from_p, tree *to_p,
|
||||
if (ret != GS_ERROR)
|
||||
ret = GS_OK;
|
||||
if (ret != GS_ERROR)
|
||||
ret = GS_OK;
|
||||
|
||||
+ /* If we are going to write RESULT more than once, clear
|
||||
+ TREE_READONLY flag, otherwise we might incorrectly promote
|
||||
|
@ -23,9 +23,9 @@
|
|||
+ && TREE_TYPE (TREE_OPERAND (cond, 1)) != void_type_node
|
||||
+ && TREE_TYPE (TREE_OPERAND (cond, 2)) != void_type_node)
|
||||
+ TREE_READONLY (result) = 0;
|
||||
if (TREE_TYPE (TREE_OPERAND (cond, 1)) != void_type_node)
|
||||
TREE_OPERAND (cond, 1)
|
||||
= build2 (code, void_type_node, result,
|
||||
if (TREE_TYPE (TREE_OPERAND (cond, 1)) != void_type_node)
|
||||
TREE_OPERAND (cond, 1)
|
||||
= build2 (code, void_type_node, result,
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/g++.dg/torture/pr80129.C
|
||||
@@ -0,0 +1,14 @@
|
||||
|
|
|
@ -13,15 +13,15 @@
|
|||
+++ gcc/fold-const.c
|
||||
@@ -11940,8 +11942,8 @@ fold_binary_loc (location_t loc,
|
||||
/* Convert -A / -B to A / B when the type is signed and overflow is
|
||||
undefined. */
|
||||
undefined. */
|
||||
if ((!INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type))
|
||||
- && TREE_CODE (arg0) == NEGATE_EXPR
|
||||
- && negate_expr_p (arg1))
|
||||
+ && TREE_CODE (op0) == NEGATE_EXPR
|
||||
+ && negate_expr_p (op1))
|
||||
{
|
||||
if (INTEGRAL_TYPE_P (type))
|
||||
fold_overflow_warning (("assuming signed overflow does not occur "
|
||||
{
|
||||
if (INTEGRAL_TYPE_P (type))
|
||||
fold_overflow_warning (("assuming signed overflow does not occur "
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.dg/torture/pr80362.c
|
||||
@@ -0,0 +1,11 @@
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
2017-07-18 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/81395
|
||||
* include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer
|
||||
pointers for write mode after reading.
|
||||
* testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New.
|
||||
|
||||
--- libstdc++-v3/include/bits/fstream.tcc (revision 254017)
|
||||
+++ libstdc++-v3/include/bits/fstream.tcc (revision 254018)
|
||||
@@ -699,7 +699,7 @@
|
||||
|
||||
if (__n == 0)
|
||||
{
|
||||
- _M_set_buffer(0);
|
||||
+ // Set _M_reading. Buffer is already in initial 'read' mode.
|
||||
_M_reading = true;
|
||||
}
|
||||
else if (__len == 0)
|
||||
--- libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc (nonexistent)
|
||||
+++ libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc (revision 254018)
|
||||
@@ -0,0 +1,46 @@
|
||||
+// Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+//
|
||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
||||
+// software; you can redistribute it and/or modify it under the
|
||||
+// terms of the GNU General Public License as published by the
|
||||
+// Free Software Foundation; either version 3, or (at your option)
|
||||
+// any later version.
|
||||
+
|
||||
+// This library is distributed in the hope that it will be useful,
|
||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+// GNU General Public License for more details.
|
||||
+
|
||||
+// You should have received a copy of the GNU General Public License along
|
||||
+// with this library; see the file COPYING3. If not see
|
||||
+// <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+// { dg-require-fileio "" }
|
||||
+
|
||||
+// PR libstdc++/81395
|
||||
+
|
||||
+#include <fstream>
|
||||
+#include <cstring> // for std::memset
|
||||
+#include <cstdio> // For BUFSIZ
|
||||
+
|
||||
+using std::memset;
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ {
|
||||
+ std::filebuf fb;
|
||||
+ fb.open("test.txt", std::ios::out);
|
||||
+ char data[BUFSIZ];
|
||||
+ memset(data, 'A', sizeof(data));
|
||||
+ fb.sputn(data, sizeof(data));
|
||||
+ }
|
||||
+
|
||||
+ std::filebuf fb;
|
||||
+ fb.open("test.txt", std::ios::in|std::ios::out);
|
||||
+ char buf[BUFSIZ];
|
||||
+ memset(buf, 0, sizeof(buf));
|
||||
+ fb.sgetn(buf, sizeof(buf));
|
||||
+ // Switch from reading to writing without seeking first:
|
||||
+ fb.sputn("B", 1);
|
||||
+ fb.pubsync();
|
||||
+}
|
|
@ -10,15 +10,15 @@
|
|||
--- libgcc/libgcc2.c 2017/10/13 16:50:13 253733
|
||||
+++ libgcc/libgcc2.c 2017/10/13 17:19:12 253734
|
||||
@@ -375,7 +375,8 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (uu.s.high == (Wtype) -1 && vv.s.high == (Wtype) - 1)
|
||||
+ if ((uu.s.high & vv.s.high) == (Wtype) -1
|
||||
+ && (uu.s.low | vv.s.low) != 0)
|
||||
{
|
||||
DWunion ww = {.ll = (UDWtype) (UWtype) uu.s.low
|
||||
* (UDWtype) (UWtype) vv.s.low};
|
||||
{
|
||||
DWunion ww = {.ll = (UDWtype) (UWtype) uu.s.low
|
||||
* (UDWtype) (UWtype) vv.s.low};
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.dg/pr82274-1.c
|
||||
@@ -0,0 +1,16 @@
|
||||
|
|
|
@ -69,36 +69,36 @@
|
|||
+ // anything besides the serial lock, which is independent of method
|
||||
+ // groups.
|
||||
+ for (uint32_t t = serial_lock.get_htm_fastpath(); t; t--)
|
||||
{
|
||||
uint32_t ret = htm_begin();
|
||||
if (htm_begin_success(ret))
|
||||
{
|
||||
uint32_t ret = htm_begin();
|
||||
if (htm_begin_success(ret))
|
||||
@@ -197,9 +205,11 @@ GTM::gtm_thread::begin_transaction (uint32_t prop, const gtm_jmpbuf *jb)
|
||||
// We are executing a transaction now.
|
||||
// Monitor the writer flag in the serial-mode lock, and abort
|
||||
// if there is an active or waiting serial-mode transaction.
|
||||
// We are executing a transaction now.
|
||||
// Monitor the writer flag in the serial-mode lock, and abort
|
||||
// if there is an active or waiting serial-mode transaction.
|
||||
+ // Also checks that htm_fastpath is still nonzero and thus
|
||||
+ // HW transactions are allowed to run.
|
||||
// Note that this can also happen due to an enclosing
|
||||
// serial-mode transaction; we handle this case below.
|
||||
// Note that this can also happen due to an enclosing
|
||||
// serial-mode transaction; we handle this case below.
|
||||
- if (unlikely(serial_lock.is_write_locked()))
|
||||
+ if (unlikely(serial_lock.htm_fastpath_disabled()))
|
||||
htm_abort();
|
||||
else
|
||||
// We do not need to set a_saveLiveVariables because of HTM.
|
||||
htm_abort();
|
||||
else
|
||||
// We do not need to set a_saveLiveVariables because of HTM.
|
||||
@@ -210,9 +220,12 @@ GTM::gtm_thread::begin_transaction (uint32_t prop, const gtm_jmpbuf *jb)
|
||||
// retrying the transaction will be successful.
|
||||
if (!htm_abort_should_retry(ret))
|
||||
break;
|
||||
// retrying the transaction will be successful.
|
||||
if (!htm_abort_should_retry(ret))
|
||||
break;
|
||||
+ // Check whether the HTM fastpath has been disabled.
|
||||
+ if (!serial_lock.get_htm_fastpath())
|
||||
+ break;
|
||||
// Wait until any concurrent serial-mode transactions have finished.
|
||||
// This is an empty critical section, but won't be elided.
|
||||
// Wait until any concurrent serial-mode transactions have finished.
|
||||
// This is an empty critical section, but won't be elided.
|
||||
- if (serial_lock.is_write_locked())
|
||||
+ if (serial_lock.htm_fastpath_disabled())
|
||||
{
|
||||
tx = gtm_thr();
|
||||
if (unlikely(tx == NULL))
|
||||
{
|
||||
tx = gtm_thr();
|
||||
if (unlikely(tx == NULL))
|
||||
@@ -618,7 +631,7 @@ _ITM_commitTransaction(void)
|
||||
// a serial-mode transaction. If we are, then there will be no other
|
||||
// concurrent serial-mode transaction.
|
||||
|
|
|
@ -66,13 +66,13 @@
|
|||
- || pub->die->die_offset != 0
|
||||
- || !flag_eliminate_unused_debug_types)
|
||||
+ if (include_pubname_in_output (names, pub))
|
||||
{
|
||||
dw_offset die_offset = pub->die->die_offset;
|
||||
{
|
||||
dw_offset die_offset = pub->die->die_offset;
|
||||
|
||||
+ /* We shouldn't see pubnames for DIEs outside of the main CU. */
|
||||
+ if (names == pubname_table)
|
||||
+ gcc_assert (pub->die->die_mark);
|
||||
+
|
||||
/* If we're putting types in their own .debug_types sections,
|
||||
the .debug_pubtypes table will still point to the compile
|
||||
unit (not the type unit), so we want to use the offset of
|
||||
/* If we're putting types in their own .debug_types sections,
|
||||
the .debug_pubtypes table will still point to the compile
|
||||
unit (not the type unit), so we want to use the offset of
|
||||
|
|
|
@ -40,22 +40,22 @@
|
|||
--- gcc/config.gcc (revision 231943)
|
||||
+++ gcc/config.gcc (revision 231945)
|
||||
@@ -368,7 +368,7 @@ i[34567]86-*-*)
|
||||
lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
|
||||
avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h
|
||||
xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h
|
||||
lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
|
||||
avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h
|
||||
xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h
|
||||
- fxsrintrin.h xsaveintrin.h xsaveoptintrin.h"
|
||||
+ fxsrintrin.h xsaveintrin.h xsaveoptintrin.h pkuintrin.h"
|
||||
;;
|
||||
;;
|
||||
x86_64-*-*)
|
||||
cpu_type=i386
|
||||
cpu_type=i386
|
||||
@@ -383,7 +383,7 @@ x86_64-*-*)
|
||||
lzcntintrin.h bmiintrin.h tbmintrin.h bmi2intrin.h
|
||||
avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h
|
||||
xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h
|
||||
lzcntintrin.h bmiintrin.h tbmintrin.h bmi2intrin.h
|
||||
avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h
|
||||
xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h
|
||||
- fxsrintrin.h xsaveintrin.h xsaveoptintrin.h"
|
||||
+ fxsrintrin.h xsaveintrin.h xsaveoptintrin.h pkuintrin.h"
|
||||
need_64bit_hwint=yes
|
||||
;;
|
||||
need_64bit_hwint=yes
|
||||
;;
|
||||
ia64-*-*)
|
||||
--- gcc/common/config/i386/i386-common.c (revision 231943)
|
||||
+++ gcc/common/config/i386/i386-common.c (revision 231945)
|
||||
|
@ -76,7 +76,7 @@
|
|||
/* Implement TARGET_HANDLE_OPTION. */
|
||||
|
||||
@@ -659,6 +661,19 @@ ix86_handle_option (struct gcc_options *
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
+ case OPT_mpku:
|
||||
|
@ -285,9 +285,9 @@
|
|||
+ const char *pku = has_pku ? " -mpku" : " -mno-pku";
|
||||
|
||||
options = concat (options, cx16, sahf, movbe, ase, pclmul,
|
||||
popcnt, abm, lwp, fma, fma4, xop, bmi, bmi2,
|
||||
tbm, avx, avx2, sse4_2, sse4_1, lzcnt, rtm,
|
||||
hle, rdrnd, f16c, fsgsbase, rdseed, prfchw, adx,
|
||||
popcnt, abm, lwp, fma, fma4, xop, bmi, bmi2,
|
||||
tbm, avx, avx2, sse4_2, sse4_1, lzcnt, rtm,
|
||||
hle, rdrnd, f16c, fsgsbase, rdseed, prfchw, adx,
|
||||
- fxsr, xsave, xsaveopt, NULL);
|
||||
+ fxsr, xsave, xsaveopt, pku, NULL);
|
||||
}
|
||||
|
@ -312,14 +312,14 @@
|
|||
/* if this reaches 64, need to widen struct pta flags below */
|
||||
|
||||
@@ -3429,6 +3431,9 @@ ix86_option_override_internal (bool main
|
||||
if (processor_alias_table[i].flags & PTA_XSAVEOPT
|
||||
&& !(ix86_isa_flags_explicit & OPTION_MASK_ISA_XSAVEOPT))
|
||||
ix86_isa_flags |= OPTION_MASK_ISA_XSAVEOPT;
|
||||
if (processor_alias_table[i].flags & PTA_XSAVEOPT
|
||||
&& !(ix86_isa_flags_explicit & OPTION_MASK_ISA_XSAVEOPT))
|
||||
ix86_isa_flags |= OPTION_MASK_ISA_XSAVEOPT;
|
||||
+ if (processor_alias_table[i].flags & PTA_PKU
|
||||
+ && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_PKU))
|
||||
+ ix86_isa_flags |= OPTION_MASK_ISA_PKU;
|
||||
if (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE))
|
||||
x86_prefetch_sse = true;
|
||||
if (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE))
|
||||
x86_prefetch_sse = true;
|
||||
|
||||
@@ -4220,6 +4225,7 @@ ix86_valid_target_attribute_inner_p (tre
|
||||
IX86_ATTR_ISA ("fxsr", OPT_mfxsr),
|
||||
|
|
|
@ -7,16 +7,16 @@
|
|||
--- gcc/dwarf2out.c (revision 231184)
|
||||
+++ gcc/dwarf2out.c (revision 231185)
|
||||
@@ -18051,18 +18051,23 @@ gen_subprogram_die (tree decl, dw_die_re
|
||||
}
|
||||
if (mode == VOIDmode || mode == BLKmode)
|
||||
continue;
|
||||
}
|
||||
if (mode == VOIDmode || mode == BLKmode)
|
||||
continue;
|
||||
- if (XEXP (XEXP (arg, 0), 0) == pc_rtx)
|
||||
+ /* Get dynamic information about call target only if we
|
||||
+ have no static information: we cannot generate both
|
||||
+ DW_AT_abstract_origin and DW_AT_GNU_call_site_target
|
||||
+ attributes. */
|
||||
+ if (ca_loc->symbol_ref == NULL_RTX)
|
||||
{
|
||||
{
|
||||
- gcc_assert (ca_loc->symbol_ref == NULL_RTX);
|
||||
- tloc = XEXP (XEXP (arg, 0), 1);
|
||||
- continue;
|
||||
|
@ -38,18 +38,18 @@
|
|||
+ tlocc = XEXP (XEXP (arg, 0), 1);
|
||||
+ continue;
|
||||
+ }
|
||||
}
|
||||
reg = NULL;
|
||||
if (REG_P (XEXP (XEXP (arg, 0), 0)))
|
||||
}
|
||||
reg = NULL;
|
||||
if (REG_P (XEXP (XEXP (arg, 0), 0)))
|
||||
@@ -20842,15 +20847,27 @@ dwarf2out_var_location (rtx loc_note)
|
||||
if (!CALL_P (prev))
|
||||
prev = XVECEXP (PATTERN (prev), 0, 0);
|
||||
prev = XVECEXP (PATTERN (prev), 0, 0);
|
||||
ca_loc->tail_call_p = SIBLING_CALL_P (prev);
|
||||
+
|
||||
+ /* Look for a SYMBOL_REF in the "prev" instruction. */
|
||||
x = get_call_rtx_from (PATTERN (prev));
|
||||
if (x)
|
||||
{
|
||||
{
|
||||
- x = XEXP (XEXP (x, 0), 0);
|
||||
- if (GET_CODE (x) == SYMBOL_REF
|
||||
- && SYMBOL_REF_DECL (x)
|
||||
|
@ -69,8 +69,8 @@
|
|||
+ && MEM_EXPR (x)
|
||||
+ && TREE_CODE (MEM_EXPR (x)) == FUNCTION_DECL)
|
||||
+ ca_loc->symbol_ref = XEXP (DECL_RTL (MEM_EXPR (x)), 0);
|
||||
}
|
||||
}
|
||||
+
|
||||
ca_loc->block = insn_scope (prev);
|
||||
if (call_arg_locations)
|
||||
call_arg_loc_last->next = ca_loc;
|
||||
call_arg_loc_last->next = ca_loc;
|
||||
|
|
|
@ -10,16 +10,16 @@
|
|||
--- gcc/cp/call.c.jj 2014-08-06 10:45:03.260163142 +0200
|
||||
+++ gcc/cp/call.c 2016-06-15 11:15:06.663878423 +0200
|
||||
@@ -1975,7 +1975,9 @@ add_function_candidate (struct z_candida
|
||||
bool rv = FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (fn));
|
||||
parmtype = cp_build_reference_type (parmtype, rv);
|
||||
if (TREE_CODE (arg) == CONVERT_EXPR
|
||||
bool rv = FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (fn));
|
||||
parmtype = cp_build_reference_type (parmtype, rv);
|
||||
if (TREE_CODE (arg) == CONVERT_EXPR
|
||||
- && TYPE_PTR_P (TREE_TYPE (arg)))
|
||||
+ && TYPE_PTR_P (TREE_TYPE (arg))
|
||||
+ && (TREE_CODE (TREE_TYPE (TREE_OPERAND (arg, 0)))
|
||||
+ == REFERENCE_TYPE))
|
||||
/* Strip conversion from reference to pointer. */
|
||||
arg = TREE_OPERAND (arg, 0);
|
||||
arg = build_fold_indirect_ref (arg);
|
||||
/* Strip conversion from reference to pointer. */
|
||||
arg = TREE_OPERAND (arg, 0);
|
||||
arg = build_fold_indirect_ref (arg);
|
||||
--- gcc/testsuite/g++.dg/cpp0x/ref-qual17.C.jj 2016-06-15 11:12:57.692558903 +0200
|
||||
+++ gcc/testsuite/g++.dg/cpp0x/ref-qual17.C 2016-06-15 11:07:02.000000000 +0200
|
||||
@@ -0,0 +1,12 @@
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
--- gcc/reload.c (revision 235552)
|
||||
+++ gcc/reload.c (working copy)
|
||||
@@ -4054,14 +4054,14 @@ find_reloads (rtx insn, int replace, int
|
||||
&XEXP (recog_data.operand[i], 0), (rtx*) 0,
|
||||
base_reg_class (VOIDmode, as, MEM, SCRATCH),
|
||||
address_mode,
|
||||
&XEXP (recog_data.operand[i], 0), (rtx*) 0,
|
||||
base_reg_class (VOIDmode, as, MEM, SCRATCH),
|
||||
address_mode,
|
||||
- VOIDmode, 0, 0, i, RELOAD_FOR_INPUT);
|
||||
+ VOIDmode, 0, 0, i, RELOAD_OTHER);
|
||||
rld[operand_reloadnum[i]].inc
|
||||
= GET_MODE_SIZE (GET_MODE (recog_data.operand[i]));
|
||||
rld[operand_reloadnum[i]].inc
|
||||
= GET_MODE_SIZE (GET_MODE (recog_data.operand[i]));
|
||||
|
||||
/* If this operand is an output, we will have made any
|
||||
reloads for its address as RELOAD_FOR_OUTPUT_ADDRESS, but
|
||||
now we are treating part of the operand as an input, so
|
||||
/* If this operand is an output, we will have made any
|
||||
reloads for its address as RELOAD_FOR_OUTPUT_ADDRESS, but
|
||||
now we are treating part of the operand as an input, so
|
||||
- we must change these to RELOAD_FOR_INPUT_ADDRESS. */
|
||||
+ we must change these to RELOAD_FOR_OTHER_ADDRESS. */
|
||||
|
||||
if (modified[i] == RELOAD_WRITE)
|
||||
{
|
||||
if (modified[i] == RELOAD_WRITE)
|
||||
{
|
||||
@@ -4070,10 +4070,10 @@ find_reloads (rtx insn, int replace, int
|
||||
if (rld[j].opnum == i)
|
||||
{
|
||||
if (rld[j].when_needed == RELOAD_FOR_OUTPUT_ADDRESS)
|
||||
if (rld[j].opnum == i)
|
||||
{
|
||||
if (rld[j].when_needed == RELOAD_FOR_OUTPUT_ADDRESS)
|
||||
- rld[j].when_needed = RELOAD_FOR_INPUT_ADDRESS;
|
||||
+ rld[j].when_needed = RELOAD_FOR_OTHER_ADDRESS;
|
||||
else if (rld[j].when_needed
|
||||
== RELOAD_FOR_OUTADDR_ADDRESS)
|
||||
else if (rld[j].when_needed
|
||||
== RELOAD_FOR_OUTADDR_ADDRESS)
|
||||
- rld[j].when_needed = RELOAD_FOR_INPADDR_ADDRESS;
|
||||
+ rld[j].when_needed = RELOAD_FOR_OTHER_ADDRESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
--- gcc/targhooks.h
|
||||
+++ gcc/targhooks.h
|
||||
@@ -188,6 +188,7 @@ extern section * default_function_sectio
|
||||
bool startup, bool exit);
|
||||
bool startup, bool exit);
|
||||
extern enum machine_mode default_dwarf_frame_reg_mode (int);
|
||||
extern enum machine_mode default_get_reg_raw_mode(int);
|
||||
+extern bool default_keep_leaf_when_profiled ();
|
||||
|
@ -116,7 +116,7 @@
|
|||
- asm_fprintf (file, "\tstd %s,16(%s)\n", reg_names[0], reg_names[1]);
|
||||
|
||||
/* In the ELFv2 ABI we have no compiler stack word. It must be
|
||||
the resposibility of _mcount to preserve the static chain
|
||||
the resposibility of _mcount to preserve the static chain
|
||||
--- gcc/config/rs6000/linux64.h
|
||||
+++ gcc/config/rs6000/linux64.h
|
||||
@@ -59,6 +59,9 @@ extern int dot_symbols;
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
+ { __in._M_setstate(ios_base::badbit); }
|
||||
|
||||
if (__in.good() && __err == ios_base::goodbit)
|
||||
_M_ok = true;
|
||||
_M_ok = true;
|
||||
--- libstdc++-v3/include/std/istream
|
||||
+++ libstdc++-v3/include/std/istream
|
||||
@@ -150,9 +150,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
|
|
@ -39,7 +39,7 @@ index f24c5c6e0ac..7c126e4122b 100644
|
|||
+++ b/gcc/testsuite/lib/target-supports.exp
|
||||
@@ -5439,6 +5439,12 @@ proc check_effective_target_frame_pointer_for_non_leaf { } {
|
||||
if { [istarget aarch*-*-*] } {
|
||||
return 1
|
||||
return 1
|
||||
}
|
||||
+
|
||||
+ # Solaris/x86 defaults to -fno-omit-frame-pointer.
|
||||
|
@ -49,3 +49,4 @@ index f24c5c6e0ac..7c126e4122b 100644
|
|||
+
|
||||
return 0
|
||||
}
|
||||
|
||||
|
|
|
@ -272,7 +272,7 @@ index a9052c6becf..c5d9988c1d9 100644
|
|||
if (INTVAL (todec) != -size)
|
||||
{
|
||||
@@ -22368,6 +22581,22 @@ rs6000_emit_allocate_stack (HOST_WIDE_INT size, rtx copy_reg, int copy_off)
|
||||
warning (0, "stack limit expression is not supported");
|
||||
warning (0, "stack limit expression is not supported");
|
||||
}
|
||||
|
||||
+ if (flag_stack_clash_protection)
|
||||
|
@ -295,7 +295,7 @@ index a9052c6becf..c5d9988c1d9 100644
|
|||
{
|
||||
if (copy_off != 0)
|
||||
@@ -22376,39 +22605,12 @@ rs6000_emit_allocate_stack (HOST_WIDE_INT size, rtx copy_reg, int copy_off)
|
||||
emit_move_insn (copy_reg, stack_reg);
|
||||
emit_move_insn (copy_reg, stack_reg);
|
||||
}
|
||||
|
||||
- if (size > 32767)
|
||||
|
@ -337,7 +337,7 @@ index a9052c6becf..c5d9988c1d9 100644
|
|||
|
||||
#define PROBE_INTERVAL (1 << STACK_CHECK_PROBE_INTERVAL_EXP)
|
||||
@@ -22490,9 +22692,9 @@ rs6000_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
|
||||
until it is equal to ROUNDED_SIZE. */
|
||||
until it is equal to ROUNDED_SIZE. */
|
||||
|
||||
if (TARGET_64BIT)
|
||||
- emit_insn (gen_probe_stack_rangedi (r12, r12, r0));
|
||||
|
@ -427,7 +427,7 @@ index a9052c6becf..c5d9988c1d9 100644
|
|||
with (plus:P (reg 1) VAL), and with REG2 replaced with RREG if REG2
|
||||
is not NULL. It would be nice if dwarf2out_frame_debug_expr could
|
||||
@@ -23857,6 +24116,13 @@ rs6000_emit_prologue (void)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ /* If we are emitting stack probes, but allocate no stack, then
|
||||
|
@ -465,7 +465,7 @@ index cd197213480..3cd70e592c1 100644
|
|||
- (minus (reg 1) (match_operand 1 "reg_or_short_operand" "")))
|
||||
+ (minus (reg 1) (match_operand 1 "reg_or_cint_operand" "")))
|
||||
(set (reg 1)
|
||||
(minus (reg 1) (match_dup 1)))]
|
||||
(minus (reg 1) (match_dup 1)))]
|
||||
""
|
||||
@@ -11835,6 +11845,15 @@
|
||||
rtx neg_op0;
|
||||
|
@ -541,11 +541,11 @@ index cd197213480..3cd70e592c1 100644
|
|||
(define_insn "probe_stack_range<P:mode>"
|
||||
- [(set (match_operand:P 0 "register_operand" "=r")
|
||||
+ [(set (match_operand:P 0 "register_operand" "=&r")
|
||||
(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
|
||||
(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
|
||||
- (match_operand:P 2 "register_operand" "r")]
|
||||
+ (match_operand:P 2 "register_operand" "r")
|
||||
+ (match_operand:P 3 "register_operand" "r")]
|
||||
UNSPECV_PROBE_STACK_RANGE))]
|
||||
UNSPECV_PROBE_STACK_RANGE))]
|
||||
""
|
||||
- "* return output_probe_stack_range (operands[0], operands[2]);"
|
||||
+ "* return output_probe_stack_range (operands[0], operands[2], operands[3]);"
|
||||
|
@ -568,6 +568,6 @@ index 7c126e4122b..aba99513ed0 100644
|
|||
|
||||
if { [istarget x86_64-*-*] || [istarget i?86-*-*]
|
||||
+ || [istarget powerpc*-*-*] || [istarget rs6000*-*-*]
|
||||
|| [istarget s390*-*-*] } {
|
||||
return 1
|
||||
|| [istarget s390*-*-*] } {
|
||||
return 1
|
||||
}
|
||||
|
|
|
@ -44,3 +44,4 @@ index 6f8e7128921..468d649a4fa 100644
|
|||
+
|
||||
|
||||
#include "stack-check-6.c"
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ diff -rup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
+++ b/gcc/config/i386/i386.c 2017-11-03 10:41:10.654774032 -0600
|
||||
@@ -10686,8 +10686,12 @@ ix86_expand_prologue (void)
|
||||
&& (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
|
||||
|| flag_stack_clash_protection))
|
||||
|| flag_stack_clash_protection))
|
||||
{
|
||||
- /* We expect the registers to be saved when probes are used. */
|
||||
- gcc_assert (int_registers_saved);
|
||||
|
@ -18,4 +18,4 @@ diff -rup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
+ gcc_assert (int_registers_saved);
|
||||
|
||||
if (flag_stack_clash_protection)
|
||||
{
|
||||
{
|
||||
|
|
|
@ -33,10 +33,10 @@ index 17082486ac8..a085c6acaf5 100644
|
|||
@@ -1622,7 +1622,7 @@
|
||||
(define_insn "*subsi3_uxtw"
|
||||
[(set (match_operand:DI 0 "register_operand" "=rk")
|
||||
(zero_extend:DI
|
||||
(zero_extend:DI
|
||||
- (minus:SI (match_operand:SI 1 "register_operand" "r")
|
||||
+ (minus:SI (match_operand:SI 1 "register_operand" "rk")
|
||||
(match_operand:SI 2 "register_operand" "r"))))]
|
||||
(match_operand:SI 2 "register_operand" "r"))))]
|
||||
""
|
||||
"sub\\t%w0, %w1, %w2"
|
||||
@@ -1632,7 +1632,7 @@
|
||||
|
@ -45,7 +45,7 @@ index 17082486ac8..a085c6acaf5 100644
|
|||
[(set (match_operand:DI 0 "register_operand" "=rk,!w")
|
||||
- (minus:DI (match_operand:DI 1 "register_operand" "r,!w")
|
||||
+ (minus:DI (match_operand:DI 1 "register_operand" "rk,!w")
|
||||
(match_operand:DI 2 "register_operand" "r,!w")))]
|
||||
(match_operand:DI 2 "register_operand" "r,!w")))]
|
||||
""
|
||||
"@
|
||||
@@ -1725,7 +1725,7 @@
|
||||
|
@ -54,17 +54,17 @@ index 17082486ac8..a085c6acaf5 100644
|
|||
[(set (match_operand:GPI 0 "register_operand" "=rk")
|
||||
- (minus:GPI (match_operand:GPI 1 "register_operand" "r")
|
||||
+ (minus:GPI (match_operand:GPI 1 "register_operand" "rk")
|
||||
(ANY_EXTEND:GPI
|
||||
(match_operand:ALLX 2 "register_operand" "r"))))]
|
||||
(ANY_EXTEND:GPI
|
||||
(match_operand:ALLX 2 "register_operand" "r"))))]
|
||||
""
|
||||
@@ -1738,7 +1738,7 @@
|
||||
(define_insn "*sub_<optab><SHORT:mode>_si_uxtw"
|
||||
[(set (match_operand:DI 0 "register_operand" "=rk")
|
||||
(zero_extend:DI
|
||||
(zero_extend:DI
|
||||
- (minus:SI (match_operand:SI 1 "register_operand" "r")
|
||||
+ (minus:SI (match_operand:SI 1 "register_operand" "rk")
|
||||
(ANY_EXTEND:SI
|
||||
(match_operand:SHORT 2 "register_operand" "r")))))]
|
||||
(ANY_EXTEND:SI
|
||||
(match_operand:SHORT 2 "register_operand" "r")))))]
|
||||
""
|
||||
@@ -1749,7 +1749,7 @@
|
||||
|
||||
|
@ -72,54 +72,54 @@ index 17082486ac8..a085c6acaf5 100644
|
|||
[(set (match_operand:GPI 0 "register_operand" "=rk")
|
||||
- (minus:GPI (match_operand:GPI 1 "register_operand" "r")
|
||||
+ (minus:GPI (match_operand:GPI 1 "register_operand" "rk")
|
||||
(ashift:GPI (ANY_EXTEND:GPI
|
||||
(match_operand:ALLX 2 "register_operand" "r"))
|
||||
(match_operand 3 "aarch64_imm3" "Ui3"))))]
|
||||
(ashift:GPI (ANY_EXTEND:GPI
|
||||
(match_operand:ALLX 2 "register_operand" "r"))
|
||||
(match_operand 3 "aarch64_imm3" "Ui3"))))]
|
||||
@@ -1763,7 +1763,7 @@
|
||||
(define_insn "*sub_<optab><SHORT:mode>_shft_si_uxtw"
|
||||
[(set (match_operand:DI 0 "register_operand" "=rk")
|
||||
(zero_extend:DI
|
||||
(zero_extend:DI
|
||||
- (minus:SI (match_operand:SI 1 "register_operand" "r")
|
||||
+ (minus:SI (match_operand:SI 1 "register_operand" "rk")
|
||||
(ashift:SI (ANY_EXTEND:SI
|
||||
(match_operand:SHORT 2 "register_operand" "r"))
|
||||
(match_operand 3 "aarch64_imm3" "Ui3")))))]
|
||||
(ashift:SI (ANY_EXTEND:SI
|
||||
(match_operand:SHORT 2 "register_operand" "r"))
|
||||
(match_operand 3 "aarch64_imm3" "Ui3")))))]
|
||||
@@ -1775,7 +1775,7 @@
|
||||
|
||||
(define_insn "*sub_<optab><mode>_multp2"
|
||||
[(set (match_operand:GPI 0 "register_operand" "=rk")
|
||||
- (minus:GPI (match_operand:GPI 4 "register_operand" "r")
|
||||
+ (minus:GPI (match_operand:GPI 4 "register_operand" "rk")
|
||||
(ANY_EXTRACT:GPI
|
||||
(mult:GPI (match_operand:GPI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
(ANY_EXTRACT:GPI
|
||||
(mult:GPI (match_operand:GPI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
@@ -1791,7 +1791,7 @@
|
||||
(define_insn "*sub_<optab>si_multp2_uxtw"
|
||||
[(set (match_operand:DI 0 "register_operand" "=rk")
|
||||
(zero_extend:DI
|
||||
(zero_extend:DI
|
||||
- (minus:SI (match_operand:SI 4 "register_operand" "r")
|
||||
+ (minus:SI (match_operand:SI 4 "register_operand" "rk")
|
||||
(ANY_EXTRACT:SI
|
||||
(mult:SI (match_operand:SI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
(ANY_EXTRACT:SI
|
||||
(mult:SI (match_operand:SI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
@@ -1805,7 +1805,7 @@
|
||||
|
||||
(define_insn "*sub_uxt<mode>_multp2"
|
||||
[(set (match_operand:GPI 0 "register_operand" "=rk")
|
||||
- (minus:GPI (match_operand:GPI 4 "register_operand" "r")
|
||||
+ (minus:GPI (match_operand:GPI 4 "register_operand" "rk")
|
||||
(and:GPI
|
||||
(mult:GPI (match_operand:GPI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
(and:GPI
|
||||
(mult:GPI (match_operand:GPI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
@@ -1823,7 +1823,7 @@
|
||||
(define_insn "*sub_uxtsi_multp2_uxtw"
|
||||
[(set (match_operand:DI 0 "register_operand" "=rk")
|
||||
(zero_extend:DI
|
||||
(zero_extend:DI
|
||||
- (minus:SI (match_operand:SI 4 "register_operand" "r")
|
||||
+ (minus:SI (match_operand:SI 4 "register_operand" "rk")
|
||||
(and:SI
|
||||
(mult:SI (match_operand:SI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
(and:SI
|
||||
(mult:SI (match_operand:SI 1 "register_operand" "r")
|
||||
(match_operand 2 "aarch64_pwr_imm3" "Up3"))
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/subsp.c b/gcc/testsuite/gcc.target/aarch64/subsp.c
|
||||
new file mode 100644
|
||||
index 00000000000..70d848c59d1
|
||||
|
|
|
@ -38,7 +38,7 @@ index cadf193cfcf..e08632ffa88 100644
|
|||
/* Test if TEST_ADDR == LAST_ADDR. */
|
||||
xops[1] = reg2;
|
||||
@@ -2001,6 +2010,123 @@ aarch64_save_or_restore_callee_save_registers (HOST_WIDE_INT offset,
|
||||
base_rtx, cfi_ops);
|
||||
base_rtx, cfi_ops);
|
||||
}
|
||||
|
||||
+/* Allocate SIZE bytes of stack space using SCRATCH_REG as a scratch
|
||||
|
@ -160,10 +160,10 @@ index cadf193cfcf..e08632ffa88 100644
|
|||
+
|
||||
/* AArch64 stack frames generated by this compiler look like:
|
||||
|
||||
+-------------------------------+
|
||||
+-------------------------------+
|
||||
@@ -2073,6 +2199,44 @@ aarch64_expand_prologue (void)
|
||||
- original_frame_size
|
||||
- cfun->machine->frame.saved_regs_size);
|
||||
- original_frame_size
|
||||
- cfun->machine->frame.saved_regs_size);
|
||||
|
||||
+ /* We do not fully protect aarch64 against stack clash style attacks
|
||||
+ as doing so would be prohibitively expensive with less utility over
|
||||
|
@ -215,13 +215,13 @@ index cadf193cfcf..e08632ffa88 100644
|
|||
+ && frame_size >= guard_size - guard_used_by_caller)
|
||||
+ aarch64_allocate_and_probe_stack_space (IP0_REGNUM, frame_size);
|
||||
+ else if (frame_size >= 0x1000000)
|
||||
{
|
||||
rtx op0 = gen_rtx_REG (Pmode, IP0_REGNUM);
|
||||
emit_move_insn (op0, GEN_INT (-frame_size));
|
||||
{
|
||||
rtx op0 = gen_rtx_REG (Pmode, IP0_REGNUM);
|
||||
emit_move_insn (op0, GEN_INT (-frame_size));
|
||||
@@ -2206,10 +2373,30 @@ aarch64_expand_prologue (void)
|
||||
{
|
||||
if (crtl->outgoing_args_size > 0)
|
||||
{
|
||||
{
|
||||
- insn = emit_insn (gen_add2_insn
|
||||
- (stack_pointer_rtx,
|
||||
- GEN_INT (- crtl->outgoing_args_size)));
|
||||
|
@ -250,7 +250,7 @@ index cadf193cfcf..e08632ffa88 100644
|
|||
+ }
|
||||
+ else
|
||||
+ aarch64_sub_sp (IP1_REGNUM, final_adjust, !frame_pointer_needed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5088,6 +5275,12 @@ aarch64_override_options (void)
|
||||
|
@ -316,9 +316,9 @@ index a085c6acaf5..5485a5f70b1 100644
|
|||
(define_insn "probe_stack_range"
|
||||
- [(set (match_operand:DI 0 "register_operand" "=r")
|
||||
+ [(set (match_operand:DI 0 "register_operand" "=rk")
|
||||
(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")
|
||||
(match_operand:DI 2 "register_operand" "r")]
|
||||
UNSPECV_PROBE_STACK_RANGE))]
|
||||
(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")
|
||||
(match_operand:DI 2 "register_operand" "r")]
|
||||
UNSPECV_PROBE_STACK_RANGE))]
|
||||
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-12.c b/gcc/testsuite/gcc.target/aarch64/stack-check-12.c
|
||||
new file mode 100644
|
||||
index 00000000000..2ce38483b6b
|
||||
|
@ -454,9 +454,9 @@ index aba99513ed0..a8451c98b08 100644
|
|||
-# }
|
||||
-
|
||||
if { [istarget x86_64-*-*] || [istarget i?86-*-*]
|
||||
|| [istarget powerpc*-*-*] || [istarget rs6000*-*-*]
|
||||
|| [istarget powerpc*-*-*] || [istarget rs6000*-*-*]
|
||||
- || [istarget s390*-*-*] } {
|
||||
+ || [istarget aarch64*-**] || [istarget s390*-*-*] } {
|
||||
return 1
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
|
|
|
@ -42,13 +42,13 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
{
|
||||
HOST_WIDE_INT i;
|
||||
@@ -9921,7 +9930,7 @@ ix86_adjust_stack_and_probe_stack_clash
|
||||
/* Allocate PROBE_INTERVAL bytes. */
|
||||
rtx insn
|
||||
= pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
|
||||
/* Allocate PROBE_INTERVAL bytes. */
|
||||
rtx insn
|
||||
= pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
|
||||
- GEN_INT (-PROBE_INTERVAL), -1,
|
||||
+ GEN_INT (-probe_interval), -1,
|
||||
m->fs.cfa_reg == stack_pointer_rtx);
|
||||
add_reg_note (insn, REG_STACK_CHECK, const0_rtx);
|
||||
m->fs.cfa_reg == stack_pointer_rtx);
|
||||
add_reg_note (insn, REG_STACK_CHECK, const0_rtx);
|
||||
|
||||
@@ -10014,7 +10023,7 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
that's the easy case. The run-time loop is made up of 11 insns in the
|
||||
|
@ -60,26 +60,26 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
HOST_WIDE_INT i, adjust;
|
||||
bool first_probe = true;
|
||||
@@ -10023,15 +10032,15 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
values of N from 1 until it exceeds SIZE. If only one probe is
|
||||
needed, this will not generate any code. Then adjust and probe
|
||||
to PROBE_INTERVAL + SIZE. */
|
||||
values of N from 1 until it exceeds SIZE. If only one probe is
|
||||
needed, this will not generate any code. Then adjust and probe
|
||||
to PROBE_INTERVAL + SIZE. */
|
||||
- for (i = PROBE_INTERVAL; i < size; i += PROBE_INTERVAL)
|
||||
+ for (i = get_probe_interval (); i < size; i += get_probe_interval ())
|
||||
{
|
||||
if (first_probe)
|
||||
{
|
||||
{
|
||||
if (first_probe)
|
||||
{
|
||||
- adjust = 2 * PROBE_INTERVAL + dope;
|
||||
+ adjust = 2 * get_probe_interval () + dope;
|
||||
first_probe = false;
|
||||
}
|
||||
else
|
||||
first_probe = false;
|
||||
}
|
||||
else
|
||||
- adjust = PROBE_INTERVAL;
|
||||
+ adjust = get_probe_interval ();
|
||||
|
||||
emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
@@ -10040,9 +10049,9 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
}
|
||||
}
|
||||
|
||||
if (first_probe)
|
||||
- adjust = size + PROBE_INTERVAL + dope;
|
||||
|
@ -89,11 +89,11 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
+ adjust = size + get_probe_interval () - i;
|
||||
|
||||
emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
@@ -10052,7 +10061,8 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
/* Adjust back to account for the additional first interval. */
|
||||
last = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
- PROBE_INTERVAL + dope)));
|
||||
+ (get_probe_interval ()
|
||||
+ + dope))));
|
||||
|
@ -112,7 +112,7 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
@@ -10078,7 +10088,7 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
/* SP = SP_0 + PROBE_INTERVAL. */
|
||||
emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
- - (PROBE_INTERVAL + dope))));
|
||||
+ - (get_probe_interval () + dope))));
|
||||
|
||||
|
@ -121,7 +121,7 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
@@ -10115,7 +10125,8 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
/* Adjust back to account for the additional first interval. */
|
||||
last = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
- PROBE_INTERVAL + dope)));
|
||||
+ (get_probe_interval ()
|
||||
+ + dope))));
|
||||
|
@ -130,8 +130,8 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
}
|
||||
@@ -10134,7 +10145,7 @@ ix86_adjust_stack_and_probe (const HOST_
|
||||
XVECEXP (expr, 0, 1)
|
||||
= gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
= gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||
plus_constant (Pmode, stack_pointer_rtx,
|
||||
- PROBE_INTERVAL + dope + size));
|
||||
+ get_probe_interval () + dope + size));
|
||||
add_reg_note (last, REG_FRAME_RELATED_EXPR, expr);
|
||||
|
@ -156,12 +156,12 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
HOST_WIDE_INT i;
|
||||
|
||||
/* Probe at FIRST + N * PROBE_INTERVAL for values of N from 1 until
|
||||
it exceeds SIZE. If only one probe is needed, this will not
|
||||
generate any code. Then probe at FIRST + SIZE. */
|
||||
it exceeds SIZE. If only one probe is needed, this will not
|
||||
generate any code. Then probe at FIRST + SIZE. */
|
||||
- for (i = PROBE_INTERVAL; i < size; i += PROBE_INTERVAL)
|
||||
+ for (i = get_probe_interval (); i < size; i += get_probe_interval ())
|
||||
emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
|
||||
-(first + i)));
|
||||
emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
|
||||
-(first + i)));
|
||||
|
||||
@@ -10224,7 +10235,7 @@ ix86_emit_probe_stack_range (HOST_WIDE_I
|
||||
|
||||
|
|
|
@ -9,28 +9,28 @@ diff -Nrup a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
|
|||
--- a/gcc/config/rs6000/rs6000.md 2017-11-06 09:12:21.128237467 -0700
|
||||
+++ b/gcc/config/rs6000/rs6000.md 2017-11-06 09:13:40.521601373 -0700
|
||||
@@ -11886,6 +11886,9 @@
|
||||
{
|
||||
rtx loop_lab, end_loop;
|
||||
bool rotated = CONST_INT_P (rounded_size);
|
||||
{
|
||||
rtx loop_lab, end_loop;
|
||||
bool rotated = CONST_INT_P (rounded_size);
|
||||
+ rtx update = GEN_INT (-probe_interval);
|
||||
+ if (probe_interval > 32768)
|
||||
+ update = force_reg (Pmode, update);
|
||||
|
||||
emit_stack_clash_protection_probe_loop_start (&loop_lab, &end_loop,
|
||||
last_addr, rotated);
|
||||
emit_stack_clash_protection_probe_loop_start (&loop_lab, &end_loop,
|
||||
last_addr, rotated);
|
||||
@@ -11893,13 +11896,11 @@
|
||||
if (Pmode == SImode)
|
||||
emit_insn (gen_movsi_update_stack (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
if (Pmode == SImode)
|
||||
emit_insn (gen_movsi_update_stack (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
- GEN_INT (-probe_interval),
|
||||
- chain));
|
||||
+ update, chain));
|
||||
else
|
||||
emit_insn (gen_movdi_di_update_stack (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
else
|
||||
emit_insn (gen_movdi_di_update_stack (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
- GEN_INT (-probe_interval),
|
||||
- chain));
|
||||
+ update, chain));
|
||||
emit_stack_clash_protection_probe_loop_end (loop_lab, end_loop,
|
||||
last_addr, rotated);
|
||||
}
|
||||
emit_stack_clash_protection_probe_loop_end (loop_lab, end_loop,
|
||||
last_addr, rotated);
|
||||
}
|
||||
|
|
|
@ -137,8 +137,8 @@ index e51b847a7c4..e668624b0cb 100644
|
|||
--- a/gcc/params.def
|
||||
+++ b/gcc/params.def
|
||||
@@ -208,6 +208,16 @@ DEFPARAM(PARAM_STACK_FRAME_GROWTH,
|
||||
"Maximal stack frame growth due to inlining (in percent)",
|
||||
1000, 0, 0)
|
||||
"Maximal stack frame growth due to inlining (in percent)",
|
||||
1000, 0, 0)
|
||||
|
||||
+DEFPARAM(PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
|
||||
+ "stack-clash-protection-guard-size",
|
||||
|
@ -230,7 +230,7 @@ index ef371ad7efd..821cea9cb33 100644
|
|||
--- a/gcc/testsuite/lib/target-supports.exp
|
||||
+++ b/gcc/testsuite/lib/target-supports.exp
|
||||
@@ -5392,3 +5392,95 @@ proc check_effective_target_fenv_exceptions {} {
|
||||
}
|
||||
}
|
||||
} "-std=gnu99"]
|
||||
}
|
||||
+
|
||||
|
|
|
@ -18,20 +18,20 @@ diff -Nrup a/gcc/explow.c b/gcc/explow.c
|
|||
+ if SIZE is not a compile time constant. */
|
||||
+
|
||||
/* Ideally we would just probe at *sp. However, if SIZE is not
|
||||
a compile-time constant, but is zero at runtime, then *sp
|
||||
might hold live data. So probe at *sp if we know that
|
||||
a compile-time constant, but is zero at runtime, then *sp
|
||||
might hold live data. So probe at *sp if we know that
|
||||
@@ -1946,9 +1953,12 @@ anti_adjust_stack_and_probe_stack_clash
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
- emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
|
||||
- -GET_MODE_SIZE (word_mode)));
|
||||
+ rtx label = gen_label_rtx ();
|
||||
+ emit_cmp_and_jump_insns (size, CONST0_RTX (GET_MODE (size)),
|
||||
+ EQ, NULL_RTX, Pmode, 1, label);
|
||||
+ emit_stack_probe (stack_pointer_rtx);
|
||||
emit_insn (gen_blockage ());
|
||||
emit_insn (gen_blockage ());
|
||||
+ emit_label (label);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ index b6c56602152..042e71904ec 100644
|
|||
+ }
|
||||
+
|
||||
rtx x = force_reg (Pmode, plus_constant (Pmode, residual,
|
||||
-GET_MODE_SIZE (word_mode)));
|
||||
-GET_MODE_SIZE (word_mode)));
|
||||
anti_adjust_stack (residual);
|
||||
emit_stack_probe (gen_rtx_PLUS (Pmode, stack_pointer_rtx, x));
|
||||
emit_insn (gen_blockage ());
|
||||
|
@ -41,12 +41,12 @@ index b6c56602152..042e71904ec 100644
|
|||
|
||||
/* Some targets make optimistic assumptions in their prologues about
|
||||
@@ -2014,28 +2030,20 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
||||
live data. Furthermore, we don't want to probe into the red
|
||||
zone.
|
||||
live data. Furthermore, we don't want to probe into the red
|
||||
zone.
|
||||
|
||||
- Go ahead and just guard a probe at *sp on SIZE != 0 at runtime
|
||||
+ Go ahead and just guard the probe at *sp on SIZE != 0 at runtime
|
||||
if SIZE is not a compile time constant. */
|
||||
if SIZE is not a compile time constant. */
|
||||
-
|
||||
- /* Ideally we would just probe at *sp. However, if SIZE is not
|
||||
- a compile-time constant, but is zero at runtime, then *sp
|
||||
|
@ -61,15 +61,15 @@ index b6c56602152..042e71904ec 100644
|
|||
- else
|
||||
+ rtx label = NULL_RTX;
|
||||
+ if (!CONST_INT_P (size))
|
||||
{
|
||||
{
|
||||
- rtx label = gen_label_rtx ();
|
||||
+ label = gen_label_rtx ();
|
||||
emit_cmp_and_jump_insns (size, CONST0_RTX (GET_MODE (size)),
|
||||
EQ, NULL_RTX, Pmode, 1, label);
|
||||
emit_cmp_and_jump_insns (size, CONST0_RTX (GET_MODE (size)),
|
||||
EQ, NULL_RTX, Pmode, 1, label);
|
||||
- emit_stack_probe (stack_pointer_rtx);
|
||||
- emit_insn (gen_blockage ());
|
||||
- emit_label (label);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ emit_stack_probe (stack_pointer_rtx);
|
||||
+ emit_insn (gen_blockage ());
|
||||
|
|
|
@ -16,8 +16,8 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
- ix86_compute_frame_layout (&frame);
|
||||
-
|
||||
/* However, the allocation of space via pushes for register
|
||||
saves could be viewed as allocating space, but without the
|
||||
need to probe. */
|
||||
saves could be viewed as allocating space, but without the
|
||||
need to probe. */
|
||||
@@ -9888,21 +9887,40 @@ ix86_adjust_stack_and_probe_stack_clash
|
||||
pointer could be anywhere in the guard page. The safe thing
|
||||
to do is emit a probe now.
|
||||
|
@ -38,9 +38,9 @@ diff -Nrup a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
|||
+
|
||||
{
|
||||
/* We can safely use any register here since we're just going to push
|
||||
its value and immediately pop it back. But we do try and avoid
|
||||
argument passing registers so as not to introduce dependencies in
|
||||
the pipeline. For 32 bit we use %esi and for 64 bit we use %rax. */
|
||||
its value and immediately pop it back. But we do try and avoid
|
||||
argument passing registers so as not to introduce dependencies in
|
||||
the pipeline. For 32 bit we use %esi and for 64 bit we use %rax. */
|
||||
rtx dummy_reg = gen_rtx_REG (word_mode, TARGET_64BIT ? AX_REG : SI_REG);
|
||||
- rtx insn = emit_insn (gen_push (dummy_reg));
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
|
|
|
@ -48,3 +48,5 @@ index b92c126..c341801 100644
|
|||
These will all be equality tests. */
|
||||
-/* { dg-final { scan-assembler-times "(\?:je|jne)" 3 } } */
|
||||
+/* { dg-final { scan-assembler-times "(\?:jmp|je|jne)" 3 } } */
|
||||
|
||||
|
||||
|
|
|
@ -53,19 +53,19 @@ index e36726ba722..d996fd160e8 100644
|
|||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -10544,12 +10544,12 @@ ix86_expand_prologue (void)
|
||||
HOST_WIDE_INT size = allocate;
|
||||
HOST_WIDE_INT size = allocate;
|
||||
|
||||
if (TARGET_64BIT && size >= (HOST_WIDE_INT) 0x80000000)
|
||||
if (TARGET_64BIT && size >= (HOST_WIDE_INT) 0x80000000)
|
||||
- size = 0x80000000 - STACK_CHECK_PROTECT - 1;
|
||||
+ size = 0x80000000 - get_stack_check_protect () - 1;
|
||||
|
||||
if (TARGET_STACK_PROBE)
|
||||
if (TARGET_STACK_PROBE)
|
||||
- ix86_emit_probe_stack_range (0, size + STACK_CHECK_PROTECT);
|
||||
+ ix86_emit_probe_stack_range (0, size + get_stack_check_protect ());
|
||||
else
|
||||
else
|
||||
- ix86_emit_probe_stack_range (STACK_CHECK_PROTECT, size);
|
||||
+ ix86_emit_probe_stack_range (get_stack_check_protect (), size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
|
||||
|
@ -78,9 +78,9 @@ index 50bbad6661c..390983936e8 100644
|
|||
if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK)
|
||||
- ia64_emit_probe_stack_range (STACK_CHECK_PROTECT,
|
||||
+ ia64_emit_probe_stack_range (get_stack_check_protect (),
|
||||
current_frame_info.total_size,
|
||||
current_frame_info.n_input_regs
|
||||
+ current_frame_info.n_local_regs);
|
||||
current_frame_info.total_size,
|
||||
current_frame_info.n_input_regs
|
||||
+ current_frame_info.n_local_regs);
|
||||
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
|
||||
index 41c5d6b6b1f..9b7eb678f19 100644
|
||||
--- a/gcc/config/mips/mips.c
|
||||
|
@ -206,7 +206,7 @@ index 7da8bc75f19..2526e8513b7 100644
|
|||
|
||||
@@ -1393,7 +1419,7 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
|
||||
probe_stack_range (STACK_OLD_CHECK_PROTECT + STACK_CHECK_MAX_FRAME_SIZE,
|
||||
size);
|
||||
size);
|
||||
else if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK)
|
||||
- probe_stack_range (STACK_CHECK_PROTECT, size);
|
||||
+ probe_stack_range (get_stack_check_protect (), size);
|
||||
|
@ -216,11 +216,11 @@ index 7da8bc75f19..2526e8513b7 100644
|
|||
@@ -1451,6 +1477,8 @@ allocate_dynamic_stack_space (rtx size, unsigned size_align,
|
||||
|
||||
if (flag_stack_check && STACK_CHECK_MOVING_SP)
|
||||
anti_adjust_stack_and_probe (size, false);
|
||||
anti_adjust_stack_and_probe (size, false);
|
||||
+ else if (flag_stack_clash_protection)
|
||||
+ anti_adjust_stack_and_probe_stack_clash (size);
|
||||
else
|
||||
anti_adjust_stack (size);
|
||||
anti_adjust_stack (size);
|
||||
|
||||
@@ -1712,6 +1740,219 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
|
||||
}
|
||||
|
|
|
@ -27,33 +27,33 @@ index 5402f5213d6..c46c843e462 100644
|
|||
|
||||
if (probed_size <= 32768)
|
||||
@@ -7639,7 +7639,7 @@ alpha_expand_prologue (void)
|
||||
/* We only have to do this probe if we aren't saving registers or
|
||||
if we are probing beyond the frame because of -fstack-check. */
|
||||
if ((sa_size == 0 && probed_size > probed - 4096)
|
||||
/* We only have to do this probe if we aren't saving registers or
|
||||
if we are probing beyond the frame because of -fstack-check. */
|
||||
if ((sa_size == 0 && probed_size > probed - 4096)
|
||||
- || flag_stack_check)
|
||||
+ || flag_stack_check || flag_stack_clash_protection)
|
||||
emit_insn (gen_probe_stack (GEN_INT (-probed_size)));
|
||||
}
|
||||
emit_insn (gen_probe_stack (GEN_INT (-probed_size)));
|
||||
}
|
||||
|
||||
@@ -7669,7 +7669,8 @@ alpha_expand_prologue (void)
|
||||
late in the compilation, generate the loop as a single insn. */
|
||||
late in the compilation, generate the loop as a single insn. */
|
||||
emit_insn (gen_prologue_stack_probe_loop (count, ptr));
|
||||
|
||||
- if ((leftover > 4096 && sa_size == 0) || flag_stack_check)
|
||||
+ if ((leftover > 4096 && sa_size == 0)
|
||||
+ || flag_stack_check || flag_stack_clash_protection)
|
||||
{
|
||||
rtx last = gen_rtx_MEM (DImode,
|
||||
plus_constant (Pmode, ptr, -leftover));
|
||||
{
|
||||
rtx last = gen_rtx_MEM (DImode,
|
||||
plus_constant (Pmode, ptr, -leftover));
|
||||
@@ -7677,7 +7678,7 @@ alpha_expand_prologue (void)
|
||||
emit_move_insn (last, const0_rtx);
|
||||
}
|
||||
emit_move_insn (last, const0_rtx);
|
||||
}
|
||||
|
||||
- if (flag_stack_check)
|
||||
+ if (flag_stack_check || flag_stack_clash_protection)
|
||||
{
|
||||
/* If -fstack-check is specified we have to load the entire
|
||||
constant into a register and subtract from the sp in one go,
|
||||
{
|
||||
/* If -fstack-check is specified we have to load the entire
|
||||
constant into a register and subtract from the sp in one go,
|
||||
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
|
||||
index 390983936e8..5bf7046cf15 100644
|
||||
--- a/gcc/config/ia64/ia64.c
|
||||
|
@ -76,8 +76,8 @@ index 390983936e8..5bf7046cf15 100644
|
|||
+ if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
|
||||
+ || flag_stack_clash_protection)
|
||||
ia64_emit_probe_stack_range (get_stack_check_protect (),
|
||||
current_frame_info.total_size,
|
||||
current_frame_info.n_input_regs
|
||||
current_frame_info.total_size,
|
||||
current_frame_info.n_input_regs
|
||||
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
|
||||
index 9b7eb678f19..da17f94b4f9 100644
|
||||
--- a/gcc/config/mips/mips.c
|
||||
|
@ -129,9 +129,9 @@ index 328bd5bd2ae..5541a3cd243 100644
|
|||
{
|
||||
- if (flag_stack_check)
|
||||
+ if (flag_stack_check || flag_stack_clash_protection)
|
||||
{
|
||||
/* We compare against total_size-1 because
|
||||
($sp >= total_size) <=> ($sp > total_size-1) */
|
||||
{
|
||||
/* We compare against total_size-1 because
|
||||
($sp >= total_size) <=> ($sp > total_size-1) */
|
||||
@@ -5366,7 +5366,7 @@ spu_allocate_stack (rtx op0, rtx op1)
|
||||
emit_insn (gen_spu_convert (sp, stack_pointer_rtx));
|
||||
emit_insn (gen_subv4si3 (sp, sp, splatted));
|
||||
|
|
|
@ -91,3 +91,4 @@ index 89d71e592dd..ffea1e564ba 100644
|
|||
+
|
||||
/* Set BLOCK_NUMBER for all the blocks in FN. */
|
||||
extern void number_blocks (tree);
|
||||
|
||||
|
|
|
@ -191,9 +191,9 @@ index d996fd160e8..a555b0774c0 100644
|
|||
+ allocate = 0;
|
||||
+ }
|
||||
+ else if (STACK_CHECK_MOVING_SP)
|
||||
{
|
||||
ix86_adjust_stack_and_probe (allocate);
|
||||
allocate = 0;
|
||||
{
|
||||
ix86_adjust_stack_and_probe (allocate);
|
||||
allocate = 0;
|
||||
diff --git a/gcc/testsuite/gcc.dg/stack-check-10.c b/gcc/testsuite/gcc.dg/stack-check-10.c
|
||||
new file mode 100644
|
||||
index 00000000000..a86956ad692
|
||||
|
@ -2702,3 +2702,4 @@ index 821cea9cb33..2c669a9822f 100644
|
|||
+ }
|
||||
return 0
|
||||
}
|
||||
|
||||
|
|
|
@ -19,14 +19,14 @@ index 0a4d8a51d1d..ee66c28ca35 100644
|
|||
--- a/gcc/combine-stack-adj.c
|
||||
+++ b/gcc/combine-stack-adj.c
|
||||
@@ -441,6 +441,8 @@ combine_stack_adjustments_for_block (basic_block bb)
|
||||
continue;
|
||||
continue;
|
||||
|
||||
set = single_set_for_csa (insn);
|
||||
+ if (set && find_reg_note (insn, REG_STACK_CHECK, NULL_RTX))
|
||||
+ set = NULL_RTX;
|
||||
if (set)
|
||||
{
|
||||
rtx dest = SET_DEST (set);
|
||||
{
|
||||
rtx dest = SET_DEST (set);
|
||||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index a07104d304d..a9072f58f50 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
|
@ -38,7 +38,7 @@ index a07104d304d..a9072f58f50 100644
|
|||
-static void
|
||||
+static rtx
|
||||
pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset,
|
||||
int style, bool set_cfa)
|
||||
int style, bool set_cfa)
|
||||
{
|
||||
@@ -9589,6 +9589,7 @@ pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset,
|
||||
m->fs.sp_offset = ooffset - INTVAL (offset);
|
||||
|
@ -50,8 +50,8 @@ index a07104d304d..a9072f58f50 100644
|
|||
/* Find an available register to be used as dynamic realign argument
|
||||
@@ -9902,9 +9903,11 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size)
|
||||
for (i = probe_interval; i <= size; i += probe_interval)
|
||||
{
|
||||
/* Allocate PROBE_INTERVAL bytes. */
|
||||
{
|
||||
/* Allocate PROBE_INTERVAL bytes. */
|
||||
- pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
|
||||
- GEN_INT (-probe_interval), -1,
|
||||
- m->fs.cfa_reg == stack_pointer_rtx);
|
||||
|
@ -61,8 +61,8 @@ index a07104d304d..a9072f58f50 100644
|
|||
+ m->fs.cfa_reg == stack_pointer_rtx);
|
||||
+ add_reg_note (insn, REG_STACK_CHECK, const0_rtx);
|
||||
|
||||
/* And probe at *sp. */
|
||||
emit_stack_probe (stack_pointer_rtx);
|
||||
/* And probe at *sp. */
|
||||
emit_stack_probe (stack_pointer_rtx);
|
||||
diff --git a/gcc/reg-notes.def b/gcc/reg-notes.def
|
||||
index db61c092aab..1d7a4356a85 100644
|
||||
--- a/gcc/reg-notes.def
|
||||
|
|
|
@ -19,18 +19,18 @@ index 2526e8513b7..d118e0d7782 100644
|
|||
+++ b/gcc/explow.c
|
||||
@@ -1778,11 +1778,11 @@ compute_stack_clash_protection_loop_data (rtx *rounded_size, rtx *last_addr,
|
||||
if (*rounded_size == CONST0_RTX (Pmode))
|
||||
fprintf (dump_file,
|
||||
"Stack clash skipped dynamic allocation and probing loop.\n");
|
||||
fprintf (dump_file,
|
||||
"Stack clash skipped dynamic allocation and probing loop.\n");
|
||||
- else if (GET_CODE (*rounded_size) == CONST_INT
|
||||
+ else if (CONST_INT_P (*rounded_size)
|
||||
&& INTVAL (*rounded_size) <= 4 * *probe_interval)
|
||||
fprintf (dump_file,
|
||||
"Stack clash dynamic allocation and probing inline.\n");
|
||||
&& INTVAL (*rounded_size) <= 4 * *probe_interval)
|
||||
fprintf (dump_file,
|
||||
"Stack clash dynamic allocation and probing inline.\n");
|
||||
- else if (GET_CODE (*rounded_size) == CONST_INT)
|
||||
+ else if (CONST_INT_P (*rounded_size))
|
||||
fprintf (dump_file,
|
||||
"Stack clash dynamic allocation and probing in "
|
||||
"rotated loop.\n");
|
||||
fprintf (dump_file,
|
||||
"Stack clash dynamic allocation and probing in "
|
||||
"rotated loop.\n");
|
||||
@@ -1880,7 +1880,8 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
||||
|
||||
if (rounded_size != CONST0_RTX (Pmode))
|
||||
|
@ -38,27 +38,27 @@ index 2526e8513b7..d118e0d7782 100644
|
|||
- if (INTVAL (rounded_size) <= 4 * probe_interval)
|
||||
+ if (CONST_INT_P (rounded_size)
|
||||
+ && INTVAL (rounded_size) <= 4 * probe_interval)
|
||||
{
|
||||
for (HOST_WIDE_INT i = 0;
|
||||
i < INTVAL (rounded_size);
|
||||
{
|
||||
for (HOST_WIDE_INT i = 0;
|
||||
i < INTVAL (rounded_size);
|
||||
@@ -1900,7 +1901,7 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
||||
else
|
||||
{
|
||||
rtx loop_lab, end_loop;
|
||||
{
|
||||
rtx loop_lab, end_loop;
|
||||
- bool rotate_loop = GET_CODE (rounded_size) == CONST_INT;
|
||||
+ bool rotate_loop = CONST_INT_P (rounded_size);
|
||||
emit_stack_clash_protection_probe_loop_start (&loop_lab, &end_loop,
|
||||
last_addr, rotate_loop);
|
||||
emit_stack_clash_protection_probe_loop_start (&loop_lab, &end_loop,
|
||||
last_addr, rotate_loop);
|
||||
|
||||
@@ -1938,7 +1939,7 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
||||
might hold live data. So probe at *sp if we know that
|
||||
an allocation was made, otherwise probe into the red zone
|
||||
which is obviously undesirable. */
|
||||
might hold live data. So probe at *sp if we know that
|
||||
an allocation was made, otherwise probe into the red zone
|
||||
which is obviously undesirable. */
|
||||
- if (GET_CODE (size) == CONST_INT)
|
||||
+ if (CONST_INT_P (size))
|
||||
{
|
||||
emit_stack_probe (stack_pointer_rtx);
|
||||
emit_insn (gen_blockage ());
|
||||
{
|
||||
emit_stack_probe (stack_pointer_rtx);
|
||||
emit_insn (gen_blockage ());
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/stack-check-11.c b/gcc/testsuite/gcc.target/i386/stack-check-11.c
|
||||
index 183103f01e5..fe5b2c2b844 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/stack-check-11.c
|
||||
|
@ -85,3 +85,4 @@ index 183103f01e5..fe5b2c2b844 100644
|
|||
-/* { dg-final { scan-assembler-times "orq" 3 } } */
|
||||
+/* { dg-final { scan-assembler-times "sub\[ql\]" 4 } } */
|
||||
+/* { dg-final { scan-assembler-times "or\[ql\]" 3 } } */
|
||||
|
||||
|
|
|
@ -228,9 +228,9 @@ index 3c04781f947..45998bc7516 100644
|
|||
if (cfun_frame_layout.first_save_gpr != -1)
|
||||
{
|
||||
@@ -10400,6 +10591,14 @@ s390_emit_prologue (void)
|
||||
- cfun_frame_layout.first_save_gpr_slot),
|
||||
cfun_frame_layout.first_save_gpr,
|
||||
cfun_frame_layout.last_save_gpr);
|
||||
- cfun_frame_layout.first_save_gpr_slot),
|
||||
cfun_frame_layout.first_save_gpr,
|
||||
cfun_frame_layout.last_save_gpr);
|
||||
+
|
||||
+ /* This is not 100% correct. If we have more than one register saved,
|
||||
+ then LAST_PROBE_OFFSET can move even closer to sp. */
|
||||
|
@ -244,31 +244,31 @@ index 3c04781f947..45998bc7516 100644
|
|||
|
||||
@@ -10416,6 +10615,8 @@ s390_emit_prologue (void)
|
||||
if (cfun_fpr_bit_p (i))
|
||||
{
|
||||
save_fpr (stack_pointer_rtx, offset, i + 16);
|
||||
{
|
||||
save_fpr (stack_pointer_rtx, offset, i + 16);
|
||||
+ if (offset < last_probe_offset)
|
||||
+ last_probe_offset = offset;
|
||||
offset += 8;
|
||||
}
|
||||
offset += 8;
|
||||
}
|
||||
else if (!TARGET_PACKED_STACK)
|
||||
@@ -10429,6 +10630,8 @@ s390_emit_prologue (void)
|
||||
if (cfun_fpr_bit_p (i))
|
||||
{
|
||||
insn = save_fpr (stack_pointer_rtx, offset, i + 16);
|
||||
{
|
||||
insn = save_fpr (stack_pointer_rtx, offset, i + 16);
|
||||
+ if (offset < last_probe_offset)
|
||||
+ last_probe_offset = offset;
|
||||
offset += 8;
|
||||
offset += 8;
|
||||
|
||||
/* If f4 and f6 are call clobbered they are saved due to stdargs and
|
||||
/* If f4 and f6 are call clobbered they are saved due to stdargs and
|
||||
@@ -10451,6 +10654,8 @@ s390_emit_prologue (void)
|
||||
if (cfun_fpr_bit_p (i))
|
||||
{
|
||||
insn = save_fpr (stack_pointer_rtx, offset, i + 16);
|
||||
if (cfun_fpr_bit_p (i))
|
||||
{
|
||||
insn = save_fpr (stack_pointer_rtx, offset, i + 16);
|
||||
+ if (offset < last_probe_offset)
|
||||
+ last_probe_offset = offset;
|
||||
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
offset -= 8;
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
offset -= 8;
|
||||
@@ -10470,10 +10675,11 @@ s390_emit_prologue (void)
|
||||
if (cfun_frame_layout.frame_size > 0)
|
||||
{
|
||||
|
@ -280,12 +280,12 @@ index 3c04781f947..45998bc7516 100644
|
|||
if (s390_stack_size)
|
||||
- {
|
||||
+ {
|
||||
HOST_WIDE_INT stack_guard;
|
||||
HOST_WIDE_INT stack_guard;
|
||||
|
||||
if (s390_stack_guard)
|
||||
if (s390_stack_guard)
|
||||
@@ -10538,35 +10744,36 @@ s390_emit_prologue (void)
|
||||
if (s390_warn_dynamicstack_p && cfun->calls_alloca)
|
||||
warning (0, "%qs uses dynamic stack allocation", current_function_name ());
|
||||
warning (0, "%qs uses dynamic stack allocation", current_function_name ());
|
||||
|
||||
- /* Save incoming stack pointer into temp reg. */
|
||||
- if (TARGET_BACKCHAIN || next_fpr)
|
||||
|
@ -307,7 +307,7 @@ index 3c04781f947..45998bc7516 100644
|
|||
- }
|
||||
- else
|
||||
+ if (TARGET_BACKCHAIN || next_fpr)
|
||||
{
|
||||
{
|
||||
- if (!CONST_OK_FOR_K (INTVAL (frame_off)))
|
||||
- frame_off = force_const_mem (Pmode, frame_off);
|
||||
-
|
||||
|
@ -332,7 +332,7 @@ index 3c04781f947..45998bc7516 100644
|
|||
+ emit_insn_after (gen_move_insn (temp_reg, stack_pointer_rtx),
|
||||
+ stack_pointer_backup_loc);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
- real_frame_off = GEN_INT (-cfun_frame_layout.frame_size);
|
||||
|
@ -345,8 +345,8 @@ index 3c04781f947..45998bc7516 100644
|
|||
|
||||
if (TARGET_BACKCHAIN)
|
||||
@@ -10590,6 +10797,8 @@ s390_emit_prologue (void)
|
||||
emit_clobber (addr);
|
||||
}
|
||||
emit_clobber (addr);
|
||||
}
|
||||
}
|
||||
+ else if (flag_stack_clash_protection)
|
||||
+ dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false);
|
||||
|
@ -384,6 +384,6 @@ index 2c669a9822f..f24c5c6e0ac 100644
|
|||
- if { [istarget x86_64-*-*] || [istarget i?86-*-*] } {
|
||||
+ if { [istarget x86_64-*-*] || [istarget i?86-*-*]
|
||||
+ || [istarget s390*-*-*] } {
|
||||
return 1
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
op1 = expand_normal (arg0);
|
||||
if (!address_operand (op1, VOIDmode))
|
||||
@@ -39543,6 +39540,10 @@
|
||||
op1 = convert_memory_address (Pmode, op1);
|
||||
op1 = copy_addr_to_reg (op1);
|
||||
}
|
||||
op1 = convert_memory_address (Pmode, op1);
|
||||
op1 = copy_addr_to_reg (op1);
|
||||
}
|
||||
+
|
||||
+ op0 = gen_reg_rtx (mode0);
|
||||
+ emit_insn (GEN_FCN (icode) (op0));
|
||||
|
@ -41,9 +41,9 @@
|
|||
op1 = expand_normal (arg0);
|
||||
if (!address_operand (op1, VOIDmode))
|
||||
@@ -39594,6 +39604,10 @@
|
||||
op1 = convert_memory_address (Pmode, op1);
|
||||
op1 = copy_addr_to_reg (op1);
|
||||
}
|
||||
op1 = convert_memory_address (Pmode, op1);
|
||||
op1 = copy_addr_to_reg (op1);
|
||||
}
|
||||
+
|
||||
+ op0 = gen_reg_rtx (mode0);
|
||||
+ emit_insn (GEN_FCN (icode) (op0));
|
||||
|
|
|
@ -8,27 +8,27 @@
|
|||
@@ -31339,8 +31339,8 @@ rs6000_elf_output_toc_section_asm_op (const void *data ATTRIBUTE_UNUSED)
|
||||
{
|
||||
if (!toc_initialized)
|
||||
{
|
||||
{
|
||||
- toc_initialized = 1;
|
||||
fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
||||
fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
||||
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
||||
(*targetm.asm_out.internal_label) (asm_out_file, "LCTOC", 0);
|
||||
fprintf (asm_out_file, "\t.tc ");
|
||||
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1[TC],");
|
||||
(*targetm.asm_out.internal_label) (asm_out_file, "LCTOC", 0);
|
||||
fprintf (asm_out_file, "\t.tc ");
|
||||
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1[TC],");
|
||||
@@ -31348,20 +31348,30 @@ rs6000_elf_output_toc_section_asm_op (const void *data ATTRIBUTE_UNUSED)
|
||||
fprintf (asm_out_file, "\n");
|
||||
fprintf (asm_out_file, "\n");
|
||||
|
||||
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
||||
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
||||
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
||||
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
|
||||
fprintf (asm_out_file, " = .+32768\n");
|
||||
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
|
||||
fprintf (asm_out_file, " = .+32768\n");
|
||||
+ toc_initialized = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
||||
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
||||
}
|
||||
else if ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
|
||||
&& !TARGET_RELOCATABLE)
|
||||
&& !TARGET_RELOCATABLE)
|
||||
- fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
||||
+ {
|
||||
+ fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
||||
|
@ -42,8 +42,8 @@
|
|||
{
|
||||
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
||||
if (!toc_initialized)
|
||||
{
|
||||
{
|
||||
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
||||
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
|
||||
fprintf (asm_out_file, " = .+32768\n");
|
||||
toc_initialized = 1;
|
||||
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
|
||||
fprintf (asm_out_file, " = .+32768\n");
|
||||
toc_initialized = 1;
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
+++ libitm/method-gl.cc
|
||||
@@ -291,12 +291,18 @@ public:
|
||||
// See begin_or_restart() for why we need release memory order here.
|
||||
v = gl_mg::clear_locked(v) + 1;
|
||||
o_gl_mg.orec.store(v, memory_order_release);
|
||||
v = gl_mg::clear_locked(v) + 1;
|
||||
o_gl_mg.orec.store(v, memory_order_release);
|
||||
-
|
||||
- // Need to ensure privatization safety. Every other transaction must
|
||||
- // have a snapshot time that is at least as high as our commit time
|
||||
|
|
|
@ -113,11 +113,11 @@ index b91a456..ebc9a90 100644
|
|||
+ ix86_set_indirect_branch_type (fndecl);
|
||||
+
|
||||
tree old_tree = (ix86_previous_fndecl
|
||||
? DECL_FUNCTION_SPECIFIC_TARGET (ix86_previous_fndecl)
|
||||
: NULL_TREE);
|
||||
? DECL_FUNCTION_SPECIFIC_TARGET (ix86_previous_fndecl)
|
||||
: NULL_TREE);
|
||||
@@ -4637,6 +4682,8 @@ ix86_set_current_function (tree fndecl)
|
||||
target_reinit ();
|
||||
}
|
||||
target_reinit ();
|
||||
}
|
||||
}
|
||||
+ if (cfun && cfun->machine && fndecl)
|
||||
+ ix86_set_indirect_branch_type (fndecl);
|
||||
|
@ -344,7 +344,7 @@ index b91a456..ebc9a90 100644
|
|||
+ output_indirect_thunk_function (regno);
|
||||
+
|
||||
if (!(pic_labels_used & (1 << regno)))
|
||||
continue;
|
||||
continue;
|
||||
|
||||
@@ -24074,12 +24324,250 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1,
|
||||
return call;
|
||||
|
@ -599,7 +599,7 @@ index b91a456..ebc9a90 100644
|
|||
|
||||
@@ -24092,9 +24580,17 @@ ix86_output_call_insn (rtx insn, rtx call_op)
|
||||
else if (TARGET_SEH)
|
||||
xasm = "rex.W jmp %A0";
|
||||
xasm = "rex.W jmp %A0";
|
||||
else
|
||||
- xasm = "jmp\t%A0";
|
||||
+ {
|
||||
|
|
|
@ -22,7 +22,7 @@ index ebc9a90..9dffd02f 100644
|
|||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -4635,6 +4635,31 @@ ix86_set_indirect_branch_type (tree fndecl)
|
||||
else
|
||||
cfun->machine->indirect_branch_type = ix86_indirect_branch;
|
||||
cfun->machine->indirect_branch_type = ix86_indirect_branch;
|
||||
}
|
||||
+
|
||||
+ if (cfun->machine->function_return_type == indirect_branch_unset)
|
||||
|
@ -66,8 +66,8 @@ index ebc9a90..9dffd02f 100644
|
|||
{
|
||||
if (regno >= 0)
|
||||
@@ -8748,14 +8776,22 @@ indirect_thunk_name (char name[32], int regno)
|
||||
reg_prefix, reg_names[regno]);
|
||||
}
|
||||
reg_prefix, reg_names[regno]);
|
||||
}
|
||||
else
|
||||
- sprintf (name, "__x86_indirect_thunk");
|
||||
+ {
|
||||
|
@ -78,7 +78,7 @@ index ebc9a90..9dffd02f 100644
|
|||
else
|
||||
{
|
||||
if (regno >= 0)
|
||||
ASM_GENERATE_INTERNAL_LABEL (name, "LITR", regno);
|
||||
ASM_GENERATE_INTERNAL_LABEL (name, "LITR", regno);
|
||||
else
|
||||
- ASM_GENERATE_INTERNAL_LABEL (name, "LIT", 0);
|
||||
+ {
|
||||
|
@ -97,10 +97,10 @@ index ebc9a90..9dffd02f 100644
|
|||
- indirect_thunk_name (name, regno);
|
||||
+ indirect_thunk_name (name, regno, false);
|
||||
decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
|
||||
get_identifier (name),
|
||||
build_function_type_list (void_type_node, NULL_TREE));
|
||||
get_identifier (name),
|
||||
build_function_type_list (void_type_node, NULL_TREE));
|
||||
@@ -8885,6 +8921,36 @@ output_indirect_thunk_function (int regno)
|
||||
ASM_OUTPUT_LABEL (asm_out_file, name);
|
||||
ASM_OUTPUT_LABEL (asm_out_file, name);
|
||||
}
|
||||
|
||||
+ if (regno < 0)
|
||||
|
@ -137,9 +137,9 @@ index ebc9a90..9dffd02f 100644
|
|||
current_function_decl = decl;
|
||||
allocate_struct_function (decl, false);
|
||||
@@ -24353,7 +24419,7 @@ ix86_output_indirect_branch_via_reg (rtx call_op, bool sibcall_p)
|
||||
i -= (FIRST_REX_INT_REG - LAST_INT_REG - 1);
|
||||
indirect_thunks_used |= 1 << i;
|
||||
}
|
||||
i -= (FIRST_REX_INT_REG - LAST_INT_REG - 1);
|
||||
indirect_thunks_used |= 1 << i;
|
||||
}
|
||||
- indirect_thunk_name (thunk_name_buf, regno);
|
||||
+ indirect_thunk_name (thunk_name_buf, regno, false);
|
||||
thunk_name = thunk_name_buf;
|
||||
|
@ -148,7 +148,7 @@ index ebc9a90..9dffd02f 100644
|
|||
@@ -24437,7 +24503,7 @@ ix86_output_indirect_branch_via_push (rtx call_op, const char *xasm,
|
||||
{
|
||||
if (cfun->machine->indirect_branch_type == indirect_branch_thunk)
|
||||
indirect_thunk_needed = true;
|
||||
indirect_thunk_needed = true;
|
||||
- indirect_thunk_name (thunk_name_buf, regno);
|
||||
+ indirect_thunk_name (thunk_name_buf, regno, false);
|
||||
thunk_name = thunk_name_buf;
|
||||
|
@ -193,7 +193,7 @@ index ebc9a90..9dffd02f 100644
|
|||
|
||||
const char *
|
||||
@@ -35972,6 +36069,28 @@ ix86_handle_fndecl_attribute (tree *node, tree name,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ if (is_attribute_p ("function_return", name))
|
||||
|
|
|
@ -32,7 +32,7 @@ index ef16cf5..228f8f6 100644
|
|||
cfun->machine->has_local_indirect_jump = true;
|
||||
})
|
||||
@@ -11327,7 +11327,7 @@
|
||||
OPTAB_DIRECT);
|
||||
OPTAB_DIRECT);
|
||||
}
|
||||
|
||||
- if (TARGET_X32)
|
||||
|
@ -46,18 +46,18 @@ index ef16cf5..228f8f6 100644
|
|||
(define_insn "*call_pop"
|
||||
- [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm"))
|
||||
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lwz"))
|
||||
(match_operand 1))
|
||||
(match_operand 1))
|
||||
(set (reg:SI SP_REG)
|
||||
(plus:SI (reg:SI SP_REG)
|
||||
(plus:SI (reg:SI SP_REG)
|
||||
@@ -11612,7 +11612,7 @@
|
||||
|
||||
(define_insn "*call_value_pop"
|
||||
[(set (match_operand 0)
|
||||
- (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm"))
|
||||
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lwz"))
|
||||
(match_operand 2)))
|
||||
(match_operand 2)))
|
||||
(set (reg:SI SP_REG)
|
||||
(plus:SI (reg:SI SP_REG)
|
||||
(plus:SI (reg:SI SP_REG)
|
||||
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
|
||||
index 9dfa2cb..0a8ae8f 100644
|
||||
--- a/gcc/config/i386/i386.opt
|
||||
|
@ -81,12 +81,12 @@ index 61614e1..6c7a593 100644
|
|||
- (and (not (match_test "TARGET_X32"))
|
||||
+ (and (not (match_test "ix86_indirect_branch_register"))
|
||||
+ (not (match_test "TARGET_X32"))
|
||||
(match_operand 0 "memory_operand"))))
|
||||
(match_operand 0 "memory_operand"))))
|
||||
|
||||
;; Test for a valid operand for a call instruction.
|
||||
@@ -549,8 +550,9 @@
|
||||
(ior (match_test "constant_call_address_operand
|
||||
(op, mode == VOIDmode ? mode : Pmode)")
|
||||
(op, mode == VOIDmode ? mode : Pmode)")
|
||||
(match_operand 0 "call_register_no_elim_operand")
|
||||
- (and (not (match_test "TARGET_X32"))
|
||||
- (match_operand 0 "memory_operand"))))
|
||||
|
@ -518,3 +518,4 @@ index fa24a1f..d1db41c 100644
|
|||
+/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
extern void (*bar) (void);
|
||||
|
||||
|
|
|
@ -49,13 +49,13 @@ index 9dffd02f..e73389b 100644
|
|||
; -- print a semicolon (after prefixes due to bug in older gas).
|
||||
~ -- print "i" if TARGET_AVX2, "f" otherwise.
|
||||
@@ -14919,6 +14929,7 @@ ix86_print_operand (FILE *file, rtx x, int code)
|
||||
case 'X':
|
||||
case 'P':
|
||||
case 'p':
|
||||
case 'X':
|
||||
case 'P':
|
||||
case 'p':
|
||||
+ case 'V':
|
||||
break;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
case 's':
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c
|
||||
new file mode 100644
|
||||
index 0000000..f0cd9b7
|
||||
|
|
|
@ -9,9 +9,9 @@ index e73389b..15cfe83 100644
|
|||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -4634,6 +4634,19 @@ ix86_set_indirect_branch_type (tree fndecl)
|
||||
}
|
||||
}
|
||||
else
|
||||
cfun->machine->indirect_branch_type = ix86_indirect_branch;
|
||||
cfun->machine->indirect_branch_type = ix86_indirect_branch;
|
||||
+
|
||||
+ /* -mcmodel=large is not compatible with -mindirect-branch=thunk
|
||||
+ nor -mindirect-branch=thunk-extern. */
|
||||
|
@ -29,9 +29,9 @@ index e73389b..15cfe83 100644
|
|||
|
||||
if (cfun->machine->function_return_type == indirect_branch_unset)
|
||||
@@ -4659,6 +4672,19 @@ ix86_set_indirect_branch_type (tree fndecl)
|
||||
}
|
||||
}
|
||||
else
|
||||
cfun->machine->function_return_type = ix86_function_return;
|
||||
cfun->machine->function_return_type = ix86_function_return;
|
||||
+
|
||||
+ /* -mcmodel=large is not compatible with -mfunction-return=thunk
|
||||
+ nor -mfunction-return=thunk-extern. */
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
PR target/85287
|
||||
* gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
|
||||
for stack clash protection in a register whenever we need it to be in
|
||||
a register.
|
||||
|
||||
|
||||
--- a/gcc/config/rs6000/rs6000.md 2018/04/10 21:09:30 259298
|
||||
+++ b/gcc/config/rs6000/rs6000.md 2018/04/10 21:37:34 259299
|
||||
@@ -9783,14 +9783,12 @@
|
||||
/* Now handle residuals. We just have to set operands[1] correctly
|
||||
and let the rest of the expander run. */
|
||||
operands[1] = residual;
|
||||
- if (!CONST_INT_P (residual))
|
||||
- operands[1] = force_reg (Pmode, operands[1]);
|
||||
}
|
||||
|
||||
- if (GET_CODE (operands[1]) != CONST_INT
|
||||
- || INTVAL (operands[1]) < -32767
|
||||
- || INTVAL (operands[1]) > 32768)
|
||||
+ if (!(CONST_INT_P (operands[1])
|
||||
+ && IN_RANGE (INTVAL (operands[1]), -32767, 32768)))
|
||||
{
|
||||
+ operands[1] = force_reg (Pmode, operands[1]);
|
||||
neg_op0 = gen_reg_rtx (Pmode);
|
||||
if (TARGET_32BIT)
|
||||
emit_insn (gen_negsi2 (neg_op0, operands[1]));
|
||||
@@ -9798,7 +9796,7 @@
|
||||
emit_insn (gen_negdi2 (neg_op0, operands[1]));
|
||||
}
|
||||
else
|
||||
- neg_op0 = GEN_INT (- INTVAL (operands[1]));
|
||||
+ neg_op0 = GEN_INT (-INTVAL (operands[1]));
|
||||
|
||||
insn = emit_insn ((* ((TARGET_32BIT) ? gen_movsi_update_stack
|
||||
: gen_movdi_di_update_stack))
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
diff --git a/gcc/testsuite/gcc.dg/stack-check-5.c b/gcc/testsuite/gcc.dg/stack-check-5.c
|
||||
index 850e023ea4e..604fa3cf6c5 100644
|
||||
--- a/gcc/testsuite/gcc.dg/stack-check-5.c
|
||||
+++ b/gcc/testsuite/gcc.dg/stack-check-5.c
|
||||
@@ -1,7 +1,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
-/* { dg-skip-if "" { *-*-* } { "-fstack-protector" } { "" } } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
|
||||
|
||||
/* Otherwise the S/390 back-end might save the stack pointer in f2 ()
|
||||
diff --git a/gcc/testsuite/gcc.dg/stack-check-6.c b/gcc/testsuite/gcc.dg/stack-check-6.c
|
||||
index ab4b0e8894c..fe75612b737 100644
|
||||
--- a/gcc/testsuite/gcc.dg/stack-check-6.c
|
||||
+++ b/gcc/testsuite/gcc.dg/stack-check-6.c
|
||||
@@ -1,7 +1,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
-/* { dg-skip-if "" { *-*-* } { "-fstack-protector" } { "" } } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
|
||||
|
||||
extern void foo (char *);
|
||||
diff --git a/gcc/testsuite/gcc.dg/stack-check-6a.c b/gcc/testsuite/gcc.dg/stack-check-6a.c
|
||||
index 468d649a4fa..8fb9c621585 100644
|
||||
--- a/gcc/testsuite/gcc.dg/stack-check-6a.c
|
||||
+++ b/gcc/testsuite/gcc.dg/stack-check-6a.c
|
||||
@@ -4,7 +4,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection -fdump-rtl-pro_and_epilogue -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=16" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
-/* { dg-skip-if "" { *-*-* } { "-fstack-protector" } { "" } } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
|
||||
|
||||
#include "stack-check-6.c"
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/stack-check-11.c b/gcc/testsuite/gcc.target/i386/stack-check-11.c
|
||||
index fe5b2c2b844..43a291857b6 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/stack-check-11.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/stack-check-11.c
|
||||
@@ -1,6 +1,8 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
+
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/stack-check-17.c b/gcc/testsuite/gcc.target/i386/stack-check-17.c
|
||||
index dcd29305a2c..da6ea016815 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/stack-check-17.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/stack-check-17.c
|
||||
@@ -1,6 +1,8 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection -mtune=generic -fomit-frame-pointer" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
+
|
||||
|
||||
|
||||
int x0, x1;
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/stack-check-18.c b/gcc/testsuite/gcc.target/i386/stack-check-18.c
|
||||
index 1638f776267..1cf4bbcfafb 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/stack-check-18.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/stack-check-18.c
|
||||
@@ -1,7 +1,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection -mtune=generic -fdump-rtl-expand" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
-/* { dg-skip-if "" { *-*-* } { "-fstack-protector" } { "" } } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
|
||||
int f1 (char *);
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/stack-check-19.c b/gcc/testsuite/gcc.target/i386/stack-check-19.c
|
||||
index c341801189c..49f3a20af8b 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/stack-check-19.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/stack-check-19.c
|
||||
@@ -1,7 +1,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fstack-clash-protection -mtune=generic -fdump-rtl-expand" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
-/* { dg-skip-if "" { *-*-* } { "-fstack-protector" } { "" } } */
|
||||
+/* { dg-skip-if "" { *-*-* } { "-fstack-protector*" } { "" } } */
|
||||
|
||||
int f1 (char *);
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
commit f7765f70e0e254fd9ce4469c7281c69cd06c9467
|
||||
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed Jan 24 21:57:16 2018 +0000
|
||||
|
||||
PR target/83994
|
||||
* i386.c (get_probe_interval): Move to earlier point.
|
||||
(ix86_compute_frame_layout): If -fstack-clash-protection and
|
||||
the frame is larger than the probe interval, then use pushes
|
||||
to save registers rather than reg->mem moves.
|
||||
(ix86_expand_prologue): Remove conditional for int_registers_saved
|
||||
assertion.
|
||||
|
||||
PR target/83994
|
||||
* gcc.target/i386/pr83994.c: New test.
|
||||
|
||||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index 15cfe83..5230227 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -9371,6 +9371,18 @@ ix86_builtin_setjmp_frame_value (void)
|
||||
return stack_realign_fp ? hard_frame_pointer_rtx : virtual_stack_vars_rtx;
|
||||
}
|
||||
|
||||
+/* Return the probing interval for -fstack-clash-protection. */
|
||||
+
|
||||
+static HOST_WIDE_INT
|
||||
+get_probe_interval (void)
|
||||
+{
|
||||
+ if (flag_stack_clash_protection)
|
||||
+ return (HOST_WIDE_INT_1U
|
||||
+ << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL));
|
||||
+ else
|
||||
+ return (HOST_WIDE_INT_1U << STACK_CHECK_PROBE_INTERVAL_EXP);
|
||||
+}
|
||||
+
|
||||
/* When using -fsplit-stack, the allocation routines set a field in
|
||||
the TCB to the bottom of the stack plus this much space, measured
|
||||
in bytes. */
|
||||
@@ -9545,7 +9557,15 @@ ix86_compute_frame_layout (struct ix86_frame *frame)
|
||||
to_allocate = offset - frame->sse_reg_save_offset;
|
||||
|
||||
if ((!to_allocate && frame->nregs <= 1)
|
||||
- || (TARGET_64BIT && to_allocate >= (HOST_WIDE_INT) 0x80000000))
|
||||
+ || (TARGET_64BIT && to_allocate >= (HOST_WIDE_INT) 0x80000000)
|
||||
+ /* If stack clash probing needs a loop, then it needs a
|
||||
+ scratch register. But the returned register is only guaranteed
|
||||
+ to be safe to use after register saves are complete. So if
|
||||
+ stack clash protections are enabled and the allocated frame is
|
||||
+ larger than the probe interval, then use pushes to save
|
||||
+ callee saved registers. */
|
||||
+ || (flag_stack_clash_protection && to_allocate > get_probe_interval ()))
|
||||
+
|
||||
frame->save_regs_using_mov = false;
|
||||
|
||||
if (ix86_using_red_zone ()
|
||||
@@ -10181,18 +10201,6 @@ release_scratch_register_on_entry (struct scratch_reg *sr)
|
||||
}
|
||||
}
|
||||
|
||||
-/* Return the probing interval for -fstack-clash-protection. */
|
||||
-
|
||||
-static HOST_WIDE_INT
|
||||
-get_probe_interval (void)
|
||||
-{
|
||||
- if (flag_stack_clash_protection)
|
||||
- return (HOST_WIDE_INT_1U
|
||||
- << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL));
|
||||
- else
|
||||
- return (HOST_WIDE_INT_1U << STACK_CHECK_PROBE_INTERVAL_EXP);
|
||||
-}
|
||||
-
|
||||
/* Emit code to adjust the stack pointer by SIZE bytes while probing it.
|
||||
|
||||
This differs from the next routine in that it tries hard to prevent
|
||||
@@ -11064,12 +11072,11 @@ ix86_expand_prologue (void)
|
||||
&& (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
|
||||
|| flag_stack_clash_protection))
|
||||
{
|
||||
- /* This assert wants to verify that integer registers were saved
|
||||
- prior to probing. This is necessary when probing may be implemented
|
||||
- as a function call (Windows). It is not necessary for stack clash
|
||||
- protection probing. */
|
||||
- if (!flag_stack_clash_protection)
|
||||
- gcc_assert (int_registers_saved);
|
||||
+ /* We expect the GP registers to be saved when probes are used
|
||||
+ as the probing sequences might need a scratch register and
|
||||
+ the routine to allocate one assumes the integer registers
|
||||
+ have already been saved. */
|
||||
+ gcc_assert (int_registers_saved);
|
||||
|
||||
if (flag_stack_clash_protection)
|
||||
{
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/pr83994.c b/gcc/testsuite/gcc.target/i386/pr83994.c
|
||||
new file mode 100644
|
||||
index 0000000..dc0b7cb
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr83994.c
|
||||
@@ -0,0 +1,16 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -march=i686 -fpic -fstack-clash-protection" } */
|
||||
+/* { dg-require-effective-target ia32 } */
|
||||
+
|
||||
+void f1 (char *);
|
||||
+
|
||||
+__attribute__ ((regparm (3)))
|
||||
+int
|
||||
+f2 (int arg1, int arg2, int arg3)
|
||||
+{
|
||||
+ char buf[16384];
|
||||
+ f1 (buf);
|
||||
+ f1 (buf);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
|
@ -0,0 +1,163 @@
|
|||
commit 33839c8f8aa7857cc5f22ddb3f0960999cb0dfc7
|
||||
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Wed Jan 31 05:02:30 2018 +0000
|
||||
|
||||
PR target/84064
|
||||
* i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
|
||||
INT_REGISTERS_SAVED. Check it prior to calling
|
||||
get_scratch_register_on_entry.
|
||||
(ix86_adjust_stack_and_probe): Similarly.
|
||||
(ix86_emit_probe_stack_range): Similarly.
|
||||
(ix86_expand_prologue): Corresponding changes.
|
||||
|
||||
PR target/84064
|
||||
* gcc.target/i386/pr84064: New test.
|
||||
|
||||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index 5230227..2fe2a0c 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -10206,10 +10206,14 @@ release_scratch_register_on_entry (struct scratch_reg *sr)
|
||||
This differs from the next routine in that it tries hard to prevent
|
||||
attacks that jump the stack guard. Thus it is never allowed to allocate
|
||||
more than PROBE_INTERVAL bytes of stack space without a suitable
|
||||
- probe. */
|
||||
+ probe.
|
||||
+
|
||||
+ INT_REGISTERS_SAVED is true if integer registers have already been
|
||||
+ pushed on the stack. */
|
||||
|
||||
static void
|
||||
-ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size)
|
||||
+ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size,
|
||||
+ const bool int_registers_saved)
|
||||
{
|
||||
struct machine_function *m = cfun->machine;
|
||||
struct ix86_frame frame;
|
||||
@@ -10318,6 +10322,12 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size)
|
||||
}
|
||||
else
|
||||
{
|
||||
+ /* We expect the GP registers to be saved when probes are used
|
||||
+ as the probing sequences might need a scratch register and
|
||||
+ the routine to allocate one assumes the integer registers
|
||||
+ have already been saved. */
|
||||
+ gcc_assert (int_registers_saved);
|
||||
+
|
||||
struct scratch_reg sr;
|
||||
get_scratch_register_on_entry (&sr);
|
||||
|
||||
@@ -10376,10 +10386,14 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size)
|
||||
emit_insn (gen_blockage ());
|
||||
}
|
||||
|
||||
-/* Emit code to adjust the stack pointer by SIZE bytes while probing it. */
|
||||
+/* Emit code to adjust the stack pointer by SIZE bytes while probing it.
|
||||
+
|
||||
+ INT_REGISTERS_SAVED is true if integer registers have already been
|
||||
+ pushed on the stack. */
|
||||
|
||||
static void
|
||||
-ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
|
||||
+ix86_adjust_stack_and_probe (const HOST_WIDE_INT size,
|
||||
+ const bool int_registers_saved)
|
||||
{
|
||||
/* We skip the probe for the first interval + a small dope of 4 words and
|
||||
probe that many bytes past the specified size to maintain a protection
|
||||
@@ -10440,6 +10454,12 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size)
|
||||
equality test for the loop condition. */
|
||||
else
|
||||
{
|
||||
+ /* We expect the GP registers to be saved when probes are used
|
||||
+ as the probing sequences might need a scratch register and
|
||||
+ the routine to allocate one assumes the integer registers
|
||||
+ have already been saved. */
|
||||
+ gcc_assert (int_registers_saved);
|
||||
+
|
||||
HOST_WIDE_INT rounded_size;
|
||||
struct scratch_reg sr;
|
||||
|
||||
@@ -10564,10 +10584,14 @@ output_adjust_stack_and_probe (rtx reg)
|
||||
}
|
||||
|
||||
/* Emit code to probe a range of stack addresses from FIRST to FIRST+SIZE,
|
||||
- inclusive. These are offsets from the current stack pointer. */
|
||||
+ inclusive. These are offsets from the current stack pointer.
|
||||
+
|
||||
+ INT_REGISTERS_SAVED is true if integer registers have already been
|
||||
+ pushed on the stack. */
|
||||
|
||||
static void
|
||||
-ix86_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
|
||||
+ix86_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size,
|
||||
+ const bool int_registers_saved)
|
||||
{
|
||||
/* See if we have a constant small number of probes to generate. If so,
|
||||
that's the easy case. The run-time loop is made up of 7 insns in the
|
||||
@@ -10595,6 +10619,12 @@ ix86_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
|
||||
equality test for the loop condition. */
|
||||
else
|
||||
{
|
||||
+ /* We expect the GP registers to be saved when probes are used
|
||||
+ as the probing sequences might need a scratch register and
|
||||
+ the routine to allocate one assumes the integer registers
|
||||
+ have already been saved. */
|
||||
+ gcc_assert (int_registers_saved);
|
||||
+
|
||||
HOST_WIDE_INT rounded_size, last;
|
||||
struct scratch_reg sr;
|
||||
|
||||
@@ -11072,20 +11102,15 @@ ix86_expand_prologue (void)
|
||||
&& (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
|
||||
|| flag_stack_clash_protection))
|
||||
{
|
||||
- /* We expect the GP registers to be saved when probes are used
|
||||
- as the probing sequences might need a scratch register and
|
||||
- the routine to allocate one assumes the integer registers
|
||||
- have already been saved. */
|
||||
- gcc_assert (int_registers_saved);
|
||||
-
|
||||
if (flag_stack_clash_protection)
|
||||
{
|
||||
- ix86_adjust_stack_and_probe_stack_clash (allocate);
|
||||
+ ix86_adjust_stack_and_probe_stack_clash (allocate,
|
||||
+ int_registers_saved);
|
||||
allocate = 0;
|
||||
}
|
||||
else if (STACK_CHECK_MOVING_SP)
|
||||
{
|
||||
- ix86_adjust_stack_and_probe (allocate);
|
||||
+ ix86_adjust_stack_and_probe (allocate, int_registers_saved);
|
||||
allocate = 0;
|
||||
}
|
||||
else
|
||||
@@ -11096,9 +11121,11 @@ ix86_expand_prologue (void)
|
||||
size = 0x80000000 - get_stack_check_protect () - 1;
|
||||
|
||||
if (TARGET_STACK_PROBE)
|
||||
- ix86_emit_probe_stack_range (0, size + get_stack_check_protect ());
|
||||
+ ix86_emit_probe_stack_range (0, size + get_stack_check_protect (),
|
||||
+ int_registers_saved);
|
||||
else
|
||||
- ix86_emit_probe_stack_range (get_stack_check_protect (), size);
|
||||
+ ix86_emit_probe_stack_range (get_stack_check_protect (), size,
|
||||
+ int_registers_saved);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/pr84064.c b/gcc/testsuite/gcc.target/i386/pr84064.c
|
||||
new file mode 100644
|
||||
index 0000000..01f8d9e
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr84064.c
|
||||
@@ -0,0 +1,10 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -march=i686 -fstack-clash-protection" } */
|
||||
+/* { dg-require-effective-target ia32 } */
|
||||
+
|
||||
+void
|
||||
+f (void *p1, void *p2)
|
||||
+{
|
||||
+ __builtin_memcpy (p1, p2, 1000);
|
||||
+}
|
||||
+
|
|
@ -0,0 +1,182 @@
|
|||
commit 14041afe24556efd5845564aa183b6451fd9d6cc
|
||||
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu Feb 1 16:22:56 2018 +0000
|
||||
|
||||
PR target/84128
|
||||
* config/i386/i386.c (release_scratch_register_on_entry): Add new
|
||||
OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
|
||||
the scratch if RELEASE_VIA_POP is false.
|
||||
(ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
|
||||
If we have to save a temporary register, decrement SIZE appropriately.
|
||||
Pass new arguments to release_scratch_register_on_entry.
|
||||
(ix86_adjust_stack_and_probe): Likewise.
|
||||
(ix86_emit_probe_stack_range): Pass new arguments to
|
||||
release_scratch_register_on_entry.
|
||||
|
||||
PR target/84128
|
||||
* gcc.target/i386/pr84128.c: New test.
|
||||
|
||||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index 2fe2a0c..c25d26c 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -10182,22 +10182,39 @@ get_scratch_register_on_entry (struct scratch_reg *sr)
|
||||
}
|
||||
}
|
||||
|
||||
-/* Release a scratch register obtained from the preceding function. */
|
||||
+/* Release a scratch register obtained from the preceding function.
|
||||
+
|
||||
+ If RELEASE_VIA_POP is true, we just pop the register off the stack
|
||||
+ to release it. This is what non-Linux systems use with -fstack-check.
|
||||
+
|
||||
+ Otherwise we use OFFSET to locate the saved register and the
|
||||
+ allocated stack space becomes part of the local frame and is
|
||||
+ deallcated by the epilogue. */
|
||||
|
||||
static void
|
||||
-release_scratch_register_on_entry (struct scratch_reg *sr)
|
||||
+release_scratch_register_on_entry (struct scratch_reg *sr, HOST_WIDE_INT offset,
|
||||
+ bool release_via_pop)
|
||||
{
|
||||
if (sr->saved)
|
||||
{
|
||||
- struct machine_function *m = cfun->machine;
|
||||
- rtx x, insn = emit_insn (gen_pop (sr->reg));
|
||||
+ if (release_via_pop)
|
||||
+ {
|
||||
+ struct machine_function *m = cfun->machine;
|
||||
+ rtx x, insn = emit_insn (gen_pop (sr->reg));
|
||||
|
||||
- /* The RTX_FRAME_RELATED_P mechanism doesn't know about pop. */
|
||||
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||
- x = gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (UNITS_PER_WORD));
|
||||
- x = gen_rtx_SET (VOIDmode, stack_pointer_rtx, x);
|
||||
- add_reg_note (insn, REG_FRAME_RELATED_EXPR, x);
|
||||
- m->fs.sp_offset -= UNITS_PER_WORD;
|
||||
+ /* The RTX FRAME_RELATED_P mechanism doesn't know about pop. */
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ x = gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (UNITS_PER_WORD));
|
||||
+ x = gen_rtx_SET (VOIDmode, stack_pointer_rtx, x);
|
||||
+ add_reg_note (insn, REG_FRAME_RELATED_EXPR, x);
|
||||
+ m->fs.sp_offset -= UNITS_PER_WORD;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ rtx x = gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (offset));
|
||||
+ x = gen_rtx_SET (VOIDmode, sr->reg, gen_rtx_MEM (word_mode, x));
|
||||
+ emit_insn (x);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10212,7 +10229,7 @@ release_scratch_register_on_entry (struct scratch_reg *sr)
|
||||
pushed on the stack. */
|
||||
|
||||
static void
|
||||
-ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size,
|
||||
+ix86_adjust_stack_and_probe_stack_clash (HOST_WIDE_INT size,
|
||||
const bool int_registers_saved)
|
||||
{
|
||||
struct machine_function *m = cfun->machine;
|
||||
@@ -10331,6 +10348,12 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size,
|
||||
struct scratch_reg sr;
|
||||
get_scratch_register_on_entry (&sr);
|
||||
|
||||
+ /* If we needed to save a register, then account for any space
|
||||
+ that was pushed (we are not going to pop the register when
|
||||
+ we do the restore). */
|
||||
+ if (sr.saved)
|
||||
+ size -= UNITS_PER_WORD;
|
||||
+
|
||||
/* Step 1: round SIZE down to a multiple of the interval. */
|
||||
HOST_WIDE_INT rounded_size = size & -probe_interval;
|
||||
|
||||
@@ -10379,7 +10402,9 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size,
|
||||
m->fs.cfa_reg == stack_pointer_rtx);
|
||||
dump_stack_clash_frame_info (PROBE_LOOP, size != rounded_size);
|
||||
|
||||
- release_scratch_register_on_entry (&sr);
|
||||
+ /* This does not deallocate the space reserved for the scratch
|
||||
+ register. That will be deallocated in the epilogue. */
|
||||
+ release_scratch_register_on_entry (&sr, size, false);
|
||||
}
|
||||
|
||||
/* Make sure nothing is scheduled before we are done. */
|
||||
@@ -10392,7 +10417,7 @@ ix86_adjust_stack_and_probe_stack_clash (const HOST_WIDE_INT size,
|
||||
pushed on the stack. */
|
||||
|
||||
static void
|
||||
-ix86_adjust_stack_and_probe (const HOST_WIDE_INT size,
|
||||
+ix86_adjust_stack_and_probe (HOST_WIDE_INT size,
|
||||
const bool int_registers_saved)
|
||||
{
|
||||
/* We skip the probe for the first interval + a small dope of 4 words and
|
||||
@@ -10465,6 +10490,11 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size,
|
||||
|
||||
get_scratch_register_on_entry (&sr);
|
||||
|
||||
+ /* If we needed to save a register, then account for any space
|
||||
+ that was pushed (we are not going to pop the register when
|
||||
+ we do the restore). */
|
||||
+ if (sr.saved)
|
||||
+ size -= UNITS_PER_WORD;
|
||||
|
||||
/* Step 1: round SIZE to the previous multiple of the interval. */
|
||||
|
||||
@@ -10516,7 +10546,9 @@ ix86_adjust_stack_and_probe (const HOST_WIDE_INT size,
|
||||
(get_probe_interval ()
|
||||
+ dope))));
|
||||
|
||||
- release_scratch_register_on_entry (&sr);
|
||||
+ /* This does not deallocate the space reserved for the scratch
|
||||
+ register. That will be deallocated in the epilogue. */
|
||||
+ release_scratch_register_on_entry (&sr, size, false);
|
||||
}
|
||||
|
||||
gcc_assert (cfun->machine->fs.cfa_reg != stack_pointer_rtx);
|
||||
@@ -10669,7 +10701,7 @@ ix86_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size,
|
||||
sr.reg),
|
||||
rounded_size - size));
|
||||
|
||||
- release_scratch_register_on_entry (&sr);
|
||||
+ release_scratch_register_on_entry (&sr, size, true);
|
||||
}
|
||||
|
||||
/* Make sure nothing is scheduled before we are done. */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/pr84128.c b/gcc/testsuite/gcc.target/i386/pr84128.c
|
||||
new file mode 100644
|
||||
index 0000000..a8323fd
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr84128.c
|
||||
@@ -0,0 +1,30 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O2 -march=i686 -mtune=generic -fstack-clash-protection" } */
|
||||
+/* { dg-require-effective-target ia32 } */
|
||||
+
|
||||
+__attribute__ ((noinline, noclone, weak, regparm (3)))
|
||||
+int
|
||||
+f1 (long arg0, int (*pf) (long, void *))
|
||||
+{
|
||||
+ unsigned char buf[32768];
|
||||
+ return pf (arg0, buf);
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline, noclone, weak))
|
||||
+int
|
||||
+f2 (long arg0, void *ignored)
|
||||
+{
|
||||
+ if (arg0 != 17)
|
||||
+ __builtin_abort ();
|
||||
+ return 19;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ if (f1 (17, f2) != 19)
|
||||
+ __builtin_abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
|
@ -0,0 +1,80 @@
|
|||
commit 5fdcac79eb72406c59fa72073dfb3ba21380f56d
|
||||
Author: ktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue Apr 10 09:58:57 2018 +0000
|
||||
|
||||
[explow] PR target/85173: validize memory before passing it on to target probe_stack
|
||||
|
||||
In this PR the expansion code emits an invalid memory address for the stack probe, which the backend fails to recognise.
|
||||
The address is created explicitly in anti_adjust_stack_and_probe_stack_clash in explow.c and passed down to gen_probe_stack
|
||||
without any validation in emit_stack_probe.
|
||||
|
||||
This patch fixes the ICE by calling validize_mem on the memory location before passing it down to the target.
|
||||
Jakub pointed out that we also want to create valid addresses for the probe_stack_address case, so this patch
|
||||
creates an expand operand and legitimizes it before passing it down to the probe_stack_address expander.
|
||||
|
||||
This patch passes bootstrap and testing on arm-none-linux-gnueabihf and aarch64-none-linux-gnu
|
||||
and ppc64le-redhat-linux on gcc112 in the compile farm.
|
||||
|
||||
PR target/85173
|
||||
* explow.c (emit_stack_probe): Call validize_mem on memory location
|
||||
before passing it to gen_probe_stack. Create address operand and
|
||||
legitimize it for the probe_stack_address case.
|
||||
|
||||
* gcc.target/arm/pr85173.c: New test.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@259266 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
diff --git a/gcc/explow.c b/gcc/explow.c
|
||||
index 9386489..e2253ae 100644
|
||||
--- a/gcc/explow.c
|
||||
+++ b/gcc/explow.c
|
||||
@@ -1549,13 +1549,20 @@ emit_stack_probe (rtx address)
|
||||
{
|
||||
#ifdef HAVE_probe_stack_address
|
||||
if (HAVE_probe_stack_address)
|
||||
- emit_insn (gen_probe_stack_address (address));
|
||||
+ {
|
||||
+ struct expand_operand ops[1];
|
||||
+ insn_code icode = targetm.code_for_probe_stack_address;
|
||||
+ create_address_operand (ops, address);
|
||||
+ maybe_legitimize_operands (icode, 0, 1, ops);
|
||||
+ expand_insn (icode, 1, ops);
|
||||
+ }
|
||||
else
|
||||
#endif
|
||||
{
|
||||
rtx memref = gen_rtx_MEM (word_mode, address);
|
||||
|
||||
MEM_VOLATILE_P (memref) = 1;
|
||||
+ memref = validize_mem (memref);
|
||||
|
||||
/* See if we have an insn to probe the stack. */
|
||||
#ifdef HAVE_probe_stack
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/pr85173.c b/gcc/testsuite/gcc.target/arm/pr85173.c
|
||||
new file mode 100644
|
||||
index 0000000..36105c9
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/arm/pr85173.c
|
||||
@@ -0,0 +1,20 @@
|
||||
+/* PR target/85173. */
|
||||
+
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fstack-clash-protection --param stack-clash-protection-probe-interval=14" } */
|
||||
+/* { dg-require-effective-target arm_thumb2_ok } */
|
||||
+
|
||||
+__attribute__((noinline, noclone)) void
|
||||
+foo (char *p)
|
||||
+{
|
||||
+ asm volatile ("" : : "r" (p) : "memory");
|
||||
+}
|
||||
+
|
||||
+/* Nonconstant alloca, small local frame. */
|
||||
+__attribute__((noinline, noclone)) void
|
||||
+f5 (int x)
|
||||
+{
|
||||
+ char locals[128];
|
||||
+ char *vla = __builtin_alloca (x);
|
||||
+ foo (vla);
|
||||
+}
|
|
@ -0,0 +1,64 @@
|
|||
commit 49033c9c57a415db02ac5d98badf5f53342bca83
|
||||
Author: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu Apr 12 09:14:57 2018 +0000
|
||||
|
||||
IBM Z: Spectre: Prevent thunk cfi to be emitted with -fno-dwarf2-cfi-asm
|
||||
|
||||
The CFI magic we emit as part of the indirect branch thunks in order to
|
||||
have somewhat sane unwind information must not be emitted with
|
||||
-fno-dwarf2-cfi-asm.
|
||||
|
||||
gcc/ChangeLog:
|
||||
|
||||
2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
|
||||
|
||||
* config/s390/s390.c (s390_output_indirect_thunk_function): Check
|
||||
also for flag_dwarf2_cfi_asm.
|
||||
|
||||
gcc/testsuite/ChangeLog:
|
||||
|
||||
2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
|
||||
|
||||
* gcc.target/s390/nobp-no-dwarf2-cfi.c: New test.
|
||||
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@259340 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
diff -Nrup gcc/config/s390/s390.c gcc/config/s390/s390.c
|
||||
--- gcc/config/s390/s390.c 2018-04-18 13:35:43.856279249 -0600
|
||||
+++ gcc/config/s390/s390.c 2018-04-18 13:36:21.037007877 -0600
|
||||
@@ -14091,7 +14091,7 @@ s390_output_indirect_thunk_function (uns
|
||||
|
||||
calls: Instead of caller->thunk the backtrace will be
|
||||
caller->callee->thunk */
|
||||
- if (flag_asynchronous_unwind_tables)
|
||||
+ if (flag_asynchronous_unwind_tables && flag_dwarf2_cfi_asm)
|
||||
{
|
||||
fputs ("\t.cfi_signal_frame\n", asm_out_file);
|
||||
fprintf (asm_out_file, "\t.cfi_return_column %d\n", regno);
|
||||
diff --git gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c
|
||||
new file mode 100644
|
||||
index 0000000..75e32a1
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c
|
||||
@@ -0,0 +1,19 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table -fno-dwarf2-cfi-asm" } */
|
||||
+
|
||||
+/* Make sure that we do not emit .cfi directives when -fno-dwarf2-cfi-asm is being used. */
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/* 1 x main
|
||||
+/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
|
||||
+/* { dg-final { scan-assembler "ex\t" } } */
|
||||
+
|
||||
+/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
|
||||
+/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
|
||||
+/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */
|
||||
+/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
|
|
@ -0,0 +1,414 @@
|
|||
commit 4361c221ff4b53f585a2e8c0ba38956c8132609f
|
||||
Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon Feb 26 15:29:30 2018 +0000
|
||||
|
||||
i386: Update -mfunction-return= for return with pop
|
||||
|
||||
When -mfunction-return= is used, simple_return_pop_internal should pop
|
||||
return address into ECX register, adjust stack by bytes to pop from stack
|
||||
and jump to the return thunk via ECX register.
|
||||
|
||||
Tested on i686 and x86-64.
|
||||
|
||||
PR target/84530
|
||||
* config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
|
||||
the bool argument.
|
||||
(ix86_output_indirect_function_return): New prototype.
|
||||
(ix86_split_simple_return_pop_internal): Likewise.
|
||||
* config/i386/i386.c (indirect_return_via_cx): New.
|
||||
(indirect_return_via_cx_bnd): Likewise.
|
||||
(indirect_thunk_name): Handle return va CX_REG.
|
||||
(output_indirect_thunk_function): Create alias for
|
||||
__x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
|
||||
(ix86_output_indirect_jmp): Remove the bool argument.
|
||||
(ix86_output_indirect_function_return): New function.
|
||||
(ix86_split_simple_return_pop_internal): Likewise.
|
||||
* config/i386/i386.md (*indirect_jump): Don't pass false
|
||||
to ix86_output_indirect_jmp.
|
||||
(*tablejump_1): Likewise.
|
||||
(simple_return_pop_internal): Change it to define_insn_and_split.
|
||||
Call ix86_split_simple_return_pop_internal to split it for
|
||||
-mfunction-return=.
|
||||
(simple_return_indirect_internal): Call
|
||||
ix86_output_indirect_function_return instead of
|
||||
ix86_output_indirect_jmp.
|
||||
|
||||
gcc/testsuite/
|
||||
|
||||
PR target/84530
|
||||
* gcc.target/i386/ret-thunk-22.c: New test.
|
||||
* gcc.target/i386/ret-thunk-23.c: Likewise.
|
||||
* gcc.target/i386/ret-thunk-24.c: Likewise.
|
||||
* gcc.target/i386/ret-thunk-25.c: Likewise.
|
||||
* gcc.target/i386/ret-thunk-26.c: Likewise.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257992 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
|
||||
index 4e4b2100f79..394d4aebf96 100644
|
||||
--- a/gcc/config/i386/i386-protos.h
|
||||
+++ b/gcc/config/i386/i386-protos.h
|
||||
@@ -306,8 +306,10 @@ extern enum attr_cpu ix86_schedule;
|
||||
#endif
|
||||
|
||||
extern const char * ix86_output_call_insn (rtx insn, rtx call_op);
|
||||
-extern const char * ix86_output_indirect_jmp (rtx call_op, bool ret_p);
|
||||
+extern const char * ix86_output_indirect_jmp (rtx call_op);
|
||||
extern const char * ix86_output_function_return (bool long_p);
|
||||
+extern const char * ix86_output_indirect_function_return (rtx ret_op);
|
||||
+extern void ix86_split_simple_return_pop_internal (rtx);
|
||||
|
||||
#ifdef RTX_CODE
|
||||
/* Target data for multipass lookahead scheduling.
|
||||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index c25d26ca826..a8238a001ee 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -8777,6 +8777,9 @@ static bool indirect_thunk_needed = false;
|
||||
by call and return thunks functions. */
|
||||
static int indirect_thunks_used;
|
||||
|
||||
+/* True if return thunk function via CX is needed. */
|
||||
+static bool indirect_return_via_cx;
|
||||
+
|
||||
#ifndef INDIRECT_LABEL
|
||||
# define INDIRECT_LABEL "LIND"
|
||||
#endif
|
||||
@@ -8786,26 +8789,29 @@ static int indirect_thunks_used;
|
||||
static void
|
||||
indirect_thunk_name (char name[32], int regno, bool ret_p)
|
||||
{
|
||||
- if (regno >= 0 && ret_p)
|
||||
+ if (regno != INVALID_REGNUM && regno != CX_REG && ret_p)
|
||||
gcc_unreachable ();
|
||||
|
||||
if (USE_HIDDEN_LINKONCE)
|
||||
{
|
||||
- if (regno >= 0)
|
||||
+ const char *prefix;
|
||||
+
|
||||
+ prefix = "";
|
||||
+
|
||||
+ const char *ret = ret_p ? "return" : "indirect";
|
||||
+
|
||||
+ if (regno != INVALID_REGNUM)
|
||||
{
|
||||
const char *reg_prefix;
|
||||
if (LEGACY_INT_REGNO_P (regno))
|
||||
reg_prefix = TARGET_64BIT ? "r" : "e";
|
||||
else
|
||||
reg_prefix = "";
|
||||
- sprintf (name, "__x86_indirect_thunk_%s%s",
|
||||
- reg_prefix, reg_names[regno]);
|
||||
+ sprintf (name, "__x86_%s_thunk%s_%s%s",
|
||||
+ ret, prefix, reg_prefix, reg_names[regno]);
|
||||
}
|
||||
else
|
||||
- {
|
||||
- const char *ret = ret_p ? "return" : "indirect";
|
||||
- sprintf (name, "__x86_%s_thunk", ret);
|
||||
- }
|
||||
+ sprintf (name, "__x86_%s_thunk%s", ret, prefix);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -8947,9 +8953,18 @@ output_indirect_thunk_function (int regno)
|
||||
ASM_OUTPUT_LABEL (asm_out_file, name);
|
||||
}
|
||||
|
||||
- if (regno < 0)
|
||||
+ /* Create alias for __x86_return_thunk or
|
||||
+ __x86_return_thunk_ecx. */
|
||||
+ bool need_alias;
|
||||
+ if (regno == INVALID_REGNUM)
|
||||
+ need_alias = true;
|
||||
+ else if (regno == CX_REG)
|
||||
+ need_alias = indirect_return_via_cx;
|
||||
+ else
|
||||
+ need_alias = false;
|
||||
+
|
||||
+ if (need_alias)
|
||||
{
|
||||
- /* Create alias for __x86.return_thunk/__x86.return_thunk_bnd. */
|
||||
char alias[32];
|
||||
|
||||
indirect_thunk_name (alias, regno, true);
|
||||
@@ -24704,21 +24719,21 @@ ix86_output_indirect_branch (rtx call_op, const char *xasm,
|
||||
else
|
||||
ix86_output_indirect_branch_via_push (call_op, xasm, sibcall_p);
|
||||
}
|
||||
+
|
||||
/* Output indirect jump. CALL_OP is the jump target. Jump is a
|
||||
function return if RET_P is true. */
|
||||
|
||||
const char *
|
||||
-ix86_output_indirect_jmp (rtx call_op, bool ret_p)
|
||||
+ix86_output_indirect_jmp (rtx call_op)
|
||||
{
|
||||
if (cfun->machine->indirect_branch_type != indirect_branch_keep)
|
||||
{
|
||||
struct ix86_frame frame;
|
||||
ix86_compute_frame_layout (&frame);
|
||||
|
||||
- /* We can't have red-zone if this isn't a function return since
|
||||
- "call" in the indirect thunk pushes the return address onto
|
||||
- stack, destroying red-zone. */
|
||||
- if (!ret_p && frame.red_zone_size != 0)
|
||||
+ /* We can't have red-zone since "call" in the indirect thunk
|
||||
+ pushes the return address onto the stack, destroying the red-zone. */
|
||||
+ if (frame.red_zone_size != 0)
|
||||
gcc_unreachable ();
|
||||
|
||||
ix86_output_indirect_branch (call_op, "%0", true);
|
||||
@@ -24759,6 +24774,75 @@ ix86_output_function_return (bool long_p)
|
||||
return "rep%; ret";
|
||||
}
|
||||
|
||||
+/* Output indirect function return. RET_OP is the function return
|
||||
+ target. */
|
||||
+
|
||||
+const char *
|
||||
+ix86_output_indirect_function_return (rtx ret_op)
|
||||
+{
|
||||
+ if (cfun->machine->function_return_type != indirect_branch_keep)
|
||||
+ {
|
||||
+ char thunk_name[32];
|
||||
+ enum indirect_thunk_prefix need_prefix
|
||||
+ = indirect_thunk_need_prefix (current_output_insn);
|
||||
+ unsigned int regno = REGNO (ret_op);
|
||||
+ gcc_assert (regno == CX_REG);
|
||||
+
|
||||
+ if (cfun->machine->function_return_type
|
||||
+ != indirect_branch_thunk_inline)
|
||||
+ {
|
||||
+ bool need_thunk = (cfun->machine->function_return_type
|
||||
+ == indirect_branch_thunk);
|
||||
+ indirect_thunk_name (thunk_name, regno, need_prefix, true);
|
||||
+ if (need_thunk)
|
||||
+ {
|
||||
+ indirect_return_via_cx = true;
|
||||
+ indirect_thunks_used |= 1 << CX_REG;
|
||||
+ }
|
||||
+ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
|
||||
+ }
|
||||
+ else
|
||||
+ output_indirect_thunk (need_prefix, regno);
|
||||
+
|
||||
+ return "";
|
||||
+ }
|
||||
+ else
|
||||
+ return "jmp\t%A0";
|
||||
+}
|
||||
+
|
||||
+/* Split simple return with popping POPC bytes from stack to indirect
|
||||
+ branch with stack adjustment . */
|
||||
+
|
||||
+void
|
||||
+ix86_split_simple_return_pop_internal (rtx popc)
|
||||
+{
|
||||
+ struct machine_function *m = cfun->machine;
|
||||
+ rtx ecx = gen_rtx_REG (SImode, CX_REG);
|
||||
+ rtx insn;
|
||||
+
|
||||
+ /* There is no "pascal" calling convention in any 64bit ABI. */
|
||||
+ gcc_assert (!TARGET_64BIT);
|
||||
+
|
||||
+ insn = emit_insn (gen_pop (ecx));
|
||||
+ m->fs.cfa_offset -= UNITS_PER_WORD;
|
||||
+ m->fs.sp_offset -= UNITS_PER_WORD;
|
||||
+
|
||||
+ rtx x = plus_constant (Pmode, stack_pointer_rtx, UNITS_PER_WORD);
|
||||
+ x = gen_rtx_SET (VOIDmode, stack_pointer_rtx, x);
|
||||
+ add_reg_note (insn, REG_CFA_ADJUST_CFA, x);
|
||||
+ add_reg_note (insn, REG_CFA_REGISTER, gen_rtx_SET (VOIDmode, ecx, pc_rtx));
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+
|
||||
+ x = gen_rtx_PLUS (Pmode, stack_pointer_rtx, popc);
|
||||
+ x = gen_rtx_SET (VOIDmode, stack_pointer_rtx, x);
|
||||
+ insn = emit_insn (x);
|
||||
+ add_reg_note (insn, REG_CFA_ADJUST_CFA, x);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+
|
||||
+ /* Now return address is in ECX. */
|
||||
+ emit_jump_insn (gen_simple_return_indirect_internal (ecx));
|
||||
+}
|
||||
+
|
||||
/* Output the assembly for a call instruction. */
|
||||
|
||||
const char *
|
||||
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
|
||||
index 228f8f6d77a..3320ec233d2 100644
|
||||
--- a/gcc/config/i386/i386.md
|
||||
+++ b/gcc/config/i386/i386.md
|
||||
@@ -11282,7 +11282,7 @@
|
||||
(define_insn "*indirect_jump"
|
||||
[(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw"))]
|
||||
""
|
||||
- "* return ix86_output_indirect_jmp (operands[0], false);"
|
||||
+ "* return ix86_output_indirect_jmp (operands[0]);"
|
||||
[(set (attr "type")
|
||||
(if_then_else (match_test "(cfun->machine->indirect_branch_type
|
||||
!= indirect_branch_keep)")
|
||||
@@ -11336,7 +11336,7 @@
|
||||
[(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw"))
|
||||
(use (label_ref (match_operand 1)))]
|
||||
""
|
||||
- "* return ix86_output_indirect_jmp (operands[0], false);"
|
||||
+ "* return ix86_output_indirect_jmp (operands[0]);"
|
||||
[(set (attr "type")
|
||||
(if_then_else (match_test "(cfun->machine->indirect_branch_type
|
||||
!= indirect_branch_keep)")
|
||||
@@ -11769,11 +11769,14 @@
|
||||
(set_attr "prefix_rep" "1")
|
||||
(set_attr "modrm" "0")])
|
||||
|
||||
-(define_insn "simple_return_pop_internal"
|
||||
+(define_insn_and_split "simple_return_pop_internal"
|
||||
[(simple_return)
|
||||
(use (match_operand:SI 0 "const_int_operand"))]
|
||||
"reload_completed"
|
||||
"ret\t%0"
|
||||
+ "&& cfun->machine->function_return_type != indirect_branch_keep"
|
||||
+ [(const_int 0)]
|
||||
+ "ix86_split_simple_return_pop_internal (operands[0]); DONE;"
|
||||
[(set_attr "length" "3")
|
||||
(set_attr "atom_unit" "jeu")
|
||||
(set_attr "length_immediate" "2")
|
||||
@@ -11783,7 +11786,7 @@
|
||||
[(simple_return)
|
||||
(use (match_operand:SI 0 "register_operand" "r"))]
|
||||
"reload_completed"
|
||||
- "* return ix86_output_indirect_jmp (operands[0], true);"
|
||||
+ "* return ix86_output_indirect_function_return (operands[0]);"
|
||||
[(set (attr "type")
|
||||
(if_then_else (match_test "(cfun->machine->indirect_branch_type
|
||||
!= indirect_branch_keep)")
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-22.c b/gcc/testsuite/gcc.target/i386/ret-thunk-22.c
|
||||
new file mode 100644
|
||||
index 00000000000..89e086de97b
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-22.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* PR target/r84530 */
|
||||
+/* { dg-do compile { target ia32 } } */
|
||||
+/* { dg-options "-O2 -mfunction-return=thunk" } */
|
||||
+
|
||||
+struct s { _Complex unsigned short x; };
|
||||
+struct s gs = { 100 + 200i };
|
||||
+struct s __attribute__((noinline)) foo (void) { return gs; }
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
|
||||
+/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler {\tpause} } } */
|
||||
+/* { dg-final { scan-assembler {\tlfence} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-23.c b/gcc/testsuite/gcc.target/i386/ret-thunk-23.c
|
||||
new file mode 100644
|
||||
index 00000000000..43f0ccaa854
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-23.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* PR target/r84530 */
|
||||
+/* { dg-do compile { target ia32 } } */
|
||||
+/* { dg-options "-O2 -mfunction-return=thunk-extern" } */
|
||||
+
|
||||
+struct s { _Complex unsigned short x; };
|
||||
+struct s gs = { 100 + 200i };
|
||||
+struct s __attribute__((noinline)) foo (void) { return gs; }
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
|
||||
+/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */
|
||||
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler-not {\tpause} } } */
|
||||
+/* { dg-final { scan-assembler-not {\tlfence} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-24.c b/gcc/testsuite/gcc.target/i386/ret-thunk-24.c
|
||||
new file mode 100644
|
||||
index 00000000000..8729e35147e
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-24.c
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* PR target/r84530 */
|
||||
+/* { dg-do compile { target ia32 } } */
|
||||
+/* { dg-options "-O2 -mfunction-return=thunk-inline" } */
|
||||
+
|
||||
+struct s { _Complex unsigned short x; };
|
||||
+struct s gs = { 100 + 200i };
|
||||
+struct s __attribute__((noinline)) foo (void) { return gs; }
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
|
||||
+/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
|
||||
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk_ecx" } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler {\tpause} } } */
|
||||
+/* { dg-final { scan-assembler {\tlfence} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-25.c b/gcc/testsuite/gcc.target/i386/ret-thunk-25.c
|
||||
new file mode 100644
|
||||
index 00000000000..f73553c9a9f
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-25.c
|
||||
@@ -0,0 +1,14 @@
|
||||
+/* PR target/r84530 */
|
||||
+/* { dg-do compile { target ia32 } } */
|
||||
+/* { dg-options "-O2 -mfunction-return=thunk -fno-pic" } */
|
||||
+
|
||||
+struct s { _Complex unsigned short x; };
|
||||
+struct s gs = { 100 + 200i };
|
||||
+struct s __attribute__((noinline)) foo (void) { return gs; }
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */
|
||||
+/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler {\tpause} } } */
|
||||
+/* { dg-final { scan-assembler {\tlfence} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-26.c b/gcc/testsuite/gcc.target/i386/ret-thunk-26.c
|
||||
new file mode 100644
|
||||
index 00000000000..9144e988735
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-26.c
|
||||
@@ -0,0 +1,40 @@
|
||||
+/* PR target/r84530 */
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-Os -mfunction-return=thunk" } */
|
||||
+
|
||||
+struct S { int i; };
|
||||
+__attribute__((const, noinline, noclone))
|
||||
+struct S foo (int x)
|
||||
+{
|
||||
+ struct S s;
|
||||
+ s.i = x;
|
||||
+ return s;
|
||||
+}
|
||||
+
|
||||
+int a[2048], b[2048], c[2048], d[2048];
|
||||
+struct S e[2048];
|
||||
+
|
||||
+__attribute__((noinline, noclone)) void
|
||||
+bar (void)
|
||||
+{
|
||||
+ int i;
|
||||
+ for (i = 0; i < 1024; i++)
|
||||
+ {
|
||||
+ e[i] = foo (i);
|
||||
+ a[i+2] = a[i] + a[i+1];
|
||||
+ b[10] = b[10] + i;
|
||||
+ c[i] = c[2047 - i];
|
||||
+ d[i] = d[i + 1];
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ int i;
|
||||
+ bar ();
|
||||
+ for (i = 0; i < 1024; i++)
|
||||
+ if (e[i].i != i)
|
||||
+ __builtin_abort ();
|
||||
+ return 0;
|
||||
+}
|
|
@ -0,0 +1,175 @@
|
|||
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
|
||||
index a8238a001ee..34f27c597a2 100644
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -8770,13 +8770,16 @@ ix86_setup_frame_addresses (void)
|
||||
labels in call and return thunks. */
|
||||
static int indirectlabelno;
|
||||
|
||||
-/* True if call and return thunk functions are needed. */
|
||||
+/* True if call thunk function is needed. */
|
||||
static bool indirect_thunk_needed = false;
|
||||
|
||||
/* Bit masks of integer registers, which contain branch target, used
|
||||
- by call and return thunks functions. */
|
||||
+ by call thunk functions. */
|
||||
static int indirect_thunks_used;
|
||||
|
||||
+/* True if return thunk function is needed. */
|
||||
+static bool indirect_return_needed = false;
|
||||
+
|
||||
/* True if return thunk function via CX is needed. */
|
||||
static bool indirect_return_via_cx;
|
||||
|
||||
@@ -8899,17 +8902,19 @@ output_indirect_thunk (int regno)
|
||||
}
|
||||
|
||||
/* Output a funtion with a call and return thunk for indirect branch.
|
||||
- If REGNO != -1, the function address is in REGNO. Otherwise, the
|
||||
- function address is on the top of stack. */
|
||||
+ If REGNO != UNVALID_REGNUM,
|
||||
+ the function address is in REGNO. Otherwise, the function address is
|
||||
+ on the top of stack. Thunk is used for function return if RET_P is
|
||||
+ true. */
|
||||
|
||||
static void
|
||||
-output_indirect_thunk_function (int regno)
|
||||
+output_indirect_thunk_function (unsigned int regno, bool ret_p)
|
||||
{
|
||||
char name[32];
|
||||
tree decl;
|
||||
|
||||
/* Create __x86_indirect_thunk. */
|
||||
- indirect_thunk_name (name, regno, false);
|
||||
+ indirect_thunk_name (name, regno, ret_p);
|
||||
decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
|
||||
get_identifier (name),
|
||||
build_function_type_list (void_type_node, NULL_TREE));
|
||||
@@ -8953,45 +8958,6 @@ output_indirect_thunk_function (int regno)
|
||||
ASM_OUTPUT_LABEL (asm_out_file, name);
|
||||
}
|
||||
|
||||
- /* Create alias for __x86_return_thunk or
|
||||
- __x86_return_thunk_ecx. */
|
||||
- bool need_alias;
|
||||
- if (regno == INVALID_REGNUM)
|
||||
- need_alias = true;
|
||||
- else if (regno == CX_REG)
|
||||
- need_alias = indirect_return_via_cx;
|
||||
- else
|
||||
- need_alias = false;
|
||||
-
|
||||
- if (need_alias)
|
||||
- {
|
||||
- char alias[32];
|
||||
-
|
||||
- indirect_thunk_name (alias, regno, true);
|
||||
-#if TARGET_MACHO
|
||||
- if (TARGET_MACHO)
|
||||
- {
|
||||
- fputs ("\t.weak_definition\t", asm_out_file);
|
||||
- assemble_name (asm_out_file, alias);
|
||||
- fputs ("\n\t.private_extern\t", asm_out_file);
|
||||
- assemble_name (asm_out_file, alias);
|
||||
- putc ('\n', asm_out_file);
|
||||
- ASM_OUTPUT_LABEL (asm_out_file, alias);
|
||||
- }
|
||||
-#else
|
||||
- ASM_OUTPUT_DEF (asm_out_file, alias, name);
|
||||
- if (USE_HIDDEN_LINKONCE)
|
||||
- {
|
||||
- fputs ("\t.globl\t", asm_out_file);
|
||||
- assemble_name (asm_out_file, alias);
|
||||
- putc ('\n', asm_out_file);
|
||||
- fputs ("\t.hidden\t", asm_out_file);
|
||||
- assemble_name (asm_out_file, alias);
|
||||
- putc ('\n', asm_out_file);
|
||||
- }
|
||||
-#endif
|
||||
- }
|
||||
-
|
||||
DECL_INITIAL (decl) = make_node (BLOCK);
|
||||
current_function_decl = decl;
|
||||
allocate_struct_function (decl, false);
|
||||
@@ -9038,14 +9004,19 @@ ix86_code_end (void)
|
||||
rtx xops[2];
|
||||
int regno;
|
||||
|
||||
+ if (indirect_return_needed)
|
||||
+ output_indirect_thunk_function (INVALID_REGNUM, true);
|
||||
+ if (indirect_return_via_cx)
|
||||
+ output_indirect_thunk_function (CX_REG, true);
|
||||
if (indirect_thunk_needed)
|
||||
- output_indirect_thunk_function (-1);
|
||||
+ output_indirect_thunk_function (INVALID_REGNUM, false);
|
||||
|
||||
for (regno = FIRST_REX_INT_REG; regno <= LAST_REX_INT_REG; regno++)
|
||||
{
|
||||
int i = regno - FIRST_REX_INT_REG + LAST_INT_REG + 1;
|
||||
if ((indirect_thunks_used & (1 << i)))
|
||||
- output_indirect_thunk_function (regno);
|
||||
+ output_indirect_thunk_function (regno, false);
|
||||
+
|
||||
}
|
||||
|
||||
for (regno = AX_REG; regno <= SP_REG; regno++)
|
||||
@@ -9054,7 +9025,7 @@ ix86_code_end (void)
|
||||
tree decl;
|
||||
|
||||
if ((indirect_thunks_used & (1 << regno)))
|
||||
- output_indirect_thunk_function (regno);
|
||||
+ output_indirect_thunk_function (regno, false);
|
||||
|
||||
if (!(pic_labels_used & (1 << regno)))
|
||||
continue;
|
||||
@@ -24758,8 +24729,8 @@ ix86_output_function_return (bool long_p)
|
||||
{
|
||||
bool need_thunk = (cfun->machine->function_return_type
|
||||
== indirect_branch_thunk);
|
||||
- indirect_thunk_name (thunk_name, -1, true);
|
||||
- indirect_thunk_needed |= need_thunk;
|
||||
+ indirect_thunk_name (thunk_name, INVALID_REGNUM, true);
|
||||
+ indirect_return_needed |= need_thunk;
|
||||
fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
|
||||
}
|
||||
else
|
||||
@@ -24783,8 +24754,6 @@ ix86_output_indirect_function_return (rtx ret_op)
|
||||
if (cfun->machine->function_return_type != indirect_branch_keep)
|
||||
{
|
||||
char thunk_name[32];
|
||||
- enum indirect_thunk_prefix need_prefix
|
||||
- = indirect_thunk_need_prefix (current_output_insn);
|
||||
unsigned int regno = REGNO (ret_op);
|
||||
gcc_assert (regno == CX_REG);
|
||||
|
||||
@@ -24793,7 +24762,7 @@ ix86_output_indirect_function_return (rtx ret_op)
|
||||
{
|
||||
bool need_thunk = (cfun->machine->function_return_type
|
||||
== indirect_branch_thunk);
|
||||
- indirect_thunk_name (thunk_name, regno, need_prefix, true);
|
||||
+ indirect_thunk_name (thunk_name, regno, true);
|
||||
if (need_thunk)
|
||||
{
|
||||
indirect_return_via_cx = true;
|
||||
@@ -24802,7 +24771,7 @@ ix86_output_indirect_function_return (rtx ret_op)
|
||||
fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
|
||||
}
|
||||
else
|
||||
- output_indirect_thunk (need_prefix, regno);
|
||||
+ output_indirect_thunk (regno);
|
||||
|
||||
return "";
|
||||
}
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
||||
index d1db41cc128..a605c26c46f 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
||||
@@ -13,7 +13,7 @@ foo (void)
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" } } */
|
||||
+/* { dg-final { scan-assembler "__x86_return_thunk:" } } */
|
||||
/* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */
|
||||
/* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */
|
||||
/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
|
@ -0,0 +1,516 @@
|
|||
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md
|
||||
index 43faabb7e87..328a90f45d1 100644
|
||||
--- a/gcc/config/i386/constraints.md
|
||||
+++ b/gcc/config/i386/constraints.md
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
(define_constraint "w"
|
||||
"@internal Call memory operand."
|
||||
- (and (not (match_test "ix86_indirect_branch_register"))
|
||||
+ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
||||
(not (match_test "TARGET_X32"))
|
||||
(match_operand 0 "memory_operand")))
|
||||
|
||||
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
|
||||
index 8ff702615b6..95206478001 100644
|
||||
--- a/gcc/config/i386/i386.h
|
||||
+++ b/gcc/config/i386/i386.h
|
||||
@@ -2413,6 +2413,10 @@ extern void debug_dispatch_window (int);
|
||||
#define TARGET_RECIP_VEC_DIV ((recip_mask & RECIP_MASK_VEC_DIV) != 0)
|
||||
#define TARGET_RECIP_VEC_SQRT ((recip_mask & RECIP_MASK_VEC_SQRT) != 0)
|
||||
|
||||
+#define TARGET_INDIRECT_BRANCH_REGISTER \
|
||||
+ (ix86_indirect_branch_register \
|
||||
+ || cfun->machine->indirect_branch_type != indirect_branch_keep)
|
||||
+
|
||||
#define IX86_HLE_ACQUIRE (1 << 16)
|
||||
#define IX86_HLE_RELEASE (1 << 17)
|
||||
|
||||
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
|
||||
index 3320ec233d2..7a83d079bfc 100644
|
||||
--- a/gcc/config/i386/i386.md
|
||||
+++ b/gcc/config/i386/i386.md
|
||||
@@ -11274,7 +11274,7 @@
|
||||
[(set (pc) (match_operand 0 "indirect_branch_operand"))]
|
||||
""
|
||||
{
|
||||
- if (TARGET_X32 || ix86_indirect_branch_register)
|
||||
+ if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER)
|
||||
operands[0] = convert_memory_address (word_mode, operands[0]);
|
||||
cfun->machine->has_local_indirect_jump = true;
|
||||
})
|
||||
@@ -11327,7 +11327,7 @@
|
||||
OPTAB_DIRECT);
|
||||
}
|
||||
|
||||
- if (TARGET_X32 || ix86_indirect_branch_register)
|
||||
+ if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER)
|
||||
operands[0] = convert_memory_address (word_mode, operands[0]);
|
||||
cfun->machine->has_local_indirect_jump = true;
|
||||
})
|
||||
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md
|
||||
index 6c7a593084c..f6cf50ad6f5 100644
|
||||
--- a/gcc/config/i386/predicates.md
|
||||
+++ b/gcc/config/i386/predicates.md
|
||||
@@ -540,7 +540,7 @@
|
||||
;; Test for a valid operand for indirect branch.
|
||||
(define_predicate "indirect_branch_operand"
|
||||
(ior (match_operand 0 "register_operand")
|
||||
- (and (not (match_test "ix86_indirect_branch_register"))
|
||||
+ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
||||
(not (match_test "TARGET_X32"))
|
||||
(match_operand 0 "memory_operand"))))
|
||||
|
||||
@@ -550,7 +550,7 @@
|
||||
(ior (match_test "constant_call_address_operand
|
||||
(op, mode == VOIDmode ? mode : Pmode)")
|
||||
(match_operand 0 "call_register_no_elim_operand")
|
||||
- (and (not (match_test "ix86_indirect_branch_register"))
|
||||
+ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
|
||||
(and (not (match_test "TARGET_X32"))
|
||||
(match_operand 0 "memory_operand")))))
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
|
||||
index 321db770c35..135bc73b9ce 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
|
||||
@@ -14,7 +14,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
|
||||
index d58451660f8..867df67143b 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
|
||||
@@ -14,7 +14,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
|
||||
index 9e24a385387..2c7fb52b59d 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
|
||||
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
|
||||
index 127b5d94523..0d3f895009d 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
|
||||
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
|
||||
index 17c2d0faf88..3c72036dbaf 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
|
||||
@@ -35,9 +35,8 @@ bar (int i)
|
||||
}
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
|
||||
index cd7e8d78199..e20816781f9 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
|
||||
@@ -17,7 +17,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
|
||||
index 4dbd7a5e5d3..0f30d74ee37 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
|
||||
@@ -15,7 +15,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
|
||||
index 4aeec1833cd..89a2bac8403 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
|
||||
@@ -14,10 +14,9 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
/* { dg-final { scan-assembler {\tlfence} } } */
|
||||
/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
|
||||
index ac0e5999f63..3eb83c3779a 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
|
||||
@@ -13,10 +13,9 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
/* { dg-final { scan-assembler {\tlfence} } } */
|
||||
/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
|
||||
index 573cf1ef09e..0098dd1133d 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
|
||||
@@ -14,9 +14,8 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
|
||||
index b2b37fc6e2e..ece8de15a4b 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
|
||||
@@ -13,9 +13,8 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
|
||||
index 4a43e199931..d53fc887dcc 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
|
||||
@@ -36,9 +36,8 @@ bar (int i)
|
||||
}
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
|
||||
index 72de88e04aa..1f78b07f84a 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
|
||||
@@ -14,7 +14,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
|
||||
index d4137b38a1e..5397a5874aa 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
|
||||
@@ -14,7 +14,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
|
||||
index d9964c25bbd..385626850a2 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
|
||||
@@ -12,9 +12,8 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
|
||||
index d4dca4dc5fe..1ae49b137ca 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
|
||||
@@ -12,9 +12,7 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
|
||||
index aece9383697..2b9a33e93dc 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
|
||||
@@ -35,9 +35,8 @@ bar (int i)
|
||||
}
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
|
||||
index e3cea3fa3c2..dbda34ab038 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
|
||||
@@ -14,7 +14,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
|
||||
index 62229969c90..810824666ef 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
|
||||
@@ -14,7 +14,7 @@ male_indirect_jump (long offset)
|
||||
/* Our gcc-4.8 based compiler is not as aggressive at sibcalls
|
||||
where the target is in a MEM. Thus we have to scan for different
|
||||
patterns here than in newer compilers. */
|
||||
-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
|
||||
index 2eef6f35a75..4a63ebed8ab 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
|
||||
@@ -12,7 +12,7 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
|
||||
index e825a10f14c..a395ffca018 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
|
||||
@@ -12,7 +12,7 @@ male_indirect_jump (long offset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
|
||||
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
|
||||
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
|
||||
index c67066cf197..ea009245a58 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
|
||||
@@ -35,8 +35,8 @@ bar (int i)
|
||||
}
|
||||
}
|
||||
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler {\tpause} } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
|
||||
index e6fea84a4d9..af9023af613 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
|
||||
@@ -15,9 +15,6 @@ foo (void)
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
|
||||
/* { dg-final { scan-assembler-times {\tpause} 2 } } */
|
||||
/* { dg-final { scan-assembler-times {\tlfence} 2 } } */
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
|
||||
index e239ec4542f..ba467c59b36 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
|
||||
@@ -15,9 +15,6 @@ foo (void)
|
||||
/* { dg-final { scan-assembler-times {\tlfence} 1 } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-12.c b/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
|
||||
index fa3181303c9..43e57cac2c3 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
|
||||
@@ -15,8 +15,6 @@ foo (void)
|
||||
/* { dg-final { scan-assembler-times {\tlfence} 1 } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
|
||||
index fd5b41fdd3f..55f156c4376 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
|
||||
@@ -14,9 +14,8 @@ foo (void)
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */
|
||||
/* { dg-final { scan-assembler-times {\tpause} 2 } } */
|
||||
/* { dg-final { scan-assembler-times {\tlfence} 2 } } */
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */
|
||||
/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */
|
||||
-/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
|
||||
index d606373ead1..1c790436a53 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
|
||||
@@ -16,7 +16,6 @@ foo (void)
|
||||
/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
|
||||
index 75e45e226b8..58aba319cba 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
|
||||
@@ -16,7 +16,6 @@ foo (void)
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler-times {\tpause} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {\tlfence} 1 } } */
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
||||
index a605c26c46f..eee230ca2f6 100644
|
||||
--- a/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
||||
+++ b/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
|
||||
@@ -14,11 +14,8 @@ foo (void)
|
||||
/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
|
||||
/* { dg-final { scan-assembler "__x86_return_thunk:" } } */
|
||||
-/* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
|
||||
-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times {\tpause} 2 { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-times {\tlfence} 2 { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
|
||||
-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
|
||||
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */
|
||||
+/* { dg-final { scan-assembler-times {\tpause} 2 } } */
|
||||
+/* { dg-final { scan-assembler-times {\tlfence} 2 } } */
|
||||
+/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
|
||||
+/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
|
|
@ -0,0 +1,162 @@
|
|||
* cif-code.def: Add NEVER_EXECUTED.
|
||||
* ipa-inline-analysis.c (reset_inline_summary,
|
||||
compute_inline_parameters, estimate_calls_size_and_time,
|
||||
inline_update_overall_summary): Track number of calls.
|
||||
(never_executed_edge_p): New predicate.
|
||||
* ipa-inline.c (want_inline_self_recursive_call_p): do not inline
|
||||
recursively for calls that are not going to be executed.
|
||||
(inline_small_functions): Do not inline never exeucted edge if callee
|
||||
has too many calls.
|
||||
* ipa-inline.h (inline_summary): Add num calls.
|
||||
(never_executed_edge_p): New.
|
||||
|
||||
--- gcc/cif-code.def (revision 257016)
|
||||
+++ gcc/cif-code.def (working copy)
|
||||
@@ -103,3 +103,6 @@ DEFCIFCODE(TARGET_OPTION_MISMATCH, N_("t
|
||||
|
||||
/* We can't inline because of mismatched optimization levels. */
|
||||
DEFCIFCODE(OPTIMIZATION_MISMATCH, N_("optimization level attribute mismatch"))
|
||||
+
|
||||
+/* We know that the call will be optimized out. */
|
||||
+DEFCIFCODE(NEVER_EXECUTED, N_("never executed"))
|
||||
--- gcc/ipa-inline-analysis.c (revision 257016)
|
||||
+++ gcc/ipa-inline-analysis.c (working copy)
|
||||
@@ -990,6 +990,7 @@ reset_inline_summary (struct cgraph_node
|
||||
info->stack_frame_offset = 0;
|
||||
info->size = 0;
|
||||
info->time = 0;
|
||||
+ info->num_calls = 0;
|
||||
info->growth = 0;
|
||||
info->scc_no = 0;
|
||||
if (info->loop_iterations)
|
||||
@@ -2704,6 +2705,7 @@ compute_inline_parameters (struct cgraph
|
||||
/* Inlining characteristics are maintained by the cgraph_mark_inline. */
|
||||
info->time = info->self_time;
|
||||
info->size = info->self_size;
|
||||
+ info->num_calls = 0;
|
||||
info->stack_frame_offset = 0;
|
||||
info->estimated_stack_size = info->estimated_self_stack_size;
|
||||
#ifdef ENABLE_CHECKING
|
||||
@@ -2816,7 +2818,7 @@ estimate_edge_size_and_time (struct cgra
|
||||
|
||||
static void
|
||||
estimate_calls_size_and_time (struct cgraph_node *node, int *size, int *time,
|
||||
- inline_hints *hints,
|
||||
+ inline_hints *hints, int *num,
|
||||
clause_t possible_truths,
|
||||
vec<tree> known_vals,
|
||||
vec<tree> known_binfos,
|
||||
@@ -2826,6 +2828,7 @@ estimate_calls_size_and_time (struct cgr
|
||||
for (e = node->callees; e; e = e->next_callee)
|
||||
{
|
||||
struct inline_edge_summary *es = inline_edge_summary (e);
|
||||
+ (*num)++;
|
||||
if (!es->predicate
|
||||
|| evaluate_predicate (es->predicate, possible_truths))
|
||||
{
|
||||
@@ -2838,7 +2841,7 @@ estimate_calls_size_and_time (struct cgr
|
||||
known_aggs, hints);
|
||||
}
|
||||
else
|
||||
- estimate_calls_size_and_time (e->callee, size, time, hints,
|
||||
+ estimate_calls_size_and_time (e->callee, size, time, hints, num,
|
||||
possible_truths,
|
||||
known_vals, known_binfos,
|
||||
known_aggs);
|
||||
@@ -2846,6 +2849,7 @@ estimate_calls_size_and_time (struct cgr
|
||||
}
|
||||
for (e = node->indirect_calls; e; e = e->next_callee)
|
||||
{
|
||||
+ (*num)++;
|
||||
struct inline_edge_summary *es = inline_edge_summary (e);
|
||||
if (!es->predicate
|
||||
|| evaluate_predicate (es->predicate, possible_truths))
|
||||
@@ -2936,7 +2940,8 @@ estimate_node_size_and_time (struct cgra
|
||||
if (DECL_DECLARED_INLINE_P (node->symbol.decl))
|
||||
hints |= INLINE_HINT_declared_inline;
|
||||
|
||||
- estimate_calls_size_and_time (node, &size, &time, &hints, possible_truths,
|
||||
+ int num = 0;
|
||||
+ estimate_calls_size_and_time (node, &size, &time, &hints, &num, possible_truths,
|
||||
known_vals, known_binfos, known_aggs);
|
||||
gcc_checking_assert (size >= 0);
|
||||
gcc_checking_assert (time >= 0);
|
||||
@@ -3369,13 +3374,14 @@ inline_update_overall_summary (struct cg
|
||||
|
||||
info->size = 0;
|
||||
info->time = 0;
|
||||
+ info->num_calls = 0;
|
||||
for (i = 0; vec_safe_iterate (info->entry, i, &e); i++)
|
||||
{
|
||||
info->size += e->size, info->time += e->time;
|
||||
if (info->time > MAX_TIME * INLINE_TIME_SCALE)
|
||||
info->time = MAX_TIME * INLINE_TIME_SCALE;
|
||||
}
|
||||
- estimate_calls_size_and_time (node, &info->size, &info->time, NULL,
|
||||
+ estimate_calls_size_and_time (node, &info->size, &info->time, NULL, &info->num_calls,
|
||||
~(clause_t) (1 << predicate_false_condition),
|
||||
vNULL, vNULL, vNULL);
|
||||
info->time = (info->time + INLINE_TIME_SCALE / 2) / INLINE_TIME_SCALE;
|
||||
@@ -3528,6 +3534,14 @@ do_estimate_edge_hints (struct cgraph_ed
|
||||
return hints;
|
||||
}
|
||||
|
||||
+/* Return true if edge is never executed. */
|
||||
+bool
|
||||
+never_executed_edge_p (struct cgraph_edge *e)
|
||||
+{
|
||||
+ struct inline_edge_summary *es = inline_edge_summary (e);
|
||||
+ return es->predicate && false_predicate_p (es->predicate);
|
||||
+}
|
||||
+
|
||||
|
||||
/* Estimate self time of the function NODE after inlining EDGE. */
|
||||
|
||||
--- gcc/ipa-inline.c (revision 257016)
|
||||
+++ gcc/ipa-inline.c (working copy)
|
||||
@@ -656,6 +656,11 @@ want_inline_self_recursive_call_p (struc
|
||||
reason = "--param max-inline-recursive-depth exceeded.";
|
||||
want_inline = false;
|
||||
}
|
||||
+ else if (never_executed_edge_p (edge))
|
||||
+ {
|
||||
+ reason = "edge is never executed.";
|
||||
+ want_inline = false;
|
||||
+ }
|
||||
|
||||
if (outer_node->global.inlined_to)
|
||||
caller_freq = outer_node->callers->frequency;
|
||||
@@ -1597,6 +1602,14 @@ inline_small_functions (void)
|
||||
outer_node = where, depth++;
|
||||
where = where->callers->caller;
|
||||
}
|
||||
+ if (never_executed_edge_p (edge)
|
||||
+ && inline_summary (edge->callee)->num_calls > 30)
|
||||
+ {
|
||||
+ if (dump_file)
|
||||
+ fprintf (dump_file, "Never executed edge\n");
|
||||
+ edge->inline_failed = CIF_NEVER_EXECUTED;
|
||||
+ continue;
|
||||
+ }
|
||||
if (outer_node
|
||||
&& !want_inline_self_recursive_call_p (edge, outer_node,
|
||||
true, depth))
|
||||
--- gcc/ipa-inline.h (revision 257016)
|
||||
+++ gcc/ipa-inline.h (working copy)
|
||||
@@ -132,6 +132,7 @@ struct GTY(()) inline_summary
|
||||
/* Estimated size of the function after inlining. */
|
||||
int time;
|
||||
int size;
|
||||
+ int num_calls;
|
||||
|
||||
/* Conditional size/time information. The summaries are being
|
||||
merged during inlining. */
|
||||
@@ -226,6 +227,7 @@ inline_hints do_estimate_edge_hints (str
|
||||
void initialize_growth_caches (void);
|
||||
void free_growth_caches (void);
|
||||
void compute_inline_parameters (struct cgraph_node *, bool);
|
||||
+bool never_executed_edge_p (struct cgraph_edge *);
|
||||
|
||||
/* In ipa-inline-transform.c */
|
||||
bool inline_call (struct cgraph_edge *, bool, vec<cgraph_edge_p> *, int *, bool);
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
2015-09-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
* optabs.c (expand_binop): Don't create a broadcast vector with a
|
||||
source element wider than the inner mode.
|
||||
|
||||
* gcc.target/powerpc/vec-shift.c: New test.
|
||||
|
||||
--- gcc/optabs.c
|
||||
+++ gcc/optabs.c
|
||||
@@ -1608,6 +1608,15 @@ expand_binop (machine_mode mode, optab binoptab, rtx op0, rtx op1,
|
||||
|
||||
if (otheroptab && optab_handler (otheroptab, mode) != CODE_FOR_nothing)
|
||||
{
|
||||
+ /* The scalar may have been extended to be too wide. Truncate
|
||||
+ it back to the proper size to fit in the broadcast vector. */
|
||||
+ machine_mode inner_mode = GET_MODE_INNER (mode);
|
||||
+ if (!CONST_INT_P (op1)
|
||||
+ && (GET_MODE_BITSIZE (inner_mode)
|
||||
+ < GET_MODE_BITSIZE (GET_MODE (op1))))
|
||||
+ op1 = force_reg (inner_mode,
|
||||
+ simplify_gen_unary (TRUNCATE, inner_mode, op1,
|
||||
+ GET_MODE (op1)));
|
||||
rtx vop1 = expand_vector_broadcast (mode, op1);
|
||||
if (vop1)
|
||||
{
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.target/powerpc/vec-shift.c
|
||||
@@ -0,0 +1,20 @@
|
||||
+/* { dg-do compile { target { powerpc*-*-* } } } */
|
||||
+/* { dg-require-effective-target powerpc_altivec_ok } */
|
||||
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
|
||||
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
|
||||
+/* { dg-options "-mcpu=power7 -O2" } */
|
||||
+
|
||||
+/* This used to ICE. During gimplification, "i" is widened to an unsigned
|
||||
+ int. We used to fail at expand time as we tried to cram an SImode item
|
||||
+ into a QImode memory slot. This has been fixed to properly truncate the
|
||||
+ shift amount when splatting it into a vector. */
|
||||
+
|
||||
+typedef unsigned char v16ui __attribute__((vector_size(16)));
|
||||
+
|
||||
+v16ui vslb(v16ui v, unsigned char i)
|
||||
+{
|
||||
+ return v << i;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler "vspltb" } } */
|
||||
+/* { dg-final { scan-assembler "vslb" } } */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,263 @@
|
|||
2017-06-28 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
|
||||
|
||||
* config/s390/predicates.md: Use s390_rel_address_ok_p.
|
||||
* config/s390/s390-protos.h: Add prototype of
|
||||
s390_rel_address_ok_p.
|
||||
* config/s390/s390.c (s390_got_symbol): New function.
|
||||
(s390_rel_address_ok_p): New function.
|
||||
(legitimize_pic_address): Use s390_rel_address_ok_p.
|
||||
(s390_load_got): Use s390_got_symbol.
|
||||
(s390_option_override): Issue error if
|
||||
-mno-pic-data-is-text-relative is used without -fpic/-fPIC.
|
||||
* config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
|
||||
New macro.
|
||||
* config/s390/s390.opt: New option mpic-data-is-text-relative.
|
||||
|
||||
--- gcc/config/s390/predicates.md 2013-08-14 07:55:12.000000000 -0400
|
||||
+++ gcc/config/s390/predicates.md 2018-04-09 21:36:49.428209951 -0400
|
||||
@@ -116,7 +116,7 @@
|
||||
if (GET_CODE (op) == SYMBOL_REF)
|
||||
return (!SYMBOL_REF_ALIGN1_P (op)
|
||||
&& SYMBOL_REF_TLS_MODEL (op) == 0
|
||||
- && (!flag_pic || SYMBOL_REF_LOCAL_P (op)));
|
||||
+ && s390_rel_address_ok_p (op));
|
||||
|
||||
/* Everything else must have a CONST, so strip it. */
|
||||
if (GET_CODE (op) != CONST)
|
||||
@@ -141,7 +141,7 @@
|
||||
if (GET_CODE (op) == SYMBOL_REF)
|
||||
return ((SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1) == 0
|
||||
&& SYMBOL_REF_TLS_MODEL (op) == 0
|
||||
- && (!flag_pic || SYMBOL_REF_LOCAL_P (op)));
|
||||
+ && s390_rel_address_ok_p (op));
|
||||
|
||||
/* Now we must have a @GOTENT offset or @PLT stub
|
||||
or an @INDNTPOFF TLS offset. */
|
||||
--- gcc/config/s390/s390.c 2015-06-18 10:33:04.000000000 -0400
|
||||
+++ gcc/config/s390/s390.c 2018-04-09 21:32:43.489851529 -0400
|
||||
@@ -491,6 +491,23 @@ s390_label_align (rtx label)
|
||||
return align_labels_log;
|
||||
}
|
||||
|
||||
+static GTY(()) rtx got_symbol;
|
||||
+
|
||||
+/* Return the GOT table symbol. The symbol will be created when the
|
||||
+ function is invoked for the first time. */
|
||||
+
|
||||
+static rtx
|
||||
+s390_got_symbol (void)
|
||||
+{
|
||||
+ if (!got_symbol)
|
||||
+ {
|
||||
+ got_symbol = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
|
||||
+ SYMBOL_REF_FLAGS (got_symbol) = SYMBOL_FLAG_LOCAL;
|
||||
+ }
|
||||
+
|
||||
+ return got_symbol;
|
||||
+}
|
||||
+
|
||||
static enum machine_mode
|
||||
s390_libgcc_cmp_return_mode (void)
|
||||
{
|
||||
@@ -1863,6 +1880,9 @@ s390_option_override (void)
|
||||
if (flag_prefetch_loop_arrays < 0 && HAVE_prefetch && optimize >= 3)
|
||||
flag_prefetch_loop_arrays = 1;
|
||||
|
||||
+ if (!s390_pic_data_is_text_relative && !flag_pic)
|
||||
+ error ("-mno-pic-data-is-text-relative cannot be used without -fpic/-fPIC");
|
||||
+
|
||||
/* Use the alternative scheduling-pressure algorithm by default. */
|
||||
maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2,
|
||||
global_options.x_param_values,
|
||||
@@ -3557,6 +3577,26 @@ s390_load_address (rtx dst, rtx src)
|
||||
emit_insn (gen_force_la_31 (dst, src));
|
||||
}
|
||||
|
||||
+/* Return true if it ok to use SYMBOL_REF in a relative address. */
|
||||
+
|
||||
+bool
|
||||
+s390_rel_address_ok_p (rtx symbol_ref)
|
||||
+{
|
||||
+ tree decl;
|
||||
+
|
||||
+ if (symbol_ref == s390_got_symbol () || CONSTANT_POOL_ADDRESS_P (symbol_ref))
|
||||
+ return true;
|
||||
+
|
||||
+ decl = SYMBOL_REF_DECL (symbol_ref);
|
||||
+
|
||||
+ if (!flag_pic || SYMBOL_REF_LOCAL_P (symbol_ref))
|
||||
+ return (s390_pic_data_is_text_relative
|
||||
+ || (decl
|
||||
+ && TREE_CODE (decl) == FUNCTION_DECL));
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
/* Return a legitimate reference for ORIG (an address) using the
|
||||
register REG. If REG is 0, a new pseudo is generated.
|
||||
|
||||
@@ -3594,7 +3634,7 @@ legitimize_pic_address (rtx orig, rtx re
|
||||
}
|
||||
|
||||
if ((GET_CODE (addr) == LABEL_REF
|
||||
- || (GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_LOCAL_P (addr))
|
||||
+ || (GET_CODE (addr) == SYMBOL_REF && s390_rel_address_ok_p (addr))
|
||||
|| (GET_CODE (addr) == UNSPEC &&
|
||||
(XINT (addr, 1) == UNSPEC_GOTENT
|
||||
|| (TARGET_CPU_ZARCH && XINT (addr, 1) == UNSPEC_PLT))))
|
||||
@@ -8545,7 +8585,6 @@ restore_gprs (rtx base, int offset, int
|
||||
|
||||
/* Return insn sequence to load the GOT register. */
|
||||
|
||||
-static GTY(()) rtx got_symbol;
|
||||
rtx
|
||||
s390_load_got (void)
|
||||
{
|
||||
@@ -8557,23 +8596,17 @@ s390_load_got (void)
|
||||
aren't usable. */
|
||||
rtx got_rtx = gen_rtx_REG (Pmode, 12);
|
||||
|
||||
- if (!got_symbol)
|
||||
- {
|
||||
- got_symbol = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
|
||||
- SYMBOL_REF_FLAGS (got_symbol) = SYMBOL_FLAG_LOCAL;
|
||||
- }
|
||||
-
|
||||
start_sequence ();
|
||||
|
||||
if (TARGET_CPU_ZARCH)
|
||||
{
|
||||
- emit_move_insn (got_rtx, got_symbol);
|
||||
+ emit_move_insn (got_rtx, s390_got_symbol ());
|
||||
}
|
||||
else
|
||||
{
|
||||
rtx offset;
|
||||
|
||||
- offset = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, got_symbol),
|
||||
+ offset = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, s390_got_symbol ()),
|
||||
UNSPEC_LTREL_OFFSET);
|
||||
offset = gen_rtx_CONST (Pmode, offset);
|
||||
offset = force_const_mem (Pmode, offset);
|
||||
--- gcc/config/s390/s390.h 2014-01-14 10:37:03.000000000 -0500
|
||||
+++ gcc/config/s390/s390.h 2018-04-09 21:21:28.076858052 -0400
|
||||
@@ -814,6 +814,10 @@ do { \
|
||||
|
||||
#define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X)
|
||||
|
||||
+#ifndef TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE
|
||||
+#define TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE 1
|
||||
+#endif
|
||||
+
|
||||
|
||||
/* Assembler file format. */
|
||||
|
||||
--- gcc/config/s390/s390.opt 2015-06-18 10:33:05.000000000 -0400
|
||||
+++ gcc/config/s390/s390.opt 2018-04-09 21:28:18.842465842 -0400
|
||||
@@ -158,6 +158,10 @@ mzarch
|
||||
Target Report RejectNegative Negative(mesa) Mask(ZARCH)
|
||||
z/Architecture
|
||||
|
||||
+mpic-data-is-text-relative
|
||||
+Target Report Var(s390_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
|
||||
+Assume data segments are relative to text segment.
|
||||
+
|
||||
mbranch-cost=
|
||||
Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1)
|
||||
Set the branch costs for conditional branch instructions. Reasonable
|
||||
--- gcc/config/s390/s390-protos.h 2014-01-14 10:37:04.000000000 -0500
|
||||
+++ gcc/config/s390/s390-protos.h 2018-04-09 21:21:28.072858046 -0400
|
||||
@@ -52,6 +52,7 @@ extern bool s390_contiguous_bitmask_p (u
|
||||
extern bool s390_split_ok_p (rtx, rtx, enum machine_mode, int);
|
||||
extern bool s390_overlap_p (rtx, rtx, HOST_WIDE_INT);
|
||||
extern bool s390_offset_p (rtx, rtx, rtx);
|
||||
+extern bool s390_rel_address_ok_p (rtx);
|
||||
extern int tls_symbolic_operand (rtx);
|
||||
|
||||
extern bool s390_match_ccmode (rtx, enum machine_mode);
|
||||
--- gcc/testsuite/gcc.target/s390/nodatarel-1.c 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ gcc/testsuite/gcc.target/s390/nodatarel-1.c 2018-04-09 21:21:28.077858053 -0400
|
||||
@@ -0,0 +1,83 @@
|
||||
+/* Test -mno-pic-data-is-text-relative option. No relative addressing
|
||||
+ of elements in .data and .bss are allowed with that option. */
|
||||
+
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O3 -fno-optimize-sibling-calls -fpic -mno-pic-data-is-text-relative -march=z10 -mtune=z9-109 -mzarch" } */
|
||||
+
|
||||
+static int a = 3;
|
||||
+
|
||||
+/* With -mno-pic-data-is-text-relative these must be addressed via
|
||||
+ GOT. */
|
||||
+
|
||||
+int __attribute__((noinline,noclone))
|
||||
+foo ()
|
||||
+{
|
||||
+ return a;
|
||||
+}
|
||||
+
|
||||
+static int __attribute__((noinline,noclone))
|
||||
+foostatic (void)
|
||||
+{
|
||||
+ return a;
|
||||
+}
|
||||
+
|
||||
+/* Just to make a potentially modified. */
|
||||
+
|
||||
+void
|
||||
+bar (int b)
|
||||
+{
|
||||
+ a = b;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "a@GOTENT" 3 } } */
|
||||
+
|
||||
+/* The exrl target is a label_ref which should not be affected at
|
||||
+ all. */
|
||||
+
|
||||
+void
|
||||
+mymemcpy (char *dst, char *src, long size)
|
||||
+{
|
||||
+ __builtin_memcpy (dst, src, size);
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler "exrl" } } */
|
||||
+
|
||||
+
|
||||
+/* PLT slots can still be addressed relatively. */
|
||||
+
|
||||
+int
|
||||
+callfoo ()
|
||||
+{
|
||||
+ return foo ();
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "foo@PLT" 1 } } */
|
||||
+
|
||||
+
|
||||
+/* GOT entries can still be addressed relatively. */
|
||||
+
|
||||
+void *
|
||||
+fooptr ()
|
||||
+{
|
||||
+ return &foo;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "foo@GOTENT" 1 } } */
|
||||
+
|
||||
+
|
||||
+/* A static function can be addressed relatively. */
|
||||
+
|
||||
+int
|
||||
+callfoostatic ()
|
||||
+{
|
||||
+ return foostatic ();
|
||||
+}
|
||||
+
|
||||
+void *
|
||||
+foostaticptr ()
|
||||
+{
|
||||
+ return &foostatic;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/* { dg-final { scan-assembler-not "foostatic@" } } */
|
|
@ -23,5 +23,5 @@
|
|||
-libgcj_tools_la_LIBADD = libgcj.la
|
||||
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
|
||||
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
|
||||
$(libgcj_tools_la_version_dep) $(am__append_19)
|
||||
$(libgcj_tools_la_version_dep) $(am__append_19)
|
||||
libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) \
|
||||
|
|
|
@ -5157,7 +5157,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ compare_and_swap pattern already computed the result and the
|
||||
+ machine modes are compatible. */
|
||||
gcc_assert (s390_cc_modes_compatible (GET_MODE (op0), mode)
|
||||
== GET_MODE (op0));
|
||||
== GET_MODE (op0));
|
||||
cc = op0;
|
||||
@@ -1222,6 +1937,93 @@ s390_branch_condition_mask (rtx code)
|
||||
}
|
||||
|
@ -5252,7 +5252,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+
|
||||
case CCRAWmode:
|
||||
switch (GET_CODE (code))
|
||||
{
|
||||
{
|
||||
@@ -1421,6 +2223,9 @@ s390_contiguous_bitmask_p (unsigned HOST
|
||||
/* Calculate a mask for all bits beyond the contiguous bits. */
|
||||
mask = (-1LL & ~(((1ULL << (tmp_length + tmp_pos - 1)) << 1) - 1));
|
||||
|
@ -5443,7 +5443,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ || s390_tune == PROCESSOR_2964_Z13)
|
||||
{
|
||||
maybe_set_param_value (PARAM_MAX_UNROLLED_INSNS, 100,
|
||||
global_options.x_param_values,
|
||||
global_options.x_param_values,
|
||||
@@ -1882,16 +2827,20 @@ s390_option_override (void)
|
||||
/* Map for smallest class containing reg regno. */
|
||||
|
||||
|
@ -5532,20 +5532,20 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
@@ -3111,6 +4093,7 @@ s390_preferred_reload_class (rtx op, reg
|
||||
{
|
||||
/* Constants we cannot reload into general registers
|
||||
must be forced into the literal pool. */
|
||||
must be forced into the literal pool. */
|
||||
+ case CONST_VECTOR:
|
||||
case CONST_DOUBLE:
|
||||
case CONST_INT:
|
||||
if (reg_class_subset_p (GENERAL_REGS, rclass)
|
||||
if (reg_class_subset_p (GENERAL_REGS, rclass)
|
||||
@@ -3122,6 +4105,10 @@ s390_preferred_reload_class (rtx op, reg
|
||||
else if (reg_class_subset_p (FP_REGS, rclass)
|
||||
&& legitimate_reload_fp_constant_p (op))
|
||||
return FP_REGS;
|
||||
else if (reg_class_subset_p (FP_REGS, rclass)
|
||||
&& legitimate_reload_fp_constant_p (op))
|
||||
return FP_REGS;
|
||||
+ else if (reg_class_subset_p (VEC_REGS, rclass)
|
||||
+ && legitimate_reload_vector_constant_p (op))
|
||||
+ return VEC_REGS;
|
||||
+
|
||||
return NO_REGS;
|
||||
return NO_REGS;
|
||||
|
||||
/* If a symbolic constant or a PLUS is reloaded,
|
||||
@@ -3245,6 +4232,7 @@ s390_reload_symref_address (rtx reg, rtx
|
||||
|
@ -5588,8 +5588,8 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
{
|
||||
HOST_WIDE_INT offset;
|
||||
@@ -3299,17 +4311,15 @@ s390_secondary_reload (bool in_p, rtx x,
|
||||
sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10
|
||||
: CODE_FOR_reloadsi_larl_odd_addend_z10);
|
||||
sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10
|
||||
: CODE_FOR_reloadsi_larl_odd_addend_z10);
|
||||
|
||||
- /* On z10 we need a scratch register when moving QI, TI or floating
|
||||
- point mode values from or to a memory location with a SYMBOL_REF
|
||||
|
@ -5598,7 +5598,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ /* Handle all the (mem (symref)) accesses we cannot use the z10
|
||||
+ instructions for. */
|
||||
if (MEM_P (x)
|
||||
&& s390_loadrelative_operand_p (XEXP (x, 0), NULL, NULL)
|
||||
&& s390_loadrelative_operand_p (XEXP (x, 0), NULL, NULL)
|
||||
- && (mode == QImode || mode == TImode || FLOAT_MODE_P (mode)
|
||||
- || (!TARGET_ZARCH && mode == DImode)
|
||||
- || ((mode == HImode || mode == SImode || mode == DImode)
|
||||
|
@ -5609,13 +5609,13 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ || GET_MODE_SIZE (mode) > UNITS_PER_WORD
|
||||
+ || !s390_check_symref_alignment (XEXP (x, 0),
|
||||
+ GET_MODE_SIZE (mode))))
|
||||
{
|
||||
{
|
||||
#define __SECONDARY_RELOAD_CASE(M,m) \
|
||||
case M##mode: \
|
||||
case M##mode: \
|
||||
@@ -3334,7 +4344,27 @@ s390_secondary_reload (bool in_p, rtx x,
|
||||
__SECONDARY_RELOAD_CASE (SD, sd);
|
||||
__SECONDARY_RELOAD_CASE (DD, dd);
|
||||
__SECONDARY_RELOAD_CASE (TD, td);
|
||||
__SECONDARY_RELOAD_CASE (SD, sd);
|
||||
__SECONDARY_RELOAD_CASE (DD, dd);
|
||||
__SECONDARY_RELOAD_CASE (TD, td);
|
||||
-
|
||||
+ __SECONDARY_RELOAD_CASE (V1QI, v1qi);
|
||||
+ __SECONDARY_RELOAD_CASE (V2QI, v2qi);
|
||||
|
@ -5638,24 +5638,24 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ __SECONDARY_RELOAD_CASE (V1DF, v1df);
|
||||
+ __SECONDARY_RELOAD_CASE (V2DF, v2df);
|
||||
+ __SECONDARY_RELOAD_CASE (V1TF, v1tf);
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
@@ -3371,12 +4401,12 @@ s390_secondary_reload (bool in_p, rtx x,
|
||||
{
|
||||
if (in_p)
|
||||
sri->icode = (TARGET_64BIT ?
|
||||
{
|
||||
if (in_p)
|
||||
sri->icode = (TARGET_64BIT ?
|
||||
- CODE_FOR_reloaddi_nonoffmem_in :
|
||||
- CODE_FOR_reloadsi_nonoffmem_in);
|
||||
+ CODE_FOR_reloaddi_la_in :
|
||||
+ CODE_FOR_reloadsi_la_in);
|
||||
else
|
||||
sri->icode = (TARGET_64BIT ?
|
||||
else
|
||||
sri->icode = (TARGET_64BIT ?
|
||||
- CODE_FOR_reloaddi_nonoffmem_out :
|
||||
- CODE_FOR_reloadsi_nonoffmem_out);
|
||||
+ CODE_FOR_reloaddi_la_out :
|
||||
+ CODE_FOR_reloadsi_la_out);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4610,6 +5640,256 @@ s390_expand_cmpmem (rtx target, rtx op0,
|
||||
|
@ -5916,7 +5916,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
/* Expand conditional increment or decrement using alc/slb instructions.
|
||||
Should generate code setting DST to either SRC or SRC + INCREMENT,
|
||||
@@ -4964,6 +6244,304 @@ s390_expand_mask_and_shift (rtx val, enu
|
||||
NULL_RTX, 1, OPTAB_DIRECT);
|
||||
NULL_RTX, 1, OPTAB_DIRECT);
|
||||
}
|
||||
|
||||
+/* Generate a vector comparison COND of CMP_OP1 and CMP_OP2 and store
|
||||
|
@ -6293,7 +6293,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
void
|
||||
@@ -5701,14 +7306,7 @@ print_operand (FILE *file, rtx x, int co
|
||||
struct s390_address ad;
|
||||
int ret;
|
||||
int ret;
|
||||
|
||||
- if (!MEM_P (x))
|
||||
- {
|
||||
|
@ -6305,11 +6305,11 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
- ret = s390_decompose_address (XEXP (x, 0), &ad);
|
||||
+ ret = s390_decompose_address (MEM_P (x) ? XEXP (x, 0) : x, &ad);
|
||||
|
||||
if (!ret
|
||||
|| (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base)))
|
||||
if (!ret
|
||||
|| (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base)))
|
||||
@@ -5730,14 +7328,7 @@ print_operand (FILE *file, rtx x, int co
|
||||
struct s390_address ad;
|
||||
int ret;
|
||||
int ret;
|
||||
|
||||
- if (!MEM_P (x))
|
||||
- {
|
||||
|
@ -6321,8 +6321,8 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
- ret = s390_decompose_address (XEXP (x, 0), &ad);
|
||||
+ ret = s390_decompose_address (MEM_P (x) ? XEXP (x, 0) : x, &ad);
|
||||
|
||||
if (!ret
|
||||
|| (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base)))
|
||||
if (!ret
|
||||
|| (ad.base && !REGNO_OK_FOR_BASE_P (REGNO (ad.base)))
|
||||
@@ -5815,7 +7406,17 @@ print_operand (FILE *file, rtx x, int co
|
||||
switch (GET_CODE (x))
|
||||
{
|
||||
|
@ -6343,8 +6343,8 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
|
||||
case MEM:
|
||||
@@ -5902,6 +7503,44 @@ print_operand (FILE *file, rtx x, int co
|
||||
code);
|
||||
}
|
||||
code);
|
||||
}
|
||||
break;
|
||||
+ case CONST_VECTOR:
|
||||
+ switch (code)
|
||||
|
@ -6468,8 +6468,8 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ return true;
|
||||
+
|
||||
if (REGNO_PAIR_OK (regno, mode))
|
||||
{
|
||||
if (mode == SImode || mode == DImode)
|
||||
{
|
||||
if (mode == SImode || mode == DImode)
|
||||
@@ -8269,19 +9948,86 @@ s390_hard_regno_rename_ok (unsigned int
|
||||
int
|
||||
s390_class_max_nregs (enum reg_class rclass, enum machine_mode mode)
|
||||
|
@ -6657,7 +6657,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
|
||||
/* Soft-float changes the ABI: no floating-point registers are used. */
|
||||
@@ -9220,20 +11031,24 @@ s390_pass_by_reference (cumulative_args_
|
||||
bool named ATTRIBUTE_UNUSED)
|
||||
bool named ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int size = s390_function_arg_size (mode, type);
|
||||
+
|
||||
|
@ -6674,7 +6674,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ return true;
|
||||
|
||||
if (TREE_CODE (type) == COMPLEX_TYPE
|
||||
|| TREE_CODE (type) == VECTOR_TYPE)
|
||||
|| TREE_CODE (type) == VECTOR_TYPE)
|
||||
- return 1;
|
||||
+ return true;
|
||||
}
|
||||
|
@ -6736,7 +6736,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
- return 0;
|
||||
+ return NULL_RTX;
|
||||
else
|
||||
return gen_rtx_REG (mode, cum->fprs + 16);
|
||||
return gen_rtx_REG (mode, cum->fprs + 16);
|
||||
}
|
||||
@@ -9299,7 +11136,7 @@ s390_function_arg (cumulative_args_t cum
|
||||
int n_gprs = (size + UNITS_PER_LONG - 1) / UNITS_PER_LONG;
|
||||
|
@ -6745,7 +6745,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
- return 0;
|
||||
+ return NULL_RTX;
|
||||
else if (n_gprs == 1 || UNITS_PER_WORD == UNITS_PER_LONG)
|
||||
return gen_rtx_REG (mode, cum->gprs + 2);
|
||||
return gen_rtx_REG (mode, cum->gprs + 2);
|
||||
else if (n_gprs == 2)
|
||||
@@ -9342,6 +11179,12 @@ s390_return_in_memory (const_tree type,
|
||||
|| TREE_CODE (type) == REAL_TYPE)
|
||||
|
@ -6761,8 +6761,8 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
in memory. */
|
||||
if (AGGREGATE_TYPE_P (type)
|
||||
@@ -9384,6 +11227,12 @@ s390_function_and_libcall_value (enum ma
|
||||
const_tree fntype_or_decl,
|
||||
bool outgoing ATTRIBUTE_UNUSED)
|
||||
const_tree fntype_or_decl,
|
||||
bool outgoing ATTRIBUTE_UNUSED)
|
||||
{
|
||||
+ /* For vector return types it is important to use the RET_TYPE
|
||||
+ argument whenever available since the middle-end might have
|
||||
|
@ -6774,7 +6774,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
promote_function_mode would do. */
|
||||
if (ret_type)
|
||||
@@ -9393,10 +11242,14 @@ s390_function_and_libcall_value (enum ma
|
||||
fntype_or_decl, 1);
|
||||
fntype_or_decl, 1);
|
||||
}
|
||||
|
||||
- gcc_assert (GET_MODE_CLASS (mode) == MODE_INT || SCALAR_FLOAT_MODE_P (mode));
|
||||
|
@ -6791,7 +6791,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ else if (TARGET_HARD_FLOAT && SCALAR_FLOAT_MODE_P (mode))
|
||||
return gen_rtx_REG (mode, 16);
|
||||
else if (GET_MODE_SIZE (mode) <= UNITS_PER_LONG
|
||||
|| UNITS_PER_LONG == UNITS_PER_WORD)
|
||||
|| UNITS_PER_LONG == UNITS_PER_WORD)
|
||||
@@ -9560,9 +11413,13 @@ s390_va_start (tree valist, rtx nextarg
|
||||
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
|
||||
}
|
||||
|
@ -6984,7 +6984,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ }
|
||||
else
|
||||
emit_insn (gen_tbegin_nofloat_1 (gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK),
|
||||
tdb));
|
||||
tdb));
|
||||
@@ -9831,210 +11742,6 @@ s390_expand_tbegin (rtx dest, rtx tdb, r
|
||||
}
|
||||
}
|
||||
|
@ -7204,10 +7204,10 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ named. This only has an impact on vector argument register
|
||||
+ usage none of which is call-saved. */
|
||||
if (pass_by_reference (&cum_v, mode, type, true))
|
||||
{
|
||||
mode = Pmode;
|
||||
type = build_pointer_type (type);
|
||||
}
|
||||
{
|
||||
mode = Pmode;
|
||||
type = build_pointer_type (type);
|
||||
}
|
||||
|
||||
- parm_rtx = s390_function_arg (cum, mode, type, 0);
|
||||
+ parm_rtx = s390_function_arg (cum, mode, type, true);
|
||||
|
@ -7216,10 +7216,10 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ s390_function_arg_advance (cum, mode, type, true);
|
||||
|
||||
if (!parm_rtx)
|
||||
continue;
|
||||
continue;
|
||||
@@ -10711,6 +12421,13 @@ s390_conditional_register_usage (void)
|
||||
for (i = 16; i < 32; i++)
|
||||
call_used_regs[i] = fixed_regs[i] = 1;
|
||||
call_used_regs[i] = fixed_regs[i] = 1;
|
||||
}
|
||||
+
|
||||
+ /* Disable v16 - v31 for non-vector target. */
|
||||
|
@ -7325,43 +7325,43 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
@@ -11430,48 +13187,66 @@ s390_sched_score (rtx insn)
|
||||
case 0:
|
||||
/* Try to put insns into the first slot which would otherwise
|
||||
break a group. */
|
||||
break a group. */
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_CRACKED) != 0
|
||||
- || (mask & S390_OOO_SCHED_ATTR_MASK_EXPANDED) != 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_CRACKED) != 0
|
||||
+ || (mask & S390_SCHED_ATTR_MASK_EXPANDED) != 0)
|
||||
score += 5;
|
||||
score += 5;
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_GROUPALONE) != 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_GROUPALONE) != 0)
|
||||
score += 10;
|
||||
score += 10;
|
||||
case 1:
|
||||
/* Prefer not cracked insns while trying to put together a
|
||||
group. */
|
||||
group. */
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_CRACKED) == 0
|
||||
- && (mask & S390_OOO_SCHED_ATTR_MASK_EXPANDED) == 0
|
||||
- && (mask & S390_OOO_SCHED_ATTR_MASK_GROUPALONE) == 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_CRACKED) == 0
|
||||
+ && (mask & S390_SCHED_ATTR_MASK_EXPANDED) == 0
|
||||
+ && (mask & S390_SCHED_ATTR_MASK_GROUPALONE) == 0)
|
||||
score += 10;
|
||||
score += 10;
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_ENDGROUP) == 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_ENDGROUP) == 0)
|
||||
score += 5;
|
||||
score += 5;
|
||||
break;
|
||||
case 2:
|
||||
/* Prefer not cracked insns while trying to put together a
|
||||
group. */
|
||||
group. */
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_CRACKED) == 0
|
||||
- && (mask & S390_OOO_SCHED_ATTR_MASK_EXPANDED) == 0
|
||||
- && (mask & S390_OOO_SCHED_ATTR_MASK_GROUPALONE) == 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_CRACKED) == 0
|
||||
+ && (mask & S390_SCHED_ATTR_MASK_EXPANDED) == 0
|
||||
+ && (mask & S390_SCHED_ATTR_MASK_GROUPALONE) == 0)
|
||||
score += 10;
|
||||
score += 10;
|
||||
/* Prefer endgroup insns in the last slot. */
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_ENDGROUP) != 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_ENDGROUP) != 0)
|
||||
score += 10;
|
||||
score += 10;
|
||||
break;
|
||||
- case S390_OOO_SCHED_STATE_NORMAL:
|
||||
+ case S390_SCHED_STATE_NORMAL:
|
||||
|
@ -7370,20 +7370,20 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
- && (mask & S390_OOO_SCHED_ATTR_MASK_EXPANDED) == 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_CRACKED) == 0
|
||||
+ && (mask & S390_SCHED_ATTR_MASK_EXPANDED) == 0)
|
||||
score += 5;
|
||||
score += 5;
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_GROUPALONE) != 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_GROUPALONE) != 0)
|
||||
score += 10;
|
||||
score += 10;
|
||||
break;
|
||||
- case S390_OOO_SCHED_STATE_CRACKED:
|
||||
+ case S390_SCHED_STATE_CRACKED:
|
||||
/* Try to keep cracked insns together to prevent them from
|
||||
interrupting groups. */
|
||||
interrupting groups. */
|
||||
- if ((mask & S390_OOO_SCHED_ATTR_MASK_CRACKED) != 0
|
||||
- || (mask & S390_OOO_SCHED_ATTR_MASK_EXPANDED) != 0)
|
||||
+ if ((mask & S390_SCHED_ATTR_MASK_CRACKED) != 0
|
||||
+ || (mask & S390_SCHED_ATTR_MASK_EXPANDED) != 0)
|
||||
score += 5;
|
||||
score += 5;
|
||||
break;
|
||||
}
|
||||
+
|
||||
|
@ -7419,29 +7419,29 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
{
|
||||
@@ -11526,12 +13302,12 @@ s390_sched_reorder (FILE *file, int verb
|
||||
|
||||
if (verbose > 5)
|
||||
fprintf (file,
|
||||
if (verbose > 5)
|
||||
fprintf (file,
|
||||
- "move insn %d to the top of list\n",
|
||||
+ ";;\t\tBACKEND: move insn %d to the top of list\n",
|
||||
INSN_UID (ready[last_index]));
|
||||
}
|
||||
else if (verbose > 5)
|
||||
fprintf (file,
|
||||
INSN_UID (ready[last_index]));
|
||||
}
|
||||
else if (verbose > 5)
|
||||
fprintf (file,
|
||||
- "best insn %d already on top\n",
|
||||
+ ";;\t\tBACKEND: best insn %d already on top\n",
|
||||
INSN_UID (ready[last_index]));
|
||||
}
|
||||
INSN_UID (ready[last_index]));
|
||||
}
|
||||
|
||||
@@ -11542,16 +13318,35 @@ s390_sched_reorder (FILE *file, int verb
|
||||
|
||||
for (i = last_index; i >= 0; i--)
|
||||
{
|
||||
for (i = last_index; i >= 0; i--)
|
||||
{
|
||||
- if (recog_memoized (ready[i]) < 0)
|
||||
+ unsigned int sched_mask;
|
||||
+ rtx insn = ready[i];
|
||||
+
|
||||
+ if (recog_memoized (insn) < 0)
|
||||
continue;
|
||||
continue;
|
||||
- fprintf (file, "insn %d score: %d: ", INSN_UID (ready[i]),
|
||||
- s390_sched_score (ready[i]));
|
||||
-#define PRINT_OOO_ATTR(ATTR) fprintf (file, "%s ", get_attr_##ATTR (ready[i]) ? #ATTR : "!" #ATTR);
|
||||
|
@ -7474,9 +7474,9 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ fprintf (file, " u%d", j);
|
||||
+ fprintf (file, ")");
|
||||
+ }
|
||||
fprintf (file, "\n");
|
||||
}
|
||||
}
|
||||
fprintf (file, "\n");
|
||||
}
|
||||
}
|
||||
@@ -11570,18 +13365,19 @@ s390_sched_variable_issue (FILE *file, i
|
||||
{
|
||||
last_scheduled_insn = insn;
|
||||
|
@ -7502,28 +7502,28 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ || (mask & S390_SCHED_ATTR_MASK_GROUPALONE) != 0)
|
||||
+ s390_sched_state = S390_SCHED_STATE_NORMAL;
|
||||
else
|
||||
{
|
||||
/* Only normal insns are left (mask == 0). */
|
||||
{
|
||||
/* Only normal insns are left (mask == 0). */
|
||||
@@ -11590,30 +13386,73 @@ s390_sched_variable_issue (FILE *file, i
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
- case S390_OOO_SCHED_STATE_NORMAL:
|
||||
- if (s390_sched_state == S390_OOO_SCHED_STATE_NORMAL)
|
||||
+ case S390_SCHED_STATE_NORMAL:
|
||||
+ if (s390_sched_state == S390_SCHED_STATE_NORMAL)
|
||||
s390_sched_state = 1;
|
||||
else
|
||||
s390_sched_state++;
|
||||
s390_sched_state = 1;
|
||||
else
|
||||
s390_sched_state++;
|
||||
|
||||
break;
|
||||
break;
|
||||
- case S390_OOO_SCHED_STATE_CRACKED:
|
||||
- s390_sched_state = S390_OOO_SCHED_STATE_NORMAL;
|
||||
+ case S390_SCHED_STATE_CRACKED:
|
||||
+ s390_sched_state = S390_SCHED_STATE_NORMAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (s390_tune == PROCESSOR_2964_Z13)
|
||||
+ {
|
||||
|
@ -7541,7 +7541,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ }
|
||||
+
|
||||
if (verbose > 5)
|
||||
{
|
||||
{
|
||||
- fprintf (file, "insn %d: ", INSN_UID (insn));
|
||||
-#define PRINT_OOO_ATTR(ATTR) \
|
||||
- fprintf (file, "%s ", get_attr_##ATTR (insn) ? #ATTR : "");
|
||||
|
@ -7589,11 +7589,11 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ fprintf (file, "%d:%d ", j, last_scheduled_unit_distance[j]);
|
||||
+ fprintf (file, "\n");
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11630,6 +13469,7 @@ s390_sched_init (FILE *file ATTRIBUTE_UN
|
||||
int max_ready ATTRIBUTE_UNUSED)
|
||||
int max_ready ATTRIBUTE_UNUSED)
|
||||
{
|
||||
last_scheduled_insn = NULL_RTX;
|
||||
+ memset (last_scheduled_unit_distance, 0, MAX_SCHED_UNITS * sizeof (int));
|
||||
|
@ -8666,9 +8666,9 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
|
||||
/* This is necessary to avoid a warning about comparing different enum
|
||||
@@ -64,6 +66,10 @@ enum processor_flags
|
||||
(s390_arch_flags & PF_ZEC12)
|
||||
(s390_arch_flags & PF_ZEC12)
|
||||
#define TARGET_CPU_HTM \
|
||||
(s390_arch_flags & PF_TX)
|
||||
(s390_arch_flags & PF_TX)
|
||||
+#define TARGET_CPU_Z13 \
|
||||
+ (s390_arch_flags & PF_Z13)
|
||||
+#define TARGET_CPU_VX \
|
||||
|
@ -9232,8 +9232,8 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+
|
||||
+ (and (eq_attr "cpu_facility" "vec")
|
||||
+ (match_test "TARGET_VX"))
|
||||
(const_int 1)]
|
||||
(const_int 0)))
|
||||
(const_int 1)]
|
||||
(const_int 0)))
|
||||
|
||||
@@ -365,6 +481,9 @@
|
||||
;; Pipeline description for zEC12
|
||||
|
@ -10454,7 +10454,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+
|
||||
(define_insn "tbegin_1"
|
||||
[(set (reg:CCRAW CC_REGNUM)
|
||||
(unspec_volatile:CCRAW [(match_operand 0 "const_int_operand" "D")]
|
||||
(unspec_volatile:CCRAW [(match_operand 0 "const_int_operand" "D")]
|
||||
@@ -10141,3 +10554,30 @@
|
||||
"TARGET_HTM && INTVAL (operands[2]) < 16"
|
||||
"ppa\t%0,%1,%2"
|
||||
|
@ -10645,7 +10645,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
extern void s390_expand_cs_hqi (enum machine_mode, rtx, rtx, rtx,
|
||||
@@ -88,6 +96,10 @@ extern void s390_expand_cs_hqi (enum mac
|
||||
extern void s390_expand_atomic (enum machine_mode, enum rtx_code,
|
||||
rtx, rtx, rtx, bool);
|
||||
rtx, rtx, rtx, bool);
|
||||
extern void s390_expand_tbegin (rtx, rtx, rtx, bool);
|
||||
+extern void s390_expand_vec_compare (rtx, enum rtx_code, rtx, rtx);
|
||||
+extern void s390_expand_vec_compare_cc (rtx, enum rtx_code, rtx, rtx, bool);
|
||||
|
@ -14294,37 +14294,37 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
--- gcc/config.gcc 2016-05-11 14:46:08.298981685 +0200
|
||||
+++ gcc/config.gcc 2016-05-11 17:17:32.000000000 +0200
|
||||
@@ -452,7 +452,7 @@ s390*-*-*)
|
||||
cpu_type=s390
|
||||
need_64bit_hwint=yes
|
||||
extra_options="${extra_options} fused-madd.opt"
|
||||
cpu_type=s390
|
||||
need_64bit_hwint=yes
|
||||
extra_options="${extra_options} fused-madd.opt"
|
||||
- extra_headers="s390intrin.h htmintrin.h htmxlintrin.h"
|
||||
+ extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
|
||||
;;
|
||||
;;
|
||||
# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
|
||||
sh[123456789lbe]*-*-* | sh-*-*)
|
||||
@@ -2249,27 +2249,35 @@ rx-*-elf*)
|
||||
s390-*-linux*)
|
||||
default_gnu_indirect_function=yes
|
||||
tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
|
||||
default_gnu_indirect_function=yes
|
||||
tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
|
||||
+ c_target_objs="${c_target_objs} s390-c.o"
|
||||
+ cxx_target_objs="${cxx_target_objs} s390-c.o"
|
||||
if test x$enable_targets = xall; then
|
||||
tmake_file="${tmake_file} s390/t-linux64"
|
||||
fi
|
||||
if test x$enable_targets = xall; then
|
||||
tmake_file="${tmake_file} s390/t-linux64"
|
||||
fi
|
||||
+ tmake_file="${tmake_file} s390/t-s390"
|
||||
;;
|
||||
;;
|
||||
s390x-*-linux*)
|
||||
default_gnu_indirect_function=yes
|
||||
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
|
||||
tm_p_file=s390/s390-protos.h
|
||||
default_gnu_indirect_function=yes
|
||||
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
|
||||
tm_p_file=s390/s390-protos.h
|
||||
+ c_target_objs="${c_target_objs} s390-c.o"
|
||||
+ cxx_target_objs="${cxx_target_objs} s390-c.o"
|
||||
md_file=s390/s390.md
|
||||
extra_modes=s390/s390-modes.def
|
||||
out_file=s390/s390.c
|
||||
md_file=s390/s390.md
|
||||
extra_modes=s390/s390-modes.def
|
||||
out_file=s390/s390.c
|
||||
- tmake_file="${tmake_file} s390/t-linux64"
|
||||
+ tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
|
||||
;;
|
||||
;;
|
||||
s390x-ibm-tpf*)
|
||||
- tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h s390/tpf.h"
|
||||
- tm_p_file=s390/s390-protos.h
|
||||
|
@ -14340,20 +14340,20 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+ extra_modes=s390/s390-modes.def
|
||||
+ out_file=s390/s390.c
|
||||
+ thread_file='tpf'
|
||||
extra_options="${extra_options} s390/tpf.opt"
|
||||
extra_options="${extra_options} s390/tpf.opt"
|
||||
+ tmake_file="${tmake_file} s390/t-s390"
|
||||
;;
|
||||
;;
|
||||
score-*-elf)
|
||||
gas=yes
|
||||
gas=yes
|
||||
@@ -3603,7 +3611,7 @@ case "${target}" in
|
||||
for which in arch tune; do
|
||||
eval "val=\$with_$which"
|
||||
case ${val} in
|
||||
for which in arch tune; do
|
||||
eval "val=\$with_$which"
|
||||
case ${val} in
|
||||
- "" | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12)
|
||||
+ "" | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13)
|
||||
# OK
|
||||
;;
|
||||
*)
|
||||
# OK
|
||||
;;
|
||||
*)
|
||||
--- gcc/configure 2016-05-11 14:46:08.719976035 +0200
|
||||
+++ gcc/configure 2016-05-11 19:41:14.975813805 +0200
|
||||
@@ -26000,6 +26000,42 @@ $as_echo "#define HAVE_LD_PERSONALITY_RE
|
||||
|
@ -14513,17 +14513,17 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
+++ gcc/dwarf2cfi.c 2016-05-11 15:41:36.000000000 +0200
|
||||
@@ -244,11 +244,9 @@ expand_builtin_init_dwarf_reg_sizes (tre
|
||||
if (rnum < DWARF_FRAME_REGISTERS)
|
||||
{
|
||||
HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode);
|
||||
{
|
||||
HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode);
|
||||
- enum machine_mode save_mode = reg_raw_mode[i];
|
||||
HOST_WIDE_INT size;
|
||||
HOST_WIDE_INT size;
|
||||
+ enum machine_mode save_mode = targetm.dwarf_frame_reg_mode (i);
|
||||
|
||||
- if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode))
|
||||
- save_mode = choose_hard_reg_mode (i, 1, true);
|
||||
if (dnum == DWARF_FRAME_RETURN_COLUMN)
|
||||
{
|
||||
if (save_mode == VOIDmode)
|
||||
if (dnum == DWARF_FRAME_RETURN_COLUMN)
|
||||
{
|
||||
if (save_mode == VOIDmode)
|
||||
--- gcc/genattrtab.c 2013-01-21 16:08:23.000000000 +0100
|
||||
+++ gcc/genattrtab.c 2016-05-11 17:32:29.000000000 +0200
|
||||
@@ -229,7 +229,7 @@ static int *insn_n_alternatives;
|
||||
|
@ -14545,23 +14545,23 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
static rtx insert_right_side (enum rtx_code, rtx, rtx, int, int);
|
||||
static rtx copy_boolean (rtx);
|
||||
@@ -771,7 +771,7 @@ check_attr_test (rtx exp, int is_const,
|
||||
if (attr == NULL)
|
||||
{
|
||||
if (! strcmp (XSTR (exp, 0), "alternative"))
|
||||
if (attr == NULL)
|
||||
{
|
||||
if (! strcmp (XSTR (exp, 0), "alternative"))
|
||||
- return mk_attr_alt (1 << atoi (XSTR (exp, 1)));
|
||||
+ return mk_attr_alt (((uint64_t) 1) << atoi (XSTR (exp, 1)));
|
||||
else
|
||||
fatal ("unknown attribute `%s' in EQ_ATTR", XSTR (exp, 0));
|
||||
}
|
||||
else
|
||||
fatal ("unknown attribute `%s' in EQ_ATTR", XSTR (exp, 0));
|
||||
}
|
||||
@@ -817,7 +817,7 @@ check_attr_test (rtx exp, int is_const,
|
||||
|
||||
name_ptr = XSTR (exp, 1);
|
||||
while ((p = next_comma_elt (&name_ptr)) != NULL)
|
||||
name_ptr = XSTR (exp, 1);
|
||||
while ((p = next_comma_elt (&name_ptr)) != NULL)
|
||||
- set |= 1 << atoi (p);
|
||||
+ set |= ((uint64_t) 1) << atoi (p);
|
||||
|
||||
return mk_attr_alt (set);
|
||||
}
|
||||
return mk_attr_alt (set);
|
||||
}
|
||||
@@ -1292,7 +1292,7 @@ static struct attr_value *
|
||||
get_attr_value (rtx value, struct attr_desc *attr, int insn_code)
|
||||
{
|
||||
|
@ -14620,11 +14620,11 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
@@ -2779,7 +2779,7 @@ simplify_test_exp (rtx exp, int insn_cod
|
||||
case EQ_ATTR:
|
||||
if (XSTR (exp, 0) == alternative_name)
|
||||
{
|
||||
{
|
||||
- newexp = mk_attr_alt (1 << atoi (XSTR (exp, 1)));
|
||||
+ newexp = mk_attr_alt (((uint64_t) 1) << atoi (XSTR (exp, 1)));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5240,10 +5240,11 @@ main (int argc, char **argv)
|
||||
expand_delays ();
|
||||
|
@ -14645,12 +14645,12 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
@@ -6659,11 +6659,11 @@ expand_vec_perm (enum machine_mode mode,
|
||||
enum machine_mode selmode = GET_MODE (sel);
|
||||
if (u == 2)
|
||||
sel = expand_simple_binop (selmode, PLUS, sel, sel,
|
||||
sel = expand_simple_binop (selmode, PLUS, sel, sel,
|
||||
- sel, 0, OPTAB_DIRECT);
|
||||
+ NULL, 0, OPTAB_DIRECT);
|
||||
else
|
||||
sel = expand_simple_binop (selmode, ASHIFT, sel,
|
||||
GEN_INT (exact_log2 (u)),
|
||||
sel = expand_simple_binop (selmode, ASHIFT, sel,
|
||||
GEN_INT (exact_log2 (u)),
|
||||
- sel, 0, OPTAB_DIRECT);
|
||||
+ NULL, 0, OPTAB_DIRECT);
|
||||
gcc_assert (sel != NULL);
|
||||
|
@ -14714,7 +14714,7 @@ Backport of trunk revisions: r214898, r221047, r223367, r223368, r223369, r22339
|
|||
@@ -186,6 +186,7 @@ extern int default_label_align_max_skip
|
||||
extern int default_jump_align_max_skip (rtx);
|
||||
extern section * default_function_section(tree decl, enum node_frequency freq,
|
||||
bool startup, bool exit);
|
||||
bool startup, bool exit);
|
||||
+extern enum machine_mode default_dwarf_frame_reg_mode (int);
|
||||
extern enum machine_mode default_get_reg_raw_mode(int);
|
||||
|
||||
|
|
|
@ -1,40 +1,40 @@
|
|||
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
|
||||
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
||||
@@ -2478,7 +2478,7 @@ sparc-*-rtems*)
|
||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
||||
tmake_file="sparc/t-sparc sparc/t-rtems t-rtems"
|
||||
;;
|
||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
||||
tmake_file="sparc/t-sparc sparc/t-rtems t-rtems"
|
||||
;;
|
||||
-sparc-*-linux*)
|
||||
+sparc-*-linux* | sparcv9-*-linux*)
|
||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
|
||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||
case ${target} in
|
||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
|
||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||
case ${target} in
|
||||
@@ -2532,7 +2532,7 @@ sparc64-*-rtems*)
|
||||
extra_options="${extra_options}"
|
||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64 t-rtems"
|
||||
;;
|
||||
extra_options="${extra_options}"
|
||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64 t-rtems"
|
||||
;;
|
||||
-sparc64-*-linux*)
|
||||
+sparc64*-*-linux*)
|
||||
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
|
||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
|
||||
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
|
||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
|
||||
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
|
||||
+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
|
||||
@@ -1002,7 +1002,7 @@ sparc-*-elf*)
|
||||
tmake_file="${tmake_file} t-fdpbit t-crtfm"
|
||||
extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
|
||||
;;
|
||||
tmake_file="${tmake_file} t-fdpbit t-crtfm"
|
||||
extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
|
||||
;;
|
||||
-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
|
||||
+sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
|
||||
tmake_file="${tmake_file} t-crtfm"
|
||||
if test "${host_address}" = 64; then
|
||||
tmake_file="$tmake_file sparc/t-linux64"
|
||||
tmake_file="${tmake_file} t-crtfm"
|
||||
if test "${host_address}" = 64; then
|
||||
tmake_file="$tmake_file sparc/t-linux64"
|
||||
@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
|
||||
tmake_file="$tmake_file t-crtfm"
|
||||
extra_parts="$extra_parts crtfastmath.o"
|
||||
;;
|
||||
tmake_file="$tmake_file t-crtfm"
|
||||
extra_parts="$extra_parts crtfastmath.o"
|
||||
;;
|
||||
-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
|
||||
+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
|
||||
extra_parts="$extra_parts crtfastmath.o"
|
||||
tmake_file="${tmake_file} t-crtfm sparc/t-linux"
|
||||
if test "${host_address}" = 64; then
|
||||
extra_parts="$extra_parts crtfastmath.o"
|
||||
tmake_file="${tmake_file} t-crtfm sparc/t-linux"
|
||||
if test "${host_address}" = 64; then
|
||||
|
|
|
@ -37,43 +37,43 @@
|
|||
@@ -145,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*:NetBSD:*:*)
|
||||
# NetBSD (nbsd) targets should (where applicable) match one or
|
||||
# NetBSD (nbsd) targets should (where applicable) match one or
|
||||
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
|
||||
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
|
||||
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
|
||||
# switched to ELF, *-*-netbsd* would select the old
|
||||
# object file format. This provides both forward
|
||||
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
|
||||
# switched to ELF, *-*-netbsd* would select the old
|
||||
# object file format. This provides both forward
|
||||
@@ -792,13 +790,12 @@ EOF
|
||||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:FreeBSD:*:*)
|
||||
- case ${UNAME_MACHINE} in
|
||||
- pc98)
|
||||
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||
+ case ${UNAME_PROCESSOR} in
|
||||
amd64)
|
||||
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
*)
|
||||
amd64)
|
||||
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
*)
|
||||
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
esac
|
||||
exit ;;
|
||||
esac
|
||||
exit ;;
|
||||
i*:CYGWIN*:*)
|
||||
@@ -807,6 +804,9 @@ EOF
|
||||
*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
+ i*:MSYS*:*)
|
||||
+ echo ${UNAME_MACHINE}-pc-msys
|
||||
+ exit ;;
|
||||
i*:windows32*:*)
|
||||
# uname -m includes "-pc" on this system.
|
||||
echo ${UNAME_MACHINE}-mingw32
|
||||
# uname -m includes "-pc" on this system.
|
||||
echo ${UNAME_MACHINE}-mingw32
|
||||
@@ -861,6 +861,13 @@ EOF
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
+ aarch64:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ exit ;;
|
||||
|
@ -82,66 +82,66 @@
|
|||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ exit ;;
|
||||
alpha:Linux:*:*)
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
EV5) UNAME_MACHINE=alphaev5 ;;
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
EV5) UNAME_MACHINE=alphaev5 ;;
|
||||
@@ -895,13 +902,16 @@ EOF
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
cris:Linux:*:*)
|
||||
- echo cris-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
exit ;;
|
||||
exit ;;
|
||||
crisv32:Linux:*:*)
|
||||
- echo crisv32-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
exit ;;
|
||||
exit ;;
|
||||
frv:Linux:*:*)
|
||||
- echo frv-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ exit ;;
|
||||
+ hexagon:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
LIBC=gnu
|
||||
LIBC=gnu
|
||||
@@ -943,7 +953,7 @@ EOF
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
;;
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
;;
|
||||
or32:Linux:*:*)
|
||||
- echo or32-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
exit ;;
|
||||
padre:Linux:*:*)
|
||||
echo sparc-unknown-linux-gnu
|
||||
echo sparc-unknown-linux-gnu
|
||||
@@ -978,13 +988,13 @@ EOF
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
tile*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-tilera-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
exit ;;
|
||||
vax:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
- echo x86_64-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
@@ -1246,7 +1256,7 @@ EOF
|
||||
NEO-?:NONSTOP_KERNEL:*:*)
|
||||
echo neo-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo neo-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
- NSE-?:NONSTOP_KERNEL:*:*)
|
||||
+ NSE-*:NONSTOP_KERNEL:*:*)
|
||||
echo nse-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo nse-tandem-nsk${UNAME_RELEASE}
|
||||
exit ;;
|
||||
NSR-?:NONSTOP_KERNEL:*:*)
|
||||
@@ -1315,6 +1325,9 @@ EOF
|
||||
i*86:AROS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-aros
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-aros
|
||||
exit ;;
|
||||
+ x86_64:VMkernel:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-esx
|
||||
+ exit ;;
|
||||
|
@ -196,197 +196,197 @@
|
|||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
@@ -223,6 +225,12 @@ case $os in
|
||||
-isc*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-isc*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
+ -lynx*178)
|
||||
+ os=-lynxos178
|
||||
+ ;;
|
||||
+ -lynx*5)
|
||||
+ os=-lynxos5
|
||||
+ ;;
|
||||
-lynx*)
|
||||
os=-lynxos
|
||||
;;
|
||||
-lynx*)
|
||||
os=-lynxos
|
||||
;;
|
||||
@@ -247,17 +255,22 @@ case $basic_machine in
|
||||
# Some are omitted here because they have special meanings below.
|
||||
1750a | 580 \
|
||||
| a29k \
|
||||
# Some are omitted here because they have special meanings below.
|
||||
1750a | 580 \
|
||||
| a29k \
|
||||
+ | aarch64 | aarch64_be \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
+ | be32 | be64 \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
+ | epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| fido | fr30 | frv \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
+ | hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
+ | le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| maxq | mb | microblaze | mcore | mep | metag \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| maxq | mb | microblaze | mcore | mep | metag \
|
||||
@@ -291,7 +304,7 @@ case $basic_machine in
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
- | rx \
|
||||
+ | rl78 | rx \
|
||||
| score \
|
||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
| score \
|
||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
@@ -300,7 +313,7 @@ case $basic_machine in
|
||||
| spu \
|
||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||
| ubicom32 \
|
||||
| spu \
|
||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||
| ubicom32 \
|
||||
- | v850 | v850e \
|
||||
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||
| we32k \
|
||||
| x86 | xc16x | xstormy16 | xtensa \
|
||||
| z8k | z80)
|
||||
| we32k \
|
||||
| x86 | xc16x | xstormy16 | xtensa \
|
||||
| z8k | z80)
|
||||
@@ -315,8 +328,7 @@ case $basic_machine in
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
|
||||
- # Motorola 68HC11/12.
|
||||
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
@@ -329,7 +341,10 @@ case $basic_machine in
|
||||
strongarm | thumb | xscale)
|
||||
basic_machine=arm-unknown
|
||||
;;
|
||||
strongarm | thumb | xscale)
|
||||
basic_machine=arm-unknown
|
||||
;;
|
||||
-
|
||||
+ xgate)
|
||||
+ basic_machine=$basic_machine-unknown
|
||||
+ os=-none
|
||||
+ ;;
|
||||
xscaleeb)
|
||||
basic_machine=armeb-unknown
|
||||
;;
|
||||
xscaleeb)
|
||||
basic_machine=armeb-unknown
|
||||
;;
|
||||
@@ -352,11 +367,13 @@ case $basic_machine in
|
||||
# Recognize the basic CPU types with company name.
|
||||
580-* \
|
||||
| a29k-* \
|
||||
# Recognize the basic CPU types with company name.
|
||||
580-* \
|
||||
| a29k-* \
|
||||
+ | aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
+ | be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
@@ -365,8 +382,10 @@ case $basic_machine in
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
+ | hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
+ | le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
@@ -400,7 +419,7 @@ case $basic_machine in
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||
| pyramid-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||
| pyramid-* \
|
||||
- | romp-* | rs6000-* | rx-* \
|
||||
+ | rl78-* | romp-* | rs6000-* | rx-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||
@@ -408,10 +427,11 @@ case $basic_machine in
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
|
||||
| tahoe-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
|
||||
| tahoe-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
- | tile-* | tilegx-* \
|
||||
+ | tile*-* \
|
||||
| tron-* \
|
||||
| ubicom32-* \
|
||||
| tron-* \
|
||||
| ubicom32-* \
|
||||
- | v850-* | v850e-* | vax-* \
|
||||
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||
+ | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
@@ -711,7 +731,6 @@ case $basic_machine in
|
||||
i370-ibm* | ibm*)
|
||||
basic_machine=i370-ibm
|
||||
;;
|
||||
i370-ibm* | ibm*)
|
||||
basic_machine=i370-ibm
|
||||
;;
|
||||
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||
i*86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
i*86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
@@ -808,10 +827,18 @@ case $basic_machine in
|
||||
ms1-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
ms1-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
+ msys)
|
||||
+ basic_machine=i386-pc
|
||||
+ os=-msys
|
||||
+ ;;
|
||||
mvs)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
mvs)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
+ nacl)
|
||||
+ basic_machine=le32-unknown
|
||||
+ os=-nacl
|
||||
+ ;;
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
@@ -1120,13 +1147,8 @@ case $basic_machine in
|
||||
basic_machine=t90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
basic_machine=t90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
- # This must be matched before tile*.
|
||||
- tilegx*)
|
||||
- basic_machine=tilegx-unknown
|
||||
- os=-linux-gnu
|
||||
- ;;
|
||||
tile*)
|
||||
tile*)
|
||||
- basic_machine=tile-unknown
|
||||
+ basic_machine=$basic_machine-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
tx39)
|
||||
os=-linux-gnu
|
||||
;;
|
||||
tx39)
|
||||
@@ -1336,7 +1358,7 @@ case $os in
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -mingw32* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
@@ -1521,6 +1543,9 @@ case $basic_machine in
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
+ hexagon-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
tic54x-*)
|
||||
os=-coff
|
||||
;;
|
||||
tic54x-*)
|
||||
os=-coff
|
||||
;;
|
||||
@@ -1548,9 +1573,6 @@ case $basic_machine in
|
||||
;;
|
||||
m68000-sun)
|
||||
os=-sunos3
|
||||
;;
|
||||
m68000-sun)
|
||||
os=-sunos3
|
||||
- # This also exists in the configure program, but was not the
|
||||
- # default.
|
||||
- # os=-sunos4
|
||||
;;
|
||||
m68*-cisco)
|
||||
os=-aout
|
||||
;;
|
||||
m68*-cisco)
|
||||
os=-aout
|
||||
|
|
|
@ -10,29 +10,29 @@
|
|||
# Find out which ABI we are using.
|
||||
echo 'int i;' > conftest.$ac_ext
|
||||
@@ -8009,7 +8009,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
- ppc64-*linux*|powerpc64-*linux*)
|
||||
+ powerpc64le-*linux*)
|
||||
+ LD="${LD-ld} -m elf32lppclinux"
|
||||
+ ;;
|
||||
+ powerpc64-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
@@ -8028,7 +8031,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
- ppc*-*linux*|powerpc*-*linux*)
|
||||
+ powerpcle-*linux*)
|
||||
+ LD="${LD-ld} -m elf64lppc"
|
||||
+ ;;
|
||||
+ powerpc-*linux*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
--- isl-0.11.1/config.sub.jj 2014-04-10 20:44:52.000000000 +0200
|
||||
+++ isl-0.11.1/config.sub 2014-04-10 10:38:39.203978206 +0200
|
||||
@@ -1,24 +1,18 @@
|
||||
|
@ -108,214 +108,214 @@
|
|||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
@@ -156,7 +149,7 @@ case $os in
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
- -apple | -axis | -knuth | -cray | -microblaze)
|
||||
+ -apple | -axis | -knuth | -cray | -microblaze*)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
@@ -259,10 +252,12 @@ case $basic_machine in
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
- | be32 | be64 \
|
||||
+ | arc | arceb \
|
||||
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
+ | avr | avr32 \
|
||||
+ | be32 | be64 \
|
||||
| bfin \
|
||||
| bfin \
|
||||
- | c4x | clipper \
|
||||
+ | c4x | c8051 | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
@@ -270,10 +265,11 @@ case $basic_machine in
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
+ | k1om \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
- | maxq | mb | microblaze | mcore | mep | metag \
|
||||
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
@@ -291,16 +287,17 @@ case $basic_machine in
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
+ | mipsr5900 | mipsr5900el \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
- | nios | nios2 \
|
||||
+ | nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
- | or32 \
|
||||
+ | or1k | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pyramid \
|
||||
@@ -328,7 +325,7 @@ case $basic_machine in
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
||||
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
@@ -370,13 +367,13 @@ case $basic_machine in
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
- | clipper-* | craynv-* | cydra-* \
|
||||
+ | c8051-* | clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
@@ -385,11 +382,13 @@ case $basic_machine in
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
+ | k1om-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
|
||||
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
|
||||
+ | microblaze-* | microblazeel-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
@@ -407,12 +406,13 @@ case $basic_machine in
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
+ | mipsr5900-* | mipsr5900el-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
- | nios-* | nios2-* \
|
||||
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| orion-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| orion-* \
|
||||
@@ -788,11 +788,15 @@ case $basic_machine in
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
- microblaze)
|
||||
+ microblaze*)
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
+ mingw64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ os=-mingw64
|
||||
+ ;;
|
||||
mingw32)
|
||||
mingw32)
|
||||
- basic_machine=i386-pc
|
||||
+ basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
@@ -828,7 +832,7 @@ case $basic_machine in
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
- basic_machine=i386-pc
|
||||
+ basic_machine=i686-pc
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
@@ -1019,7 +1023,11 @@ case $basic_machine in
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
- rdos)
|
||||
+ rdos | rdos64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ os=-rdos
|
||||
+ ;;
|
||||
+ rdos32)
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
@@ -1346,21 +1354,21 @@ case $os in
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
- | -sym* | -kopensolaris* \
|
||||
+ | -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
- | -openbsd* | -solidbsd* \
|
||||
+ | -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
- | -mingw32* | -linux-gnu* | -linux-android* \
|
||||
- | -linux-newlib* | -linux-uclibc* \
|
||||
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
@@ -1492,9 +1500,6 @@ case $os in
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
- -kaos*)
|
||||
- os=-kaos
|
||||
- ;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
@@ -1543,6 +1548,9 @@ case $basic_machine in
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
+ c8051-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
@@ -1586,6 +1594,9 @@ case $basic_machine in
|
||||
mips*-*)
|
||||
os=-elf
|
||||
;;
|
||||
mips*-*)
|
||||
os=-elf
|
||||
;;
|
||||
+ or1k-*)
|
||||
+ os=-elf
|
||||
+ ;;
|
||||
or32-*)
|
||||
os=-coff
|
||||
;;
|
||||
or32-*)
|
||||
os=-coff
|
||||
;;
|
||||
--- isl-0.11.1/config.guess.jj 2014-04-10 20:44:52.000000000 +0200
|
||||
+++ isl-0.11.1/config.guess 2014-04-10 10:38:36.329993540 +0200
|
||||
@@ -1,14 +1,12 @@
|
||||
|
@ -403,65 +403,65 @@
|
|||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit ;;
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit ;;
|
||||
+ *:Bitrig:*:*)
|
||||
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
||||
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
|
||||
+ exit ;;
|
||||
*:OpenBSD:*:*)
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
- arm:riscos:*:*|arm:RISCOS:*:*)
|
||||
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
|
||||
echo arm-unknown-riscos
|
||||
exit ;;
|
||||
echo arm-unknown-riscos
|
||||
exit ;;
|
||||
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
|
||||
@@ -801,6 +820,9 @@ EOF
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit ;;
|
||||
+ *:MINGW64*:*)
|
||||
+ echo ${UNAME_MACHINE}-pc-mingw64
|
||||
+ exit ;;
|
||||
*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
@@ -852,21 +874,21 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:GNU:*:*)
|
||||
# the GNU system
|
||||
# the GNU system
|
||||
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:GNU/*:*:*)
|
||||
# other systems with GNU libc and userland
|
||||
# other systems with GNU libc and userland
|
||||
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
aarch64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
aarch64_be:Linux:*:*)
|
||||
UNAME_MACHINE=aarch64_be
|
||||
UNAME_MACHINE=aarch64_be
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
alpha:Linux:*:*)
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
@@ -879,59 +901,54 @@ EOF
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
||||
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||
|
@ -469,46 +469,46 @@
|
|||
+ exit ;;
|
||||
+ arc:Linux:*:* | arceb:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
arm*:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
|
||||
else
|
||||
else
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
cris:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
crisv32:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
frv:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
hexagon:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
- LIBC=gnu
|
||||
- eval $set_cc_for_build
|
||||
|
@ -520,58 +520,58 @@
|
|||
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
||||
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
||||
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
ia64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
m32r*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
m68*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
mips:Linux:*:* | mips64:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
eval $set_cc_for_build
|
||||
@@ -950,54 +967,63 @@ EOF
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||
;;
|
||||
;;
|
||||
+ or1k:Linux:*:*)
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
+ exit ;;
|
||||
or32:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
padre:Linux:*:*)
|
||||
- echo sparc-unknown-linux-gnu
|
||||
+ echo sparc-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||
- echo hppa64-unknown-linux-gnu
|
||||
+ echo hppa64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
||||
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
||||
- *) echo hppa-unknown-linux-gnu ;;
|
||||
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
|
||||
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
|
||||
+ *) echo hppa-unknown-linux-${LIBC} ;;
|
||||
esac
|
||||
exit ;;
|
||||
esac
|
||||
exit ;;
|
||||
ppc64:Linux:*:*)
|
||||
- echo powerpc64-unknown-linux-gnu
|
||||
+ echo powerpc64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
ppc:Linux:*:*)
|
||||
- echo powerpc-unknown-linux-gnu
|
||||
+ echo powerpc-unknown-linux-${LIBC}
|
||||
|
@ -581,55 +581,55 @@
|
|||
+ exit ;;
|
||||
+ ppcle:Linux:*:*)
|
||||
+ echo powerpcle-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
s390:Linux:*:* | s390x:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-ibm-linux
|
||||
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sh64*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sh*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
tile*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
vax:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
- echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
exit ;;
|
||||
i*86:DYNIX/ptx:4*:*)
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
@@ -1201,6 +1227,9 @@ EOF
|
||||
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
|
||||
echo i586-pc-haiku
|
||||
exit ;;
|
||||
echo i586-pc-haiku
|
||||
exit ;;
|
||||
+ x86_64:Haiku:*:*)
|
||||
+ echo x86_64-unknown-haiku
|
||||
+ exit ;;
|
||||
SX-4:SUPER-UX:*:*)
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo sx4-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
@@ -1227,19 +1256,21 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
*:Darwin:*:*)
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
- case $UNAME_PROCESSOR in
|
||||
- i386)
|
||||
- eval $set_cc_for_build
|
||||
|
@ -658,11 +658,11 @@
|
|||
+ esac
|
||||
+ fi
|
||||
+ fi
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit ;;
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||
@@ -1330,9 +1361,6 @@ EOF
|
||||
exit ;;
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
-#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
|
@ -683,26 +683,26 @@
|
|||
# Find out which ABI we are using.
|
||||
echo 'int i;' > conftest.$ac_ext
|
||||
@@ -1282,7 +1282,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_i386"
|
||||
;;
|
||||
- ppc64-*linux*|powerpc64-*linux*)
|
||||
+ powerpc64le-*linux*)
|
||||
+ LD="${LD-ld} -m elf32lppclinux"
|
||||
+ ;;
|
||||
+ powerpc64-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
LD="${LD-ld} -m elf32ppclinux"
|
||||
;;
|
||||
s390x-*linux*)
|
||||
@@ -1301,7 +1304,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
x86_64-*linux*)
|
||||
LD="${LD-ld} -m elf_x86_64"
|
||||
;;
|
||||
- ppc*-*linux*|powerpc*-*linux*)
|
||||
+ powerpcle-*linux*)
|
||||
+ LD="${LD-ld} -m elf64lppc"
|
||||
+ ;;
|
||||
+ powerpc-*linux*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
LD="${LD-ld} -m elf64ppc"
|
||||
;;
|
||||
s390*-*linux*|s390*-*tpf*)
|
||||
|
|
176
SPECS/gcc.spec
176
SPECS/gcc.spec
|
@ -2,10 +2,10 @@
|
|||
%global SVNREV 225304
|
||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||
# %{release}, append them after %{gcc_release} on Release: line.
|
||||
%global gcc_release 28
|
||||
%global gcc_release 36
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
%global _performance_build 1
|
||||
%global multilib_64_archs sparc64 s390x
|
||||
%global multilib_64_archs sparc64
|
||||
%ifarch %{ix86} x86_64 ia64 ppc ppc64 ppc64le ppc64p7 alpha aarch64
|
||||
%global build_ada 0
|
||||
%else
|
||||
|
@ -26,7 +26,7 @@
|
|||
%else
|
||||
%global build_libquadmath 0
|
||||
%endif
|
||||
%ifarch %{ix86} x86_64 ppc ppc64
|
||||
%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7
|
||||
%global build_libasan 1
|
||||
%else
|
||||
%global build_libasan 0
|
||||
|
@ -47,7 +47,7 @@
|
|||
%global build_libitm 0
|
||||
%endif
|
||||
%global build_cloog 1
|
||||
%global build_libstdcxx_docs 0
|
||||
%global build_libstdcxx_docs 1
|
||||
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
|
||||
%global attr_ifunc 1
|
||||
%else
|
||||
|
@ -59,7 +59,7 @@
|
|||
# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc.spec
|
||||
%global bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
|
||||
%global build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
|
||||
%ifarch s390x
|
||||
%ifarch s390
|
||||
%global multilib_32_arch s390
|
||||
%endif
|
||||
%ifarch sparc64
|
||||
|
@ -68,9 +68,9 @@
|
|||
%ifarch ppc
|
||||
%global multilib_32_arch ppc
|
||||
%endif
|
||||
#%ifarch x86_64
|
||||
#%global multilib_32_arch i686
|
||||
#%endif
|
||||
%ifarch i386
|
||||
%global multilib_32_arch i686
|
||||
%endif
|
||||
Summary: Various compilers (C, C++, Objective-C, Java, ...)
|
||||
Name: gcc
|
||||
%global gcc_version 4.8.5
|
||||
|
@ -258,6 +258,12 @@ Patch62: gcc48-pr80362.patch
|
|||
Patch63: gcc48-pr80692.patch
|
||||
Patch64: gcc48-pr82274.patch
|
||||
Patch65: gcc48-pr78416.patch
|
||||
Patch66: gcc48-rh1546728.patch
|
||||
Patch67: gcc48-rh1555397.patch
|
||||
Patch68: gcc48-pr81395.patch
|
||||
Patch69: gcc48-pr72717.patch
|
||||
Patch70: gcc48-pr66840.patch
|
||||
Patch71: gcc48-rh1546372.patch
|
||||
|
||||
Patch1000: fastjar-0.97-segfault.patch
|
||||
Patch1001: fastjar-0.97-len1.patch
|
||||
|
@ -295,6 +301,12 @@ Patch1320: gcc48-rh1469697-20.patch
|
|||
Patch1321: gcc48-rh1469697-21.patch
|
||||
Patch1322: gcc48-rh1469697-22.patch
|
||||
Patch1323: gcc48-rh1469697-23.patch
|
||||
Patch1324: gcc48-rh1537828-1.patch
|
||||
Patch1325: gcc48-rh1537828-2.patch
|
||||
Patch1326: gcc48-rh1537828-3.patch
|
||||
Patch1327: gcc48-rh1537828-4.patch
|
||||
Patch1328: gcc48-rh1537828-5.patch
|
||||
Patch1329: gcc48-rh1537828-10.patch
|
||||
|
||||
Patch1401: gcc48-rh1535655-1.patch
|
||||
Patch1402: gcc48-rh1535655-2.patch
|
||||
|
@ -302,6 +314,11 @@ Patch1403: gcc48-rh1535655-3.patch
|
|||
Patch1404: gcc48-rh1535655-4.patch
|
||||
Patch1405: gcc48-rh1535655-5.patch
|
||||
Patch1406: gcc48-rh1535655-6.patch
|
||||
Patch1407: gcc48-rh1552021.patch
|
||||
Patch1408: gcc48-rh1537828-6.patch
|
||||
Patch1409: gcc48-rh1537828-7.patch
|
||||
Patch1410: gcc48-rh1537828-8.patch
|
||||
Patch1411: gcc48-rh1537828-9.patch
|
||||
|
||||
# On ARM EABI systems, we do want -gnueabi to be part of the
|
||||
# target triple.
|
||||
|
@ -311,7 +328,10 @@ Patch1406: gcc48-rh1535655-6.patch
|
|||
%ifarch sparcv9
|
||||
%global gcc_target_platform sparc64-%{_vendor}-%{_target_os}
|
||||
%endif
|
||||
%ifarch ppc ppc64
|
||||
%ifarch ppc ppc64p7
|
||||
%global gcc_target_platform ppc64-%{_vendor}-%{_target_os}
|
||||
%endif
|
||||
%ifarch ppc64
|
||||
%global gcc_target_platform ppc64-powerel-%{_target_os}
|
||||
%endif
|
||||
%ifarch ppc64le
|
||||
|
@ -968,7 +988,7 @@ package or when debugging this package.
|
|||
%patch3 -p0 -b .rh330771~
|
||||
%patch4 -p0 -b .i386-libgomp~
|
||||
%patch5 -p0 -b .sparc-config-detection~
|
||||
#%patch6 -p0 -b .libgomp-omp_h-multilib~
|
||||
%patch6 -p0 -b .libgomp-omp_h-multilib~
|
||||
%patch7 -p0 -b .libtool-no-rpath~
|
||||
%if %{build_cloog}
|
||||
%patch8 -p0 -b .cloog-dl~
|
||||
|
@ -979,7 +999,7 @@ package or when debugging this package.
|
|||
%patch11 -p0 -b .libstdc++-docs~
|
||||
%endif
|
||||
%patch12 -p0 -b .no-add-needed~
|
||||
#%patch13 -p0 -b .pr56564~
|
||||
%patch13 -p0 -b .pr56564~
|
||||
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
|
||||
%patch14 -p0 -b .color-auto~
|
||||
%endif
|
||||
|
@ -991,8 +1011,8 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go
|
|||
%patch18 -p0 -b .aarch64-ada~
|
||||
%endif
|
||||
%patch19 -p0 -b .aarch64-async-unw-tables~
|
||||
#%patch20 -p0 -b .aarch64-unwind-opt~
|
||||
#%patch21 -p0 -b .rh1243366~
|
||||
%patch20 -p0 -b .aarch64-unwind-opt~
|
||||
%patch21 -p0 -b .rh1243366~
|
||||
%patch22 -p0 -b .rh1180633~
|
||||
%patch23 -p0 -b .rh1278872~
|
||||
%patch24 -p0 -b .pr67281~
|
||||
|
@ -1001,14 +1021,14 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go
|
|||
%patch27 -p0 -b .pr53477~
|
||||
touch -r %{PATCH27} libstdc++-v3/python/libstdcxx/v6/printers.py
|
||||
%patch28 -p0 -b .rh1296211~
|
||||
#%patch29 -p0 -b .rh1304449~
|
||||
#%patch30 -p0 -b .s390-z13~
|
||||
%patch29 -p0 -b .rh1304449~
|
||||
%patch30 -p0 -b .s390-z13~
|
||||
%patch31 -p0 -b .rh1312850~
|
||||
%patch32 -p0 -b .pr65142~
|
||||
%patch33 -p0 -b .pr52714~
|
||||
%patch34 -p0 -b .rh1344807~
|
||||
#%patch35 -p0 -b .libgomp-20160715~
|
||||
#%patch36 -p0 -b .pr63293~
|
||||
%patch35 -p0 -b .libgomp-20160715~
|
||||
%patch36 -p0 -b .pr63293~
|
||||
%patch37 -p0 -b .pr72863~
|
||||
%patch38 -p0 -b .pr78064~
|
||||
%patch39 -p0 -b .pr62258~
|
||||
|
@ -1026,8 +1046,8 @@ touch -r %{PATCH27} libstdc++-v3/python/libstdcxx/v6/printers.py
|
|||
%patch51 -p0 -b .rh1457969~
|
||||
%patch52 -p0 -b .pr69644~
|
||||
%patch53 -p0 -b .rh1487434~
|
||||
#%patch54 -p0 -b .rh1468546~
|
||||
#%patch55 -p0 -b .rh1469384~
|
||||
%patch54 -p0 -b .rh1468546~
|
||||
%patch55 -p0 -b .rh1469384~
|
||||
%patch56 -p0 -b .rh1491395~
|
||||
%patch57 -p0 -b .rh1482762~
|
||||
%patch58 -p0 -b .pr77375~
|
||||
|
@ -1038,6 +1058,12 @@ touch -r %{PATCH27} libstdc++-v3/python/libstdcxx/v6/printers.py
|
|||
%patch63 -p0 -b .pr80692~
|
||||
%patch64 -p0 -b .pr82274~
|
||||
%patch65 -p0 -b .pr78416~
|
||||
%patch66 -p0 -b .rh1546728~
|
||||
%patch67 -p0 -b .rh1555397~
|
||||
%patch68 -p0 -b .pr81395~
|
||||
%patch69 -p0 -b .pr72717~
|
||||
%patch70 -p0 -b .pr66840~
|
||||
%patch71 -p0 -b .rh1546372~
|
||||
|
||||
%if 0%{?_enable_debug_packages}
|
||||
cat > split-debuginfo.sh <<\EOF
|
||||
|
@ -1091,10 +1117,10 @@ rm libjava/testsuite/libjava.lang/PR35020*
|
|||
|
||||
tar xzf %{SOURCE4}
|
||||
|
||||
#%patch1000 -p0 -b .fastjar-0.97-segfault~
|
||||
%patch1000 -p0 -b .fastjar-0.97-segfault~
|
||||
%patch1001 -p0 -b .fastjar-0.97-len1~
|
||||
%patch1002 -p0 -b .fastjar-0.97-filename0~
|
||||
#%patch1003 -p0 -b .fastjar-CVE-2010-0831~
|
||||
%patch1003 -p0 -b .fastjar-CVE-2010-0831~
|
||||
%patch1004 -p0 -b .fastjar-man~
|
||||
%patch1005 -p0 -b .fastjar-0.97-aarch64-config~
|
||||
%patch1006 -p0 -b .fastjar-0.97-ppc64le-config~
|
||||
|
@ -1118,26 +1144,38 @@ tar xjf %{SOURCE10}
|
|||
%patch1308 -p1 -b .stack-clash-8~
|
||||
%patch1309 -p1 -b .stack-clash-9~
|
||||
%patch1310 -p1 -b .stack-clash-10~
|
||||
#%patch1311 -p1 -b .stack-clash-11~
|
||||
%patch1311 -p1 -b .stack-clash-11~
|
||||
%patch1312 -p1 -b .stack-clash-12~
|
||||
%patch1313 -p1 -b .stack-clash-13~
|
||||
%patch1314 -p1 -b .stack-clash-14~
|
||||
%patch1315 -p1 -b .stack-clash-15~
|
||||
#%patch1316 -p1 -b .stack-clash-16~
|
||||
%patch1316 -p1 -b .stack-clash-16~
|
||||
%patch1317 -p1 -b .stack-clash-17~
|
||||
#%patch1318 -p1 -b .stack-clash-18~
|
||||
#%patch1319 -p1 -b .stack-clash-19~
|
||||
%patch1318 -p1 -b .stack-clash-18~
|
||||
%patch1319 -p1 -b .stack-clash-19~
|
||||
%patch1320 -p1 -b .stack-clash-20~
|
||||
%patch1321 -p1 -b .stack-clash-21~
|
||||
%patch1322 -p1 -b .stack-clash-22~
|
||||
%patch1323 -p1 -b .stack-clash-23~
|
||||
%patch1324 -p1 -b .stack-clash-24~
|
||||
%patch1325 -p1 -b .stack-clash-25~
|
||||
%patch1326 -p1 -b .stack-clash-26~
|
||||
%patch1327 -p1 -b .stack-clash-27~
|
||||
%patch1328 -p1 -b .stack-clash-28~
|
||||
%patch1329 -p1 -b .stack-clash-29~
|
||||
|
||||
%patch1401 -p1 -b .retpolines-1~
|
||||
#%patch1402 -p1 -b .retpolines-2~
|
||||
#%patch1403 -p1 -b .retpolines-3~
|
||||
#%patch1404 -p1 -b .retpolines-4~
|
||||
%patch1402 -p1 -b .retpolines-2~
|
||||
%patch1403 -p1 -b .retpolines-3~
|
||||
%patch1404 -p1 -b .retpolines-4~
|
||||
%patch1405 -p1 -b .retpolines-5~
|
||||
#%patch1406 -p1 -b .retpolines-6~
|
||||
%patch1406 -p1 -b .retpolines-6~
|
||||
%patch1407 -p0 -b .retpolines-7~
|
||||
%patch1408 -p0 -b .retpolines-8~
|
||||
%patch1409 -p1 -b .retpolines-9~
|
||||
%patch1410 -p1 -b .retpolines-10~
|
||||
%patch1411 -p1 -b .retpolines-11~
|
||||
|
||||
|
||||
sed -i -e 's/4\.8\.5/4.8.5/' gcc/BASE-VER
|
||||
echo 'PowerEL %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
||||
|
@ -1192,7 +1230,6 @@ fi
|
|||
rm -f gcc/testsuite/go.test/test/chan/goroutines.go
|
||||
|
||||
%build
|
||||
|
||||
# Undo the broken autoconf change in recent Fedora versions
|
||||
export CONFIG_SITE=NONE
|
||||
|
||||
|
@ -1248,13 +1285,10 @@ ISL_FLAG_PIC=-fPIC
|
|||
%else
|
||||
ISL_FLAG_PIC=-fpic
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
CLOOG_OPT_FLAGS="-m64 -O3 -march=core2 -mtune=core2 -mmmx -msse -msse2 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx"
|
||||
%endif
|
||||
cd isl-build
|
||||
../../isl-%{isl_version}/configure --disable-shared \
|
||||
CC=/usr/bin/gcc CXX=/usr/bin/g++ \
|
||||
CFLAGS="${CLOOG_OPT_FLAGS} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
|
||||
CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
|
||||
make %{?_smp_mflags}
|
||||
make install
|
||||
cd ..
|
||||
|
@ -1272,7 +1306,7 @@ isl_prefix=`cd ../isl-install; pwd` \
|
|||
../../cloog-%{cloog_version}/configure --with-isl=system \
|
||||
--with-isl-prefix=`cd ../isl-install; pwd` \
|
||||
CC=/usr/bin/gcc CXX=/usr/bin/g++ \
|
||||
CFLAGS="${CLOOG_OPT_FLAGS}" CXXFLAGS="${CLOOG_OPT_FLAGS}" \
|
||||
CFLAGS="${CFLAGS:-%optflags}" CXXFLAGS="${CXXFLAGS:-%optflags}" \
|
||||
--prefix=`cd ..; pwd`/cloog-install
|
||||
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
|
||||
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
|
||||
|
@ -1358,9 +1392,11 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
|
|||
%else
|
||||
--without-isl --without-cloog \
|
||||
%endif
|
||||
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
|
||||
%if %{attr_ifunc}
|
||||
--enable-gnu-indirect-function \
|
||||
%endif
|
||||
%endif
|
||||
%ifarch %{arm}
|
||||
--disable-sjlj-exceptions \
|
||||
%endif
|
||||
|
@ -1390,7 +1426,7 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
|
|||
%endif
|
||||
%ifarch ppc
|
||||
%if 0%{?rhel} >= 7
|
||||
--with-cpu-32=power6 --with-tune-32=power6 --with-cpu-64=power7 --with-tune-64=power7 \
|
||||
--with-cpu-32=power7 --with-tune-32=power7 --with-cpu-64=power7 --with-tune-64=power7 \
|
||||
%endif
|
||||
%if 0%{?rhel} == 6
|
||||
--with-cpu-32=power4 --with-tune-32=power6 --with-cpu-64=power4 --with-tune-64=power6 \
|
||||
|
@ -1399,11 +1435,11 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
|
|||
%ifarch ppc
|
||||
--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
|
||||
%endif
|
||||
%ifarch %{ix86} x86_64
|
||||
%ifarch %{ix86}
|
||||
--with-tune=generic \
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
--disable-multilib \
|
||||
--with-tune=core2 --disable-multilib \
|
||||
%endif
|
||||
%if 0%{?rhel} >= 7
|
||||
%ifarch %{ix86}
|
||||
|
@ -1417,7 +1453,7 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
|
|||
--with-arch=i686 \
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
--with-arch_32=i686 \
|
||||
--with-arch=core2 --with-arch_32=core2 \
|
||||
%endif
|
||||
%endif
|
||||
%ifarch s390 s390x
|
||||
|
@ -1994,7 +2030,7 @@ ln -sf ../`echo ../../../../lib64/libgij.so.14.* | sed s~/../lib64/~/~` 32/libgi
|
|||
mv -f %{buildroot}%{_prefix}/lib/libobjc.*a 32/
|
||||
mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
ln -sf ../lib32/libgfortran.a 32/libgfortran.a
|
||||
ln -sf lib64/libgfortran.a libgfortran.a
|
||||
ln -sf ../lib32/libstdc++.a 32/libstdc++.a
|
||||
|
@ -2471,7 +2507,7 @@ fi
|
|||
%ifarch sparc64 sparcv9
|
||||
%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
|
||||
%endif
|
||||
%ifarch ppc64 ppc64p7
|
||||
%ifarch ppc
|
||||
%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
|
||||
%endif
|
||||
%{_prefix}/bin/%{gcc_target_platform}-gcc
|
||||
|
@ -2544,7 +2580,7 @@ fi
|
|||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/fxsrintrin.h
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsaveintrin.h
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsaveoptintrin.h
|
||||
#%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pkuintrin.h
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pkuintrin.h
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
|
||||
|
@ -2810,7 +2846,7 @@ fi
|
|||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libsupc++.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libsupc++.a
|
||||
|
@ -2936,7 +2972,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgfortran.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgfortran.a
|
||||
%endif
|
||||
|
@ -3072,7 +3108,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so
|
||||
%endif
|
||||
|
@ -3156,7 +3192,7 @@ fi
|
|||
%exclude %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adalib/libgnat.a
|
||||
%exclude %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adalib/libgnarl.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adainclude
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adalib
|
||||
|
@ -3184,7 +3220,7 @@ fi
|
|||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adalib/libgnat.a
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adalib/libgnarl.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adalib
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adalib/libgnat.a
|
||||
|
@ -3237,7 +3273,7 @@ fi
|
|||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflap.a
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflapth.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflap.a
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflapth.a
|
||||
|
@ -3282,7 +3318,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libquadmath.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libquadmath.a
|
||||
%endif
|
||||
|
@ -3325,7 +3361,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libitm.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libitm.a
|
||||
%endif
|
||||
|
@ -3351,7 +3387,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libatomic.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libatomic.a
|
||||
%endif
|
||||
|
@ -3378,7 +3414,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libasan.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libasan.a
|
||||
%endif
|
||||
|
@ -3461,7 +3497,7 @@ fi
|
|||
%endif
|
||||
%{_prefix}/%{_lib}/go/%{gcc_version}/%{gcc_target_platform}
|
||||
%ifarch %{multilib_64_archs}
|
||||
%ifnarch sparc64 ppc64 ppc64p7
|
||||
%ifnarch sparc64
|
||||
%dir %{_prefix}/lib/go
|
||||
%dir %{_prefix}/lib/go/%{gcc_version}
|
||||
%if "%{version}" != "%{gcc_version}"
|
||||
|
@ -3474,7 +3510,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgobegin.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgobegin.a
|
||||
%endif
|
||||
|
@ -3495,7 +3531,7 @@ fi
|
|||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgo.a
|
||||
%endif
|
||||
%ifarch sparc64 ppc64 ppc64p7
|
||||
%ifarch sparc64
|
||||
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
|
||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgo.a
|
||||
%endif
|
||||
|
@ -3522,6 +3558,36 @@ fi
|
|||
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
|
||||
|
||||
%changelog
|
||||
* Tue Jun 12 2018 Marek Polacek <polacek@redhat.com> 4.8.5-36
|
||||
- back out the last change
|
||||
|
||||
* Tue Jun 5 2018 Marek Polacek <polacek@redhat.com> 4.8.5-35
|
||||
- adjust C++11 signatures to take a const_iterator (#1575888)
|
||||
|
||||
* Thu Apr 26 2018 Marek Polacek <polacek@redhat.com> 4.8.5-34
|
||||
- fix infinite looping in -fipa-cp-clone (#1546372)
|
||||
- don't look for vsld gcc.target/powerpc/pr72717.c
|
||||
|
||||
* Wed Apr 25 2018 Jeff Law <law@redhat.com> 4.8.5-33
|
||||
- Fix two minor problems with the backported spectre updates
|
||||
from upstream. (#1537828)
|
||||
|
||||
* Thu Apr 19 2018 Jeff Law <law@redhat.com> 4.8.5-32
|
||||
- Backport various stack-clash and spectre fixes from upstream
|
||||
(#1537828)
|
||||
|
||||
* Tue Apr 10 2018 Marek Polacek <polacek@redhat.com> 4.8.5-31
|
||||
- backport s390 -mpic-data-is-text-relative feature (#1555397)
|
||||
- fix crash when write follows large read (#1463706)
|
||||
- fix emit_move_insn ICE (#1565536)
|
||||
- add missing rs6000-cpus.def (#1512202)
|
||||
|
||||
* Wed Apr 4 2018 Marek Polacek <polacek@redhat.com> 4.8.5-30
|
||||
- fix ICE when generating a vector shift by scalar (#1546728)
|
||||
|
||||
* Tue Mar 27 2018 Jeff Law <law@redhat.com> 4.8.5-29
|
||||
- s390 retpoline support for spectre mitigation (#1552021)
|
||||
|
||||
* Fri Jan 19 2018 Marek Polacek <polacek@redhat.com> 4.8.5-28
|
||||
- Minor testsuite fixes to clean up test results (#1469697)
|
||||
- retpoline support for spectre mitigation (#1535655)
|
||||
|
|
687
SPECS/glibc.spec
687
SPECS/glibc.spec
|
@ -1,6 +1,6 @@
|
|||
%define glibcsrcdir glibc-2.17-c758a686
|
||||
%define glibcversion 2.17
|
||||
%define glibcrelease 222%{?dist}
|
||||
%define glibcrelease 260%{?dist}
|
||||
##############################################################################
|
||||
# We support the following options:
|
||||
# --with/--without,
|
||||
|
@ -33,12 +33,6 @@
|
|||
%undefine with_valgrind
|
||||
%endif
|
||||
%endif
|
||||
%if %{with werror}
|
||||
%ifarch s390x
|
||||
# The 64-bit s390x builds are not -Werror clean yet.
|
||||
%undefine with_werror
|
||||
%endif
|
||||
%endif
|
||||
%if %{with bootstrap}
|
||||
# Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping
|
||||
%undefine with_benchtests
|
||||
|
@ -221,7 +215,6 @@ Patch0028: glibc-fedora-localedata-rh61908.patch
|
|||
Patch0030: glibc-fedora-uname-getrlimit.patch
|
||||
Patch0031: glibc-fedora-__libc_multiple_libcs.patch
|
||||
Patch0032: glibc-fedora-elf-rh737223.patch
|
||||
Patch0033: glibc-fedora-elf-ORIGIN.patch
|
||||
Patch0034: glibc-fedora-elf-init-hidden_undef.patch
|
||||
|
||||
# Needs to be sent upstream
|
||||
|
@ -260,6 +253,11 @@ Patch0066: glibc-rh1227699.patch
|
|||
# CVE-2015-7547
|
||||
Patch0067: glibc-rh1296031.patch
|
||||
|
||||
# releng patch from Fedora
|
||||
Patch0068: glibc-rh1349982.patch
|
||||
|
||||
# These changes were brought forward from RHEL 6 for compatibility
|
||||
Patch0069: glibc-rh1448107.patch
|
||||
##############################################################################
|
||||
#
|
||||
# Patches from upstream
|
||||
|
@ -1161,6 +1159,264 @@ Patch1900: glibc-rh1534635.patch
|
|||
Patch1901: glibc-rh1529982.patch
|
||||
|
||||
Patch1902: glibc-rh1523119-compat-symbols.patch
|
||||
Patch2500: glibc-rh1505492-nscd_stat.patch
|
||||
Patch2501: glibc-rh1564638.patch
|
||||
Patch2502: glibc-rh1566623.patch
|
||||
Patch2503: glibc-rh1349967.patch
|
||||
Patch2504: glibc-rh1505492-undef-malloc.patch
|
||||
Patch2505: glibc-rh1505492-undef-elf-dtv-resize.patch
|
||||
Patch2506: glibc-rh1505492-undef-elision.patch
|
||||
Patch2507: glibc-rh1505492-undef-max_align_t.patch
|
||||
Patch2508: glibc-rh1505492-unused-tst-default-attr.patch
|
||||
Patch2509: glibc-rh1505492-prototypes-rtkaio.patch
|
||||
Patch2510: glibc-rh1505492-zerodiv-log.patch
|
||||
Patch2511: glibc-rh1505492-selinux.patch
|
||||
Patch2512: glibc-rh1505492-undef-abi.patch
|
||||
Patch2513: glibc-rh1505492-unused-math.patch
|
||||
Patch2514: glibc-rh1505492-prototypes-1.patch
|
||||
Patch2515: glibc-rh1505492-uninit-intl-plural.patch
|
||||
Patch2516: glibc-rh1505492-undef-1.patch
|
||||
Patch2517: glibc-rh1505492-undef-2.patch
|
||||
Patch2518: glibc-rh1505492-bounded-1.patch
|
||||
Patch2519: glibc-rh1505492-bounded-2.patch
|
||||
Patch2520: glibc-rh1505492-bounded-3.patch
|
||||
Patch2521: glibc-rh1505492-bounded-4.patch
|
||||
Patch2522: glibc-rh1505492-undef-3.patch
|
||||
Patch2523: glibc-rh1505492-bounded-5.patch
|
||||
Patch2524: glibc-rh1505492-bounded-6.patch
|
||||
Patch2525: glibc-rh1505492-bounded-7.patch
|
||||
Patch2526: glibc-rh1505492-bounded-8.patch
|
||||
Patch2527: glibc-rh1505492-unused-1.patch
|
||||
Patch2528: glibc-rh1505492-bounded-9.patch
|
||||
Patch2529: glibc-rh1505492-bounded-10.patch
|
||||
Patch2530: glibc-rh1505492-bounded-11.patch
|
||||
Patch2531: glibc-rh1505492-bounded-12.patch
|
||||
Patch2532: glibc-rh1505492-bounded-13.patch
|
||||
Patch2533: glibc-rh1505492-unused-2.patch
|
||||
Patch2534: glibc-rh1505492-bounded-14.patch
|
||||
Patch2535: glibc-rh1505492-bounded-15.patch
|
||||
Patch2536: glibc-rh1505492-bounded-16.patch
|
||||
Patch2537: glibc-rh1505492-bounded-17.patch
|
||||
Patch2538: glibc-rh1505492-malloc_size_t.patch
|
||||
Patch2539: glibc-rh1505492-malloc_ptrdiff_t.patch
|
||||
Patch2540: glibc-rh1505492-prototypes-2.patch
|
||||
Patch2541: glibc-rh1505492-prototypes-libc_fatal.patch
|
||||
Patch2542: glibc-rh1505492-getlogin.patch
|
||||
Patch2543: glibc-rh1505492-undef-4.patch
|
||||
Patch2544: glibc-rh1505492-register.patch
|
||||
Patch2545: glibc-rh1505492-prototypes-3.patch
|
||||
Patch2546: glibc-rh1505492-unused-3.patch
|
||||
Patch2547: glibc-rh1505492-ports-move-powerpc.patch
|
||||
Patch2548: glibc-rh1505492-unused-4.patch
|
||||
Patch2549: glibc-rh1505492-systemtap.patch
|
||||
Patch2550: glibc-rh1505492-prototypes-wcschr-1.patch
|
||||
Patch2551: glibc-rh1505492-prototypes-wcsrchr.patch
|
||||
Patch2552: glibc-rh1505492-prototypes-powerpc-wcscpy.patch
|
||||
Patch2553: glibc-rh1505492-prototypes-powerpc-wordcopy.patch
|
||||
Patch2554: glibc-rh1505492-bsd-flatten.patch
|
||||
Patch2555: glibc-rh1505492-unused-5.patch
|
||||
Patch2556: glibc-rh1505492-types-1.patch
|
||||
Patch2557: glibc-rh1505492-powerpc-sotruss.patch
|
||||
Patch2558: glibc-rh1505492-s390x-sotruss.patch
|
||||
Patch2559: glibc-rh1505492-ports-am33.patch
|
||||
Patch2560: glibc-rh1505492-ports-move-arm.patch
|
||||
Patch2561: glibc-rh1505492-undef-5.patch
|
||||
Patch2562: glibc-rh1505492-prototypes-4.patch
|
||||
Patch2563: glibc-rh1505492-ports-move-tile.patch
|
||||
Patch2564: glibc-rh1505492-ports-move-m68k.patch
|
||||
Patch2565: glibc-rh1505492-ports-move-mips.patch
|
||||
Patch2566: glibc-rh1505492-ports-move-aarch64.patch
|
||||
Patch2567: glibc-rh1505492-ports-move-alpha.patch
|
||||
Patch2568: glibc-rh1505492-ports-move-ia64.patch
|
||||
Patch2569: glibc-rh1505492-undef-6.patch
|
||||
Patch2570: glibc-rh1505492-undef-7.patch
|
||||
Patch2571: glibc-rh1505492-undef-intl.patch
|
||||
Patch2572: glibc-rh1505492-undef-obstack.patch
|
||||
Patch2573: glibc-rh1505492-undef-error.patch
|
||||
Patch2574: glibc-rh1505492-undef-string.patch
|
||||
Patch2575: glibc-rh1505492-undef-tempname.patch
|
||||
Patch2576: glibc-rh1505492-undef-8.patch
|
||||
Patch2577: glibc-rh1505492-undef-mktime.patch
|
||||
Patch2578: glibc-rh1505492-undef-sysconf.patch
|
||||
Patch2579: glibc-rh1505492-prototypes-Xat.patch
|
||||
Patch2580: glibc-rh1505492-undef-ipc64.patch
|
||||
Patch2581: glibc-rh1505492-undef-xfs-chown.patch
|
||||
Patch2582: glibc-rh1505492-undef-9.patch
|
||||
Patch2583: glibc-rh1505492-undef-10.patch
|
||||
Patch2584: glibc-rh1505492-undef-11.patch
|
||||
Patch2585: glibc-rh1505492-undef-12.patch
|
||||
Patch2586: glibc-rh1505492-prototypes-5.patch
|
||||
Patch2587: glibc-rh1505492-undef-13.patch
|
||||
Patch2588: glibc-rh1505492-undef-14.patch
|
||||
Patch2589: glibc-rh1505492-undef-15.patch
|
||||
Patch2590: glibc-rh1505492-ports-move-hppa.patch
|
||||
Patch2591: glibc-rh1505492-undef-16.patch
|
||||
Patch2592: glibc-rh1505492-undef-17.patch
|
||||
Patch2593: glibc-rh1505492-undef-18.patch
|
||||
Patch2594: glibc-rh1505492-undef-19.patch
|
||||
Patch2595: glibc-rh1505492-undef-20.patch
|
||||
Patch2596: glibc-rh1505492-undef-21.patch
|
||||
Patch2597: glibc-rh1505492-undef-22.patch
|
||||
Patch2598: glibc-rh1505492-undef-23.patch
|
||||
Patch2599: glibc-rh1505492-undef-24.patch
|
||||
Patch2600: glibc-rh1505492-prototypes-rwlock.patch
|
||||
Patch2601: glibc-rh1505492-undef-25.patch
|
||||
Patch2602: glibc-rh1505492-undef-26.patch
|
||||
Patch2603: glibc-rh1505492-undef-27.patch
|
||||
Patch2604: glibc-rh1505492-undef-28.patch
|
||||
Patch2605: glibc-rh1505492-undef-29.patch
|
||||
Patch2606: glibc-rh1505492-undef-30.patch
|
||||
Patch2607: glibc-rh1505492-undef-31.patch
|
||||
Patch2608: glibc-rh1505492-undef-32.patch
|
||||
Patch2609: glibc-rh1505492-undef-33.patch
|
||||
Patch2610: glibc-rh1505492-prototypes-memchr.patch
|
||||
Patch2611: glibc-rh1505492-undef-34.patch
|
||||
Patch2612: glibc-rh1505492-prototypes-powerpc-memmove.patch
|
||||
Patch2613: glibc-rh1505492-undef-35.patch
|
||||
Patch2614: glibc-rh1505492-undef-36.patch
|
||||
Patch2615: glibc-rh1505492-undef-37.patch
|
||||
Patch2616: glibc-rh1505492-uninit-1.patch
|
||||
Patch2617: glibc-rh1505492-undef-38.patch
|
||||
Patch2618: glibc-rh1505492-uninit-2.patch
|
||||
Patch2619: glibc-rh1505492-undef-39.patch
|
||||
Patch2620: glibc-rh1505492-undef-40.patch
|
||||
Patch2621: glibc-rh1505492-undef-41.patch
|
||||
Patch2622: glibc-rh1505492-undef-42.patch
|
||||
Patch2623: glibc-rh1505492-undef-43.patch
|
||||
Patch2624: glibc-rh1505492-undef-44.patch
|
||||
Patch2625: glibc-rh1505492-undef-45.patch
|
||||
Patch2626: glibc-rh1505492-undef-46.patch
|
||||
Patch2627: glibc-rh1505492-undef-47.patch
|
||||
Patch2628: glibc-rh1505492-prototypes-6.patch
|
||||
Patch2629: glibc-rh1505492-undef-48.patch
|
||||
Patch2630: glibc-rh1505492-prototypes-execve.patch
|
||||
Patch2631: glibc-rh1505492-prototypes-readv-writev.patch
|
||||
Patch2632: glibc-rh1505492-prototypes-7.patch
|
||||
Patch2633: glibc-rh1505492-prototypes-powerpc-pread-pwrite.patch
|
||||
Patch2634: glibc-rh1505492-s390-backtrace.patch
|
||||
Patch2635: glibc-rh1505492-unused-6.patch
|
||||
Patch2636: glibc-rh1505492-prototypes-8.patch
|
||||
Patch2637: glibc-rh1505492-prototypes-ctermid.patch
|
||||
Patch2638: glibc-rh1505492-unused-7.patch
|
||||
Patch2639: glibc-rh1505492-uninit-3.patch
|
||||
Patch2640: glibc-rh1505492-types-2.patch
|
||||
Patch2641: glibc-rh1505492-unused-8.patch
|
||||
Patch2642: glibc-rh1505492-unused-9.patch
|
||||
Patch2643: glibc-rh1505492-types-3.patch
|
||||
Patch2644: glibc-rh1505492-unused-10.patch
|
||||
Patch2645: glibc-rh1505492-types-5.patch
|
||||
Patch2646: glibc-rh1505492-unused-11.patch
|
||||
Patch2647: glibc-rh1505492-unused-12.patch
|
||||
Patch2648: glibc-rh1505492-unused-13.patch
|
||||
Patch2649: glibc-rh1505492-deprecated-1.patch
|
||||
Patch2650: glibc-rh1505492-unused-14.patch
|
||||
Patch2651: glibc-rh1505492-types-6.patch
|
||||
Patch2652: glibc-rh1505492-address.patch
|
||||
Patch2653: glibc-rh1505492-types-7.patch
|
||||
Patch2654: glibc-rh1505492-prototypes-9.patch
|
||||
Patch2655: glibc-rh1505492-diag.patch
|
||||
Patch2656: glibc-rh1505492-zerodiv-1.patch
|
||||
Patch2657: glibc-rh1505492-deprecated-2.patch
|
||||
Patch2658: glibc-rh1505492-unused-15.patch
|
||||
Patch2659: glibc-rh1505492-prototypes-sigvec.patch
|
||||
Patch2660: glibc-rh1505492-werror-activate.patch
|
||||
Patch2661: glibc-rh1505492-types-8.patch
|
||||
Patch2662: glibc-rh1505492-prototypes-intl.patch
|
||||
Patch2663: glibc-rh1505492-types-9.patch
|
||||
Patch2664: glibc-rh1505492-types-10.patch
|
||||
Patch2665: glibc-rh1505492-prototypes-sem_unlink.patch
|
||||
Patch2666: glibc-rh1505492-prototypes-s390-pthread_once.patch
|
||||
Patch2667: glibc-rh1505492-types-11.patch
|
||||
Patch2668: glibc-rh1505492-types-12.patch
|
||||
Patch2669: glibc-rh1505492-types-13.patch
|
||||
Patch2670: glibc-rh1505492-undef-49.patch
|
||||
Patch2671: glibc-rh1505492-undef-50.patch
|
||||
Patch2672: glibc-rh1505492-undef-51.patch
|
||||
Patch2673: glibc-rh1505492-undef-52.patch
|
||||
Patch2674: glibc-rh1505492-types-14.patch
|
||||
Patch2675: glibc-rh1505492-prototypes-10.patch
|
||||
Patch2676: glibc-rh1505492-prototypes-wcschr-2.patch
|
||||
Patch2677: glibc-rh1505492-prototypes-bzero.patch
|
||||
Patch2678: glibc-rh1505492-winline.patch
|
||||
Patch2679: glibc-rh1505492-prototypes-scandir.patch
|
||||
Patch2680: glibc-rh1505492-prototypes-timespec_get.patch
|
||||
Patch2681: glibc-rh1505492-prototypes-gettimeofday.patch
|
||||
Patch2682: glibc-rh1505492-prototypes-no_cancellation.patch
|
||||
Patch2683: glibc-rh1505492-prototypes-getttynam.patch
|
||||
Patch2684: glibc-rh1505492-undef-53.patch
|
||||
Patch2685: glibc-rh1505492-prototypes-stpcpy.patch
|
||||
Patch2686: glibc-rh1505492-undef-54.patch
|
||||
Patch2687: glibc-rh1505492-undef-55.patch
|
||||
Patch2688: glibc-rh1505492-undef-activate.patch
|
||||
Patch2689: glibc-rh1505492-prototypes-debug.patch
|
||||
Patch2690: glibc-rh1505492-prototypes-putXent.patch
|
||||
Patch2691: glibc-rh1505492-prototypes-11.patch
|
||||
Patch2692: glibc-rh1505492-prototypes-12.patch
|
||||
Patch2693: glibc-rh1505492-prototypes-13.patch
|
||||
Patch2694: glibc-rh1505492-prototypes-14.patch
|
||||
Patch2695: glibc-rh1505492-prototypes-15.patch
|
||||
Patch2696: glibc-rh1505492-prototypes-16.patch
|
||||
Patch2697: glibc-rh1505492-prototypes-17.patch
|
||||
Patch2698: glibc-rh1505492-prototypes-18.patch
|
||||
Patch2699: glibc-rh1505492-prototypes-activate.patch
|
||||
Patch2700: glibc-rh1505492-unused-16.patch
|
||||
Patch2701: glibc-rh1505492-unused-17.patch
|
||||
Patch2702: glibc-rh1505492-undef-56.patch
|
||||
Patch2703: glibc-rh1548002.patch
|
||||
Patch2704: glibc-rh1307241-1.patch
|
||||
Patch2705: glibc-rh1307241-2.patch
|
||||
|
||||
Patch2706: glibc-rh1563747.patch
|
||||
Patch2707: glibc-rh1476120.patch
|
||||
Patch2708: glibc-rh1505647.patch
|
||||
|
||||
Patch2709: glibc-rh1457479-1.patch
|
||||
Patch2710: glibc-rh1457479-2.patch
|
||||
Patch2711: glibc-rh1457479-3.patch
|
||||
Patch2712: glibc-rh1457479-4.patch
|
||||
Patch2713: glibc-rh1461231.patch
|
||||
|
||||
Patch2714: glibc-rh1577333.patch
|
||||
Patch2715: glibc-rh1531168-1.patch
|
||||
Patch2716: glibc-rh1531168-2.patch
|
||||
Patch2717: glibc-rh1531168-3.patch
|
||||
Patch2718: glibc-rh1579742.patch
|
||||
Patch2719: glibc-rh1579727-1.patch
|
||||
Patch2720: glibc-rh1579727-2.patch
|
||||
Patch2721: glibc-rh1579809-1.patch
|
||||
Patch2722: glibc-rh1579809-2.patch
|
||||
Patch2723: glibc-rh1505451.patch
|
||||
Patch2724: glibc-rh1505477.patch
|
||||
Patch2725: glibc-rh1505500.patch
|
||||
Patch2726: glibc-rh1563046.patch
|
||||
|
||||
# RHBZ 1560641 - backport of upstream sem_open patch
|
||||
Patch2727: glibc-rh1560641.patch
|
||||
|
||||
Patch2728: glibc-rh1550080.patch
|
||||
Patch2729: glibc-rh1526193.patch
|
||||
Patch2730: glibc-rh1372304-1.patch
|
||||
Patch2731: glibc-rh1372304-2.patch
|
||||
Patch2732: glibc-rh1540480-0.patch
|
||||
Patch2733: glibc-rh1540480-1.patch
|
||||
Patch2734: glibc-rh1540480-2.patch
|
||||
Patch2735: glibc-rh1540480-3.patch
|
||||
Patch2736: glibc-rh1540480-4.patch
|
||||
Patch2737: glibc-rh1540480-5.patch
|
||||
Patch2738: glibc-rh1540480-6.patch
|
||||
Patch2739: glibc-rh1540480-7.patch
|
||||
Patch2740: glibc-rh1540480-8.patch
|
||||
Patch2741: glibc-rh1447808-0.patch
|
||||
Patch2742: glibc-rh1447808-1.patch
|
||||
Patch2743: glibc-rh1447808-2.patch
|
||||
Patch2744: glibc-rh1401665-0.patch
|
||||
Patch2745: glibc-rh1401665-1a.patch
|
||||
Patch2746: glibc-rh1401665-1b.patch
|
||||
Patch2747: glibc-rh1401665-1c.patch
|
||||
Patch2748: glibc-rh1401665-2.patch
|
||||
Patch2749: glibc-rh1401665-3.patch
|
||||
Patch2750: glibc-rh1401665-4.patch
|
||||
Patch2751: glibc-rh1401665-5.patch
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
|
@ -1293,6 +1549,8 @@ Patch2111: glibc-rh677316-legacy.patch
|
|||
Patch2112: glibc-rh1498566.patch
|
||||
Patch2113: glibc-rh1445644.patch
|
||||
|
||||
Patch2114: glibc-rh1471405.patch
|
||||
|
||||
##############################################################################
|
||||
# End of glibc patches.
|
||||
##############################################################################
|
||||
|
@ -1315,6 +1573,16 @@ Provides: ld-linux.so.3
|
|||
Provides: ld-linux.so.3(GLIBC_2.4)
|
||||
%endif
|
||||
|
||||
# This should remain "Provides: nss_db" (or become a subpackage) to allow easy
|
||||
# migration from old systems that previously had the old nss_db package
|
||||
# installed. Note that this doesn't make the migration that smooth, the
|
||||
# databases still need rebuilding because the formats were different.
|
||||
# The nss_db package was deprecated in F16 and onwards:
|
||||
# https://lists.fedoraproject.org/pipermail/devel/2011-July/153665.html
|
||||
# The different database format does cause some issues for users:
|
||||
# https://lists.fedoraproject.org/pipermail/devel/2011-December/160497.html
|
||||
Provides: nss_db
|
||||
|
||||
Requires: glibc-common = %{version}-%{release}
|
||||
|
||||
# Require libgcc in case some program calls pthread_cancel in its %%post
|
||||
|
@ -1358,9 +1626,13 @@ Conflicts: kernel < %{enablekernel}
|
|||
%ifarch %{power64}
|
||||
%ifarch ppc64le
|
||||
%define target ppc64le-powerel-linux
|
||||
%else
|
||||
%endif
|
||||
%ifarch ppc64
|
||||
%define target ppc64-powerel-linux
|
||||
%endif
|
||||
%ifnarch ppc64 ppc64le
|
||||
%define target ppc-powerel-linux
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%ifarch %{multiarcharches}
|
||||
|
@ -1644,7 +1916,6 @@ package or when debugging this package.
|
|||
%patch0030 -p1
|
||||
%patch0031 -p1
|
||||
%patch0032 -p1
|
||||
%patch0033 -p1
|
||||
%patch0034 -p1
|
||||
%patch1051 -p1
|
||||
%patch0035 -p1
|
||||
|
@ -1729,6 +2000,7 @@ package or when debugging this package.
|
|||
|
||||
# PPC64LE Patch set:
|
||||
# 1064 to 1109.
|
||||
|
||||
%patch1064 -p1
|
||||
%patch1065 -p1
|
||||
%patch1066 -p1
|
||||
|
@ -2107,6 +2379,7 @@ package or when debugging this package.
|
|||
%patch1754 -p1
|
||||
%patch1755 -p1
|
||||
%patch1756 -p1
|
||||
%patch0068 -p1
|
||||
%patch1757 -p1
|
||||
%patch17580 -p1
|
||||
%patch1758 -p1
|
||||
|
@ -2216,7 +2489,7 @@ package or when debugging this package.
|
|||
%patch1855 -p1
|
||||
%patch1856 -p1
|
||||
|
||||
#%patch1857 -p1
|
||||
%patch1857 -p1
|
||||
%patch1858 -p1
|
||||
%patch1859 -p1
|
||||
%patch1860 -p1
|
||||
|
@ -2262,6 +2535,7 @@ package or when debugging this package.
|
|||
%patch2111 -p1
|
||||
%patch2112 -p1
|
||||
%patch2113 -p1
|
||||
%patch2114 -p1
|
||||
|
||||
%patch1878 -p1
|
||||
%patch1879 -p1
|
||||
|
@ -2290,6 +2564,262 @@ package or when debugging this package.
|
|||
%patch1900 -p1
|
||||
%patch1901 -p1
|
||||
%patch1902 -p1
|
||||
%patch2500 -p1
|
||||
%patch2501 -p1
|
||||
%patch2502 -p1
|
||||
%patch2503 -p1
|
||||
%patch2504 -p1
|
||||
%patch2505 -p1
|
||||
%patch2506 -p1
|
||||
%patch2507 -p1
|
||||
%patch2508 -p1
|
||||
%patch2509 -p1
|
||||
%patch2510 -p1
|
||||
%patch2511 -p1
|
||||
%patch2512 -p1
|
||||
%patch2513 -p1
|
||||
%patch2514 -p1
|
||||
%patch2515 -p1
|
||||
%patch2516 -p1
|
||||
%patch2517 -p1
|
||||
%patch2518 -p1
|
||||
%patch2519 -p1
|
||||
%patch2520 -p1
|
||||
%patch2521 -p1
|
||||
%patch2522 -p1
|
||||
%patch2523 -p1
|
||||
%patch2524 -p1
|
||||
%patch2525 -p1
|
||||
%patch2526 -p1
|
||||
%patch2527 -p1
|
||||
%patch2528 -p1
|
||||
%patch2529 -p1
|
||||
%patch2530 -p1
|
||||
%patch2531 -p1
|
||||
%patch2532 -p1
|
||||
%patch2533 -p1
|
||||
%patch2534 -p1
|
||||
%patch2535 -p1
|
||||
%patch2536 -p1
|
||||
%patch2537 -p1
|
||||
%patch2538 -p1
|
||||
%patch2539 -p1
|
||||
%patch2540 -p1
|
||||
%patch2541 -p1
|
||||
%patch2542 -p1
|
||||
%patch2543 -p1
|
||||
%patch0069 -p1
|
||||
%patch2544 -p1
|
||||
%patch2545 -p1
|
||||
%patch2546 -p1
|
||||
%patch2547 -p1
|
||||
%patch2548 -p1
|
||||
%patch2549 -p1
|
||||
%patch2550 -p1
|
||||
%patch2551 -p1
|
||||
%patch2552 -p1
|
||||
%patch2553 -p1
|
||||
%patch2554 -p1
|
||||
%patch2555 -p1
|
||||
%patch2556 -p1
|
||||
%patch2557 -p1
|
||||
%patch2558 -p1
|
||||
%patch2559 -p1
|
||||
%patch2560 -p1
|
||||
%patch2561 -p1
|
||||
%patch2562 -p1
|
||||
%patch2563 -p1
|
||||
%patch2564 -p1
|
||||
%patch2565 -p1
|
||||
%patch2566 -p1
|
||||
%patch2567 -p1
|
||||
%patch2568 -p1
|
||||
%patch2569 -p1
|
||||
%patch2570 -p1
|
||||
%patch2571 -p1
|
||||
%patch2572 -p1
|
||||
%patch2573 -p1
|
||||
%patch2574 -p1
|
||||
%patch2575 -p1
|
||||
%patch2576 -p1
|
||||
%patch2577 -p1
|
||||
%patch2578 -p1
|
||||
%patch2579 -p1
|
||||
%patch2580 -p1
|
||||
%patch2581 -p1
|
||||
%patch2582 -p1
|
||||
%patch2583 -p1
|
||||
%patch2584 -p1
|
||||
%patch2585 -p1
|
||||
%patch2586 -p1
|
||||
%patch2587 -p1
|
||||
%patch2588 -p1
|
||||
%patch2589 -p1
|
||||
%patch2590 -p1
|
||||
%patch2591 -p1
|
||||
%patch2592 -p1
|
||||
%patch2593 -p1
|
||||
%patch2594 -p1
|
||||
%patch2595 -p1
|
||||
%patch2596 -p1
|
||||
%patch2597 -p1
|
||||
%patch2598 -p1
|
||||
%patch2599 -p1
|
||||
%patch2600 -p1
|
||||
%patch2601 -p1
|
||||
%patch2602 -p1
|
||||
%patch2603 -p1
|
||||
%patch2604 -p1
|
||||
%patch2605 -p1
|
||||
%patch2606 -p1
|
||||
%patch2607 -p1
|
||||
%patch2608 -p1
|
||||
%patch2609 -p1
|
||||
%patch2610 -p1
|
||||
%patch2611 -p1
|
||||
%patch2612 -p1
|
||||
%patch2613 -p1
|
||||
%patch2614 -p1
|
||||
%patch2615 -p1
|
||||
%patch2616 -p1
|
||||
%patch2617 -p1
|
||||
%patch2618 -p1
|
||||
%patch2619 -p1
|
||||
%patch2620 -p1
|
||||
%patch2621 -p1
|
||||
%patch2622 -p1
|
||||
%patch2623 -p1
|
||||
%patch2624 -p1
|
||||
%patch2625 -p1
|
||||
%patch2626 -p1
|
||||
%patch2627 -p1
|
||||
%patch2628 -p1
|
||||
%patch2629 -p1
|
||||
%patch2630 -p1
|
||||
%patch2631 -p1
|
||||
%patch2632 -p1
|
||||
%patch2633 -p1
|
||||
%patch2634 -p1
|
||||
%patch2635 -p1
|
||||
%patch2636 -p1
|
||||
%patch2637 -p1
|
||||
%patch2638 -p1
|
||||
%patch2639 -p1
|
||||
%patch2640 -p1
|
||||
%patch2641 -p1
|
||||
%patch2642 -p1
|
||||
%patch2643 -p1
|
||||
%patch2644 -p1
|
||||
%patch2645 -p1
|
||||
%patch2646 -p1
|
||||
%patch2647 -p1
|
||||
%patch2648 -p1
|
||||
%patch2649 -p1
|
||||
%patch2650 -p1
|
||||
%patch2651 -p1
|
||||
%patch2652 -p1
|
||||
%patch2653 -p1
|
||||
%patch2654 -p1
|
||||
%patch2655 -p1
|
||||
%patch2656 -p1
|
||||
%patch2657 -p1
|
||||
%patch2658 -p1
|
||||
%patch2659 -p1
|
||||
%patch2660 -p1
|
||||
%patch2661 -p1
|
||||
%patch2662 -p1
|
||||
%patch2663 -p1
|
||||
%patch2664 -p1
|
||||
%patch2665 -p1
|
||||
%patch2666 -p1
|
||||
%patch2667 -p1
|
||||
%patch2668 -p1
|
||||
%patch2669 -p1
|
||||
%patch2670 -p1
|
||||
%patch2671 -p1
|
||||
%patch2672 -p1
|
||||
%patch2673 -p1
|
||||
%patch2674 -p1
|
||||
%patch2675 -p1
|
||||
%patch2676 -p1
|
||||
%patch2677 -p1
|
||||
%patch2678 -p1
|
||||
%patch2679 -p1
|
||||
%patch2680 -p1
|
||||
%patch2681 -p1
|
||||
%patch2682 -p1
|
||||
%patch2683 -p1
|
||||
%patch2684 -p1
|
||||
%patch2685 -p1
|
||||
%patch2686 -p1
|
||||
%patch2687 -p1
|
||||
%patch2688 -p1
|
||||
%patch2689 -p1
|
||||
%patch2690 -p1
|
||||
%patch2691 -p1
|
||||
%patch2692 -p1
|
||||
%patch2693 -p1
|
||||
%patch2694 -p1
|
||||
%patch2695 -p1
|
||||
%patch2696 -p1
|
||||
%patch2697 -p1
|
||||
%patch2698 -p1
|
||||
%patch2699 -p1
|
||||
%patch2700 -p1
|
||||
%patch2701 -p1
|
||||
%patch2702 -p1
|
||||
%patch2703 -p1
|
||||
%patch2704 -p1
|
||||
%patch2705 -p1
|
||||
|
||||
%patch2706 -p1
|
||||
%patch2707 -p1
|
||||
%patch2708 -p1
|
||||
|
||||
%patch2709 -p1
|
||||
%patch2710 -p1
|
||||
%patch2711 -p1
|
||||
%patch2712 -p1
|
||||
%patch2713 -p1
|
||||
|
||||
%patch2714 -p1
|
||||
%patch2715 -p1
|
||||
%patch2716 -p1
|
||||
%patch2717 -p1
|
||||
%patch2718 -p1
|
||||
%patch2719 -p1
|
||||
%patch2720 -p1
|
||||
%patch2721 -p1
|
||||
%patch2722 -p1
|
||||
%patch2723 -p1
|
||||
%patch2724 -p1
|
||||
%patch2725 -p1
|
||||
%patch2726 -p1
|
||||
%patch2727 -p1
|
||||
%patch2728 -p1
|
||||
%patch2729 -p1
|
||||
%patch2730 -p1
|
||||
%patch2731 -p1
|
||||
%patch2732 -p1
|
||||
%patch2733 -p1
|
||||
%patch2734 -p1
|
||||
%patch2735 -p1
|
||||
%patch2736 -p1
|
||||
%patch2737 -p1
|
||||
%patch2738 -p1
|
||||
%patch2739 -p1
|
||||
%patch2740 -p1
|
||||
%patch2741 -p1
|
||||
%patch2742 -p1
|
||||
%patch2743 -p1
|
||||
%patch2744 -p1
|
||||
%patch2745 -p1
|
||||
%patch2746 -p1
|
||||
%patch2747 -p1
|
||||
%patch2748 -p1
|
||||
%patch2749 -p1
|
||||
%patch2750 -p1
|
||||
%patch2751 -p1
|
||||
|
||||
##############################################################################
|
||||
# %%prep - Additional prep required...
|
||||
|
@ -2359,8 +2889,7 @@ BuildFlags="-march=i686 -mtune=generic"
|
|||
BuildFlags="$BuildFlags -mno-tls-direct-seg-refs"
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
#BuildFlags="-m64 -O3 -march=core2 -mtune=core2 -mmmx -msse -msse2 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx"
|
||||
BuildFlags="-march=core2 -mtune=core2"
|
||||
BuildFlags="-m64 -O3 -march=core2 -mtune=core2"
|
||||
%endif
|
||||
|
||||
##############################################################################
|
||||
|
@ -2455,7 +2984,7 @@ build_CFLAGS="$BuildFlags -g -O3 $*"
|
|||
configure_CFLAGS="$build_CFLAGS -fno-asynchronous-unwind-tables"
|
||||
../configure CC="$GCC" CXX="$GXX" CFLAGS="$configure_CFLAGS" \
|
||||
--prefix=%{_prefix} \
|
||||
--enable-add-ons=ports,nptl$AddOns \
|
||||
--enable-add-ons=nptl$AddOns \
|
||||
--with-headers=%{_prefix}/include $EnableKernel --enable-bind-now \
|
||||
--build=%{target} \
|
||||
%ifarch %{multiarcharches}
|
||||
|
@ -2525,8 +3054,8 @@ build power6
|
|||
|
||||
%if %{buildpower8}
|
||||
(
|
||||
GCC="$GCC -m64 -O3 -mcpu=power8 -mtune=power8"
|
||||
GXX="$GXX -m64 -O3 -mcpu=power8 -mtune=power8"
|
||||
GCC="$GCC -mcpu=power8 -mtune=power8"
|
||||
GXX="$GXX -mcpu=power8 -mtune=power8"
|
||||
core_with_options="--with-cpu=power8"
|
||||
build power8
|
||||
)
|
||||
|
@ -3454,6 +3983,132 @@ rm -f *.filelist*
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Jun 27 2018 Patsy Franklin <pfrankli@redhat.com> - 2.17-260
|
||||
- Update glibc-rh1560641.patch to initialize pad outside
|
||||
the conditional eliminating an uninitialized byte warning from
|
||||
valgrind. (#1560641)
|
||||
|
||||
* Fri Jun 15 2018 Arjun Shankar <arjun@redhat.com> - 2.17-259
|
||||
- Correctly set errno when send() fails on i686 (#1550080)
|
||||
|
||||
* Tue Jun 12 2018 Carlos O'Donell <carlos@redhat.com> - 2.17-258
|
||||
- Fix dynamic string token substitution in DT_RPATH etc. (#1447808, #1540480)
|
||||
- Additional robust mutex fixes (#1401665)
|
||||
|
||||
* Tue Jun 12 2018 Carlos O'Donell <carlos@redhat.com> - 2.17-257
|
||||
- Improve process-shared robust mutex support (#1401665)
|
||||
|
||||
* Tue Jun 12 2018 Carlos O'Donell <carlos@redhat.com> 2.17-256
|
||||
- CVE-2017-16997: Correctly handle DT_RPATH (#1540480).
|
||||
- Correctly process "$ORIGIN" element in DT_RPATH or DT_NEEDED (#1447808).
|
||||
|
||||
* Tue Jun 12 2018 Carlos O'Donell <codonell@redhat.com> - 2.17-255
|
||||
- Make transition from legacy nss_db easier (#1408964)
|
||||
|
||||
* Mon Jun 11 2018 Arjun Shankar <arjun@redhat.com> - 2.17-254
|
||||
- nptl: Avoid expected SIGALRM in most tests (#1372304)
|
||||
|
||||
* Fri Jun 8 2018 Patsy Franklin <pfrankli@redhat.com> - 2.17-253
|
||||
- Add support for el_GR@euro locale. Update el_GR, ur_IN and
|
||||
wal_ET locales. (#1448107)
|
||||
|
||||
* Fri Jun 8 2018 Arjun Shankar <arjun@redhat.com> - 2.17-252
|
||||
- Do not scale NPTL tests with available number of CPUs (#1526193)
|
||||
|
||||
* Thu Jun 7 2018 Arjun Shankar <arjun@redhat.com> - 2.17-251
|
||||
- Correctly set errno when send() fails on s390 and s390x (#1550080)
|
||||
|
||||
* Wed Jun 6 2018 Patsy Franklin <pfrankli@redhat.com> - 2.17-250
|
||||
- Initialize pad field in sem_open. (#1560641)
|
||||
|
||||
* Mon Jun 4 2018 Arjun Shankar <arjun@redhat.com> - 2.17-249
|
||||
- getlogin_r: Return early when process has no associated login UID (#1563046)
|
||||
|
||||
* Mon Jun 4 2018 Arjun Shankar <arjun@redhat.com> - 2.17-248
|
||||
- Return static array, not local array from transliteration function (#1505500)
|
||||
|
||||
* Mon Jun 4 2018 Arjun Shankar <arjun@redhat.com> - 2.17-247
|
||||
- Re-write multi-statement strftime_l macros using better style (#1505477)
|
||||
|
||||
* Mon Jun 4 2018 Arjun Shankar <arjun@redhat.com> - 2.17-246
|
||||
- Fix pthread_barrier_init typo (#1505451)
|
||||
|
||||
* Wed May 23 2018 Florian Weimer <fweimer@redhat.com> - 2.17-245
|
||||
- CVE-2018-11237: AVX-512 mempcpy for KNL buffer overflow (#1579809)
|
||||
|
||||
* Wed May 23 2018 Florian Weimer <fweimer@redhat.com> - 2.17-244
|
||||
- resolv: Fix crash after memory allocation failure (#1579727)
|
||||
|
||||
* Wed May 23 2018 Florian Weimer <fweimer@redhat.com> - 2.17-243
|
||||
- CVE-2018-11236: Path length overflow in realpath (#1579742)
|
||||
|
||||
* Tue May 22 2018 DJ Delorie <dj@redhat.com> - 2.17-242
|
||||
- S390: fix sys/ptrace.h to make it includible again after
|
||||
asm/ptrace.h (#1457479)
|
||||
|
||||
* Tue May 22 2018 Florian Weimer <fweimer@redhat.com> - 2.17-241
|
||||
- x86: setcontext, makecontext alignment issues (#1531168)
|
||||
|
||||
* Wed May 16 2018 DJ Delorie <dj@redhat.com> - 2.17-240
|
||||
- Remove abort() warning in manual (#1577333)
|
||||
|
||||
* Wed May 16 2018 DJ Delorie <dj@redhat.com> - 2.17-239
|
||||
- Add Open File Description (OFL) locks. (#1461231)
|
||||
|
||||
* Sun May 13 2018 Patsy Franklin <pfrankli@redhat.com> - 2.17-238
|
||||
- Properly handle more invalid --install-langs arguments. (#1349982)
|
||||
|
||||
* Fri May 11 2018 DJ Delorie <dj@redhat.com> - 2.17-237
|
||||
- Add O_TMPFILE macro (#1471405)
|
||||
- Update syscall names list to kernel 4.16 (#1563747)
|
||||
- Include <linux/falloc.h> in bits/fcntl-linux.h. (#1476120)
|
||||
- Fix netgroup cache keys. (#1505647)
|
||||
- Update ptrace constants. (#1457479)
|
||||
|
||||
* Thu May 3 2018 Arjun Shankar <arjun@redhat.com> - 2.17-236
|
||||
- Fix strfmon_l so that it groups digits (#1307241)
|
||||
|
||||
* Thu May 3 2018 Arjun Shankar <arjun@redhat.com> - 2.17-235
|
||||
- CVE-2018-6485: Integer overflow in posix_memalign in memalign (#1548002)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-234
|
||||
- Adjust spec file for compiler warnings cleanup (#1505492)
|
||||
- Drop ports add-on
|
||||
- Do not attempt to disable warnings-as-errors on s390x
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-233
|
||||
- Compiler warnings cleanup, phase 7 (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-232
|
||||
- Compiler warnings cleanup, phase 6 (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-231
|
||||
- Compiler warnings cleanup, phase 5 (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-230
|
||||
- Compiler warnings cleanup, phase 4 (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-229
|
||||
- Compiler warnings cleanup, phase 3 (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-228
|
||||
- Compiler warnings cleanup, phase 2 (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-227
|
||||
- Fix downstream-specific compiler warnings (#1505492)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-226
|
||||
- rtkaio: Do not define IN_MODULE (#1349967)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-225
|
||||
- Fix K&R function definitions in libio (#1566623)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-224
|
||||
- Fix type errors in string tests (#1564638)
|
||||
|
||||
* Fri Apr 13 2018 Florian Weimer <fweimer@redhat.com> - 2.17-223
|
||||
- Make nscd build reproducible for verification (#1505492)
|
||||
|
||||
* Thu Feb 1 2018 Florian Weimer <fweimer@redhat.com> - 2.17-222
|
||||
- Restore internal GLIBC_PRIVATE symbols for use during upgrades (#1523119)
|
||||
|
||||
|
|
Loading…
Reference in New Issue