9a30a3f06b
The test in the PowerPC 32-bit trampoline support is backwards. It aborts if the trampoline size is greater than the expected size. It should abort when the trampoline size is less than the expected size. I fixed the test so the operands are reversed. I then folded the load immediate into the compare instruction. I verified this by creating a 32-bit trampoline program and manually changing the size of the trampoline to be 48 instead of 40. The program aborted with the larger size. I updated this code and ran the test again and it passed. I added a test case that runs on PowerPC 32-bit Linux systems and it calls the __trampoline_setup function with a larger buffer size than the compiler uses. The test is not run on 64-bit systems, since the function __trampoline_setup is not called. I also limited the test to just Linux systems, in case trampolines are handled differently in other systems. libgcc/ 2021-04-23 Michael Meissner <meissner@linux.ibm.com> PR target/98952 * config/rs6000/tramp.S (__trampoline_setup, elfv1 #ifdef): Fix trampoline size comparison in 32-bit by reversing test and combining load immediate with compare. (__trampoline_setup, elfv2 #ifdef): Fix trampoline size comparison in 32-bit by reversing test and combining load immediate with compare. gcc/testsuite/ 2021-04-23 Michael Meissner <meissner@linux.ibm.com> PR target/98952 * gcc.target/powerpc/pr98952.c: New test. |
||
---|---|---|
.. | ||
aarch64 | ||
alpha | ||
arc | ||
arm | ||
avr | ||
bfin | ||
bpf | ||
c6x | ||
cr16 | ||
cris | ||
csky | ||
epiphany | ||
fr30 | ||
frv | ||
ft32 | ||
gcn | ||
h8300 | ||
i386 | ||
ia64 | ||
iq2000 | ||
libbid | ||
lm32 | ||
m32c | ||
m32r | ||
m68k | ||
mcore | ||
microblaze | ||
mips | ||
mmix | ||
moxie | ||
msp430 | ||
nds32 | ||
nios2 | ||
nvptx | ||
or1k | ||
pa | ||
pdp11 | ||
pru | ||
riscv | ||
rl78 | ||
rs6000 | ||
rx | ||
s390 | ||
score | ||
sh | ||
sol2 | ||
sparc | ||
stormy16 | ||
tilegx | ||
tilepro | ||
v850 | ||
vax | ||
visium | ||
vms | ||
xtensa | ||
darwin10-unwind-find-enc-func.c | ||
darwin-64.c | ||
darwin-crt3.c | ||
darwin-crt-tm.c | ||
gthr-lynx.h | ||
gthr-rtems.h | ||
gthr-vxworks-cond.c | ||
gthr-vxworks-thread.c | ||
gthr-vxworks-tls.c | ||
gthr-vxworks.c | ||
gthr-vxworks.h | ||
hardfp.c | ||
libgcc-glibc.ver | ||
libgcc-libsystem.ver | ||
no-sfp-machine.h | ||
no-unwind.h | ||
t-crtfm | ||
t-crtstuff-pic | ||
t-darwin | ||
t-dfprules | ||
t-eh-dw2-dip | ||
t-fdpbit | ||
t-fixedpoint-gnu-prefix | ||
t-fpbit | ||
t-freebsd-thread | ||
t-gnu-prefix | ||
t-gthr-noweak | ||
t-gthr-vxworks | ||
t-gthr-vxworksae | ||
t-hardfp | ||
t-hardfp-sfdf | ||
t-libgcc-pic | ||
t-libunwind | ||
t-libunwind-elf | ||
t-linux | ||
t-openbsd-thread | ||
t-rtems | ||
t-slibgcc | ||
t-slibgcc-darwin | ||
t-slibgcc-elf-ver | ||
t-slibgcc-fuchsia | ||
t-slibgcc-gld | ||
t-slibgcc-gld-nover | ||
t-slibgcc-hpux | ||
t-slibgcc-libgcc | ||
t-slibgcc-nolc-override | ||
t-slibgcc-sld | ||
t-slibgcc-vms | ||
t-softfp | ||
t-softfp-compat | ||
t-softfp-excl | ||
t-softfp-sfdf | ||
t-softfp-sfdftf | ||
t-softfp-tf | ||
t-stack | ||
t-tls | ||
t-vxcrtstuff | ||
t-vxworks | ||
t-vxworks7 | ||
t-vxworksae | ||
unwind-dw2-fde-darwin.c | ||
vxcrtstuff.c |