PRU architecture supports maximum 256k program memory (IMEM). Some GCC test cases manage to produce executables bigger than that.
gcc/testsuite/ChangeLog: 2018-08-29 Dimitar Dimitrov <dimi...@dinux.eu> * lib/gcc-dg.exp: Bail on region overflow for tiny targets. * lib/target-utils.exp: Ditto. * lib/target-supports.exp: Declare PRU target as tiny. Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu> --- gcc/testsuite/lib/gcc-dg.exp | 5 +++++ gcc/testsuite/lib/target-supports.exp | 5 +++++ gcc/testsuite/lib/target-utils.exp | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 24d0b00d25d..7ef9de59dc2 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -394,6 +394,11 @@ proc gcc-dg-prune { system text } { return "::unsupported::memory full" } + if { [regexp "(^|\n)\[^\n\]*: region \[^\n\]* overflowed" $text] + && [check_effective_target_tiny] } { + return "::unsupported::memory full" + } + # Likewise, if we see ".text exceeds local store range" or # similar. if {[string match "spu-*" $system] && \ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index ce89f618349..7d4ea35babb 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -8843,6 +8843,11 @@ proc check_effective_target_tiny {} { && [check_effective_target_avr_tiny] } { set et_target_tiny_saved 1 } + # PRU Program Counter is 16-bits, and trampolines are not supported. + # Hence directly declare as a tiny target. + if [istarget pru-*-*] { + set et_target_tiny_saved 1 + } } return $et_target_tiny_saved diff --git a/gcc/testsuite/lib/target-utils.exp b/gcc/testsuite/lib/target-utils.exp index bd39cc5bc79..732a1827a02 100644 --- a/gcc/testsuite/lib/target-utils.exp +++ b/gcc/testsuite/lib/target-utils.exp @@ -35,6 +35,10 @@ proc ${tool}_check_unsupported_p { output } { && [check_effective_target_tiny] } { return "memory full" } + if { [regexp "(^|\n)\[^\n\]*: region \[^\n\]* overflowed" $output] + && [check_effective_target_tiny] } { + return "memory full" + } if { [istarget spu-*-*] && \ [string match "*exceeds local store*" $output] } { -- 2.11.0