# Copyright 2018-2023 Free Software Foundation, Inc. # This program 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 of the License, or # (at your option) any later version. # # This program 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 program. If not, see . # Test if gdb can read a core file with a program header size of 4MB, if the # stack size is limited to 4MB. if { [target_info gdb_protocol] != "" } { # Even though the feature under features being tested are supported by # gdbserver, the way this test is written doesn't make it easy with a # remote target. unsupported "not native" return } standard_testfile if {[build_executable "failed to prepare" $testfile $srcfile debug]} { return -1 } # Generate core file. set corefile [core_find $binfile] if {$corefile == ""} { return 0 } # Limit is in kb, so this is 4MB. set stack_limit 4096 # Verify if we can set the stack limit. catch { system [concat \ "(" \ "ulimit -s $stack_limit;" \ ")"] } msg if { "$msg" != "" } { untested "Can't set stack limit" return -1 } set cmd \ [concat \ "(" \ "ulimit -s $stack_limit;" \ "$GDB $INTERNAL_GDBFLAGS $GDBFLAGS -batch -core=$corefile" \ ")"] verbose -log $cmd # Run gdb with stack limit set output [standard_output_file OUTPUT] catch { system "$cmd > $output 2>&1" } msg verbose -log [exec cat $output] file delete $output set test "read core file" if { "$msg" == "" } { pass "$test" } else { verbose -log $msg fail "$test" }