aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2022-12-05gdbarch.py: Fix indentation in the generated gdbarch_dump functionThiago Jung Bauermann2-560/+556
Use tab for the first eight spaces of indentation, and align the gdb_printf arguments to the open parenthesis of the function call. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2022-12-05gdb: Update my email address in MAINTAINERSThiago Jung Bauermann1-1/+1
2022-12-02gdb/linux-nat: add pid parameter to linux_proc_xfer_memory_partialSimon Marchi1-9/+9
Add a pid parameter to linux_proc_xfer_memory_partial, making the inferior_ptid reference bubble up close to the target_ops::xfer_partial boundary. No behavior change expected. Change-Id: I58171b00ee1bba1ea22efdbb5dcab8b1ab3aac4c
2022-12-02gdb: add some debug statements to solib-svr4.cSimon Marchi1-1/+13
Add a few debug statements that were useful to me when debugging why the glibc probes interface wasn't getting used. Change-Id: Ic20744f9fc80a90f196896b0829949411620c540
2022-12-02gdb: merge solib-frv aix-solib debug options into "set/show debug solib"Simon Marchi6-124/+68
solib implementations are typically used one at a time. So it will be rare that you will want to enable debug for one solib kind, and absolutely want to keep the others disabled. To make things simpler, instead of adding separate variables / macros / commands for each solib implementation, merge the existing ones (frv and aix) into a unified "set/show debug solib", with the solib_debug_printf macro. Change-Id: I6e18bbc7401724f37ae66681badb079d75ecf7fa
2022-12-02[gdb/testsuite] Prevent timeout in gdb.ada/float-bits.expTom de Vries1-3/+10
Recent commit 32a5aa26256 ("[gdb/testsuite] Fix gdb.ada/float-bits.exp for powerpc64le") started using command "maint print architecture", which produces ~275 lines. Rewrite the corresponding gdb_test_multiple to read line-by-line, to prevent timeouts on slower test setups. Note that this doesn't fix a timeout in the test-case on aarch64 due to: ... gdbarch_dump: read_core_file_mappings = <0x817438> (gdb) aarch64_dump_tdep: Lowest pc = 0x0x8000 ... Tested on x86_64-linux.
2022-12-01PowerPC, fix gdb.reverse/finish-reverse-bkpt.exp and ↵Carl Love4-7/+130
gdb.reverse/next-reverse-bkpt-over-sr.exp The tests set a break point with the command break *func. This sets a breakpoint on the first instruction of the function. PowerPC uses Global Entry Points (GEP) and Local Entry Points (LEP). The first instruction in the function is the GEP. The GEP sets up register r2 before reaching the LEP. When the function is called with func() the function is entered via the LEP and the test fails because GDB does not see the breakpoint on the GEP. However, if the function is called via a function pointer, execution begins at the GEP as the test expects. Currently finish-reverse-bkpt.exp uses source file finish-reverse.c and next-reverse-bpkt-over-sr.exp uses source file step-reverse.c A new source file was created for tests finish-reverse-bkpt.exp and next-reverse-bkpt-over-sr.exp. The new files use the new function pointer method to call the functions so the tests will work correctly on both PowerPC with a GEP and LEP as well as on other systems. The GEP is the same as the LEP on non PowerPC systems. The expect files were changed to use the new source files and to set the initial break point for the rest of the test on the function pointer call for the function. This patch fixes two PowerPC test failures in each of the tests gdb.reverse/finish-reverse-bkpt.exp and gdb.reverse/next-reverse-bkpt-over-sr.exp. Patch tested on PowerPC and Intel X86-64 with no regressions. Reviewed-By: Bruno Larsen <blarsen@redhat.com>
2022-12-01Remove call to registers_changed from windows-nat.cTom Tromey1-1/+0
I noticed that windows_nat_target::interrupt calls registers_changed. However, I don't think there's any reason to do this, because this will happen automatically when the inferior stop is processed. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2022-12-01Remove the_windows_nat_target globalTom Tromey1-7/+4
I belatedly realized that the "the_windows_nat_target" global isn't really necessary. It's only used in one place, where 'this' would be simpler and clearer. This patch removes the global entirely. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2022-12-01gdb: make frame_register staticSimon Marchi2-12/+6
It is only used inside frame.c. Change-Id: I44eb46a5992412f8f8b4954b2284b0ef3b549504
2022-12-01Add name canonicalization for CTom Tromey8-26/+80
PR symtab/29105 shows a number of situations where symbol lookup can result in the expansion of too many CUs. What happens is that lookup_signed_typename will try to look up a type like "signed int". In cooked_index_functions::expand_symtabs_matching, when looping over languages, the C++ case will canonicalize this type name to be "int" instead. Then this method will proceed to expand every CU that has an entry for "int" -- i.e., nearly all of them. A crucial component of this is that the caller, objfile::lookup_symbol, does not do this canonicalization, so when it tries to find the symbol for "signed int", it fails -- causing the loop to continue. This patch fixes the problem by introducing name canonicalization for C. The idea here is that, by making C and C++ agree on the canonical name when a symbol name can have multiple spellings, we avoid the bad behavior in objfile::lookup_symbol (and any other such code -- I don't know if there is any). Unlike C++, C only has a few situations where canonicalization is needed. And, in particular, due to the lack of overloading (thus avoiding any issues in linespec) and due to the way c-exp.y works, I think that no canonicalization is needed during symbol lookup -- only during symtab construction. This explains why lookup_name_info is not touched. The stabs reader is modified on a "best effort" basis. The DWARF reader needed one small tweak in dwarf2_name to avoid a regression in dw2-unusual-field-names.exp. I think this is adequately explained by the comment, but basically this is a scenario that should not occur in real code, only the gdb test suite. lookup_signed_typename is simplified. It used to search for two different type names, but now gdb can search just for the canonical form. gdb.dwarf2/enum-type.exp needed a small tweak, because the canonicalizer turns "unsigned integer" into "unsigned int integer". It seems better here to use the correct C type name. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29105 Tested-by: Simon Marchi <simark@simark.ca> Reviewed-by: Andrew Burgess <aburgess@redhat.com>
2022-12-01Refactor cooked_index::do_finalizeTom Tromey1-26/+23
This refactors cooked_index::do_finalize, reordering an 'if' to make it a little less redundant. This change makes a subsequent patch easier to read. Reviewed-by: Andrew Burgess <aburgess@redhat.com>
2022-12-01Remove language check from dwarf2_compute_nameTom Tromey1-5/+3
dwarf2_compute_name has a redundant check of the CU's language -- this is also checked in dwarf2_canonicalize_name. Removing this slightly simplifies a future patch. Reviewed-by: Andrew Burgess <aburgess@redhat.com>
2022-12-01gdb/dwarf: add some QUIT macrosSimon Marchi1-0/+4
While testing the fix for PR 29105, I noticed I couldn't ctrl-C my way out of GDB expanding many symtabs. GDB was busy in a loop in cooked_index_functions::expand_symtabs_matching. Add a QUIT there. I also happened to see a spot in cooked_index_functions::expand_matching_symbols where a QUIT would be useful too, since we iterate over a potentially big number of index entries and expand CUs in the loop. Add one there too. Change-Id: Ie1d650381df7f944c16d841b3e592d2dce7306c3 Approved-By: Kevin Buettner <kevinb@redhat.com>
2022-12-01gdb: remove prune_threads in thread_db_target::update_thread_listSimon Marchi1-2/+0
Pedro mentioned that this prune_threads call in thread_db_target::update_thread_list was not needed, and it was probably an oversight to leave it there in the work following commit e8032dde10b ("Push pruning old threads down to the target"). That commit changed the "find new threads" target operation to "update thread list", making the target responsible of adding new threads and removing exited threads, rather than just adding new threads. Commit e8032dde10b moved the prune_threads calls previously done in common code into each target's update_thread_list method, in order to keep the existing behavior, which is why this prune_threads call ended up there. In the mean time, the linux-nat target was taught to update_thread_list, and thread_db_target::update_thread_list defers to that for any live inferior, so the prune_threads call is not needed there. Otherwise, the thread_db_target::update_thread_list implementation based on td_ta_thr_iter_p only knows how to add new threads, not how to delete exited threads, but that is only used for non-live inferiors, where threads can't exit anyway. So the prune_threads call is not needed for that case either. Change-Id: I127fd4f84c25086f97853dadf34c5cec6816840d Approved-By: Pedro Alves <pedro@palves.net>
2022-12-01Avoid timeouts in gdb.compileTom Tromey17-70/+82
PR compile/29541 points out that some of the C++ tests in gdb.compile will time out when the glibc debuginfo is installed. This was interfering with my hacking on gdb by making test runs extremely long, so I looked into it. Internally the bug seems to be that gdb tries to convert multiple symbols named "var" via the compiler interface; one such symbol (I didn't track it down too far) causes the C++ compiler plugin to crash. Unfortunately, the crash is reported as a timeout, as the gdb side of the plugin simply hangs. This seems like a bug in the plugin RPC mechanism and, worse, apparently when I wrote this stuff I didn't really consider error reporting very much at all, so gdb can't really detect failures in the first place. Anyway... this patch works around the timeout by compiling a simple test that should provoke this bug, and then using "untested" if it notices a GCC crash. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29541
2022-12-01Remove obsolete check from skip_compile_feature_testsTom Tromey1-3/+0
skip_compile_feature_tests checks for "Command not supported on this host", but this error was removed by commit e8d8cce6 ("Import mkdtemp gnulib module, fix mingw build"). This patch removes the obsolete test.
2022-12-01Remove one copy of skip_compile_feature_testsTom Tromey8-20/+12
I noticed that there are two identical copies of skip_compile_feature_tests in the test suite. This removes one from gdb.exp, in favor of the one in compile-support.exp.
2022-12-01[gdb/testsuite] Wait longer for core generationTom de Vries1-7/+13
When I run the gdb testsuite on a powerpc64le-linux system with (slow) nfs file system, I run into timeouts due to core generation, like for instance: ... (gdb) gcore $outputs/gdb.ada/task_switch_in_core/crash.gcore^M FAIL: gdb.ada/task_switch_in_core.exp: save a corefile (timeout) ... Fix this by using with_timeout_factor 3 in gdb_gcore_cmd. Tested on powerpc64le-linux. Approved-By: Tom Tromey <tom@tromey.com>
2022-12-01[gdb/testsuite] Fix gdb.ada/float-bits.exp for powerpc64leTom de Vries1-0/+28
On powerpc64le-linux, I run into: ... (gdb) print 16llf#4000921fb54442d18469898cc51701b8#^M $9 = <invalid float value>^M (gdb) FAIL: gdb.ada/float-bits.exp: print \ 16llf#4000921fb54442d18469898cc51701b8# ... The problem is that we're using a hex string for the 128-bit IEEE quad long double format, but the actual long double float format is: ... gdbarch_dump: long_double_format = floatformat_ibm_long_double_little^M ... Fix this by using the hex string obtained by compiling test.c: ... long double a = 5.0e+25L; ... like so: ... $ gcc -mlittle test.c -c -g ... and running gdb: ... $ gdb -q -batch test.o -ex "p /x a" $1 = 0xc1e1c000000000004544adf4b7320335 ... and likewise for -mbig: ... $ gdb -q -batch test.o -ex "p /x a" $1 = 0x4544adf4b7320335c1e1c00000000000 ... Tested on powerpc64le-linux. I excercised the case of floatformat_ibm_long_double_big by using "set endian big" in the test-case. Note that for this patch to work correctly, recent commit aaa79cd62b8 ("[gdb] Improve printing of float formats") is required. PR testsuite/29816 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29816 Approved-By: Tom Tromey <tom@tromey.com>
2022-11-30[gdb/testsuite] Fix DUPLICATEs in s390-multiarch.expTom de Vries1-23/+27
On s390x-linux, I run into: ... DUPLICATE: gdb.arch/s390-multiarch.exp: Linux v2 DUPLICATE: gdb.arch/s390-multiarch.exp: Linux v2 DUPLICATE: gdb.arch/s390-multiarch.exp: Linux v2 ... Fix this by using with_test_prefix. Tested on s390x-linux.
2022-11-30[gdb/testsuite] Enable gdb.arch/s390-disassembler-options.exp for ↵Tom de Vries1-16/+20
--enable-targets=all On s390x-linux, I run into: ... DUPLICATE: gdb.arch/s390-disassembler-options.exp: \ show disassembler-options esa ... First, reproduce this on x86_64-linux with --enable-targets=all, by replacing the test for 'istarget "s390*-*-*"' with a test for 'get_set_option_choices "set architecture" "s390"'. Fix the DUPLICATE by using with_test_prefix. Also modernize the test-case by using clean_restart instead of gdb_exit/gdb_start. Tested on x86_64-linux.
2022-11-30Bounds check access to Ada task state namesTom Tromey1-2/+31
While looking into Ada tasking a little, I noticed that no bounds checking is done on accesses to the Ada task state names arrays. This isn't a problem currently, but if the runtime ever added numbers -- or if there was some kind of runtime corruption -- it could cause a gdb crash. This patch adds range checking. It also adds a missing _() call when printing from the 'task_states' array.
2022-11-30Use ui_file_up in mi_interpTom Tromey2-8/+6
This changes mi_interp to use ui_file_up rather than explicit management. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2022-11-30Rename fields of cli_interp_base::saved_output_filesTom Tromey2-11/+14
This renames the fields of cli_interp_base::saved_output_files, as requested by Simon. I tried to choose names that more obviously reflect what the field is used for. I also added a couple of comments. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2022-11-30[gdb] Improve printing of float formatsTom de Vries3-14/+14
Currently, on x86_64, a little endian target, I get: ... $ gdb -q -batch -ex "maint print architecture" | grep " = floatformat" gdbarch_dump: bfloat16_format = floatformat_bfloat16_big gdbarch_dump: double_format = floatformat_ieee_double_big gdbarch_dump: float_format = floatformat_ieee_single_big gdbarch_dump: half_format = floatformat_ieee_half_big gdbarch_dump: long_double_format = floatformat_i387_ext ... which suggests big endian. This is due to this bit of code in pformat: ... /* Just print out one of them - this is only for diagnostics. */ return format[0]->name; ... Fix this by using gdbarch_byte_order to pick the appropriate index, such that we have the more accurate: ... gdbarch_dump: bfloat16_format = floatformat_bfloat16_little gdbarch_dump: half_format = floatformat_ieee_half_little gdbarch_dump: float_format = floatformat_ieee_single_little gdbarch_dump: double_format = floatformat_ieee_double_little gdbarch_dump: long_double_format = floatformat_i387_ext ... Tested on x86_64-linux.
2022-11-29[gdb/testsuite] Fix gdb.base/vla-optimized-out.exp for ppc64leTom de Vries1-6/+17
On powerpc64le-linux, I run into: ... (gdb) PASS: gdb.base/vla-optimized-out.exp: o1: printed optimized out vla p sizeof (a)^M $2 = <optimized out>^M (gdb) FAIL: gdb.base/vla-optimized-out.exp: o1: \ printed size of optimized out vla ... The problem happens as follows. In order to find the size of the optimized out vla, gdb needs to evaluate: ... <155> DW_AT_upper_bound : 13 byte block: f3 1 53 23 1 8 20 24 8 20 26 31 1c \ (DW_OP_GNU_entry_value: (DW_OP_reg3 (r3)); DW_OP_plus_uconst: 1; DW_OP_const1u: 32; DW_OP_shl; DW_OP_const1u: 32; DW_OP_shra; DW_OP_lit1; DW_OP_minus) ... When trying to evaluate DW_OP_GNU_entry_value, it looks for a call site matching the pc, but doesn't find it: ... $ gdb -q -batch outputs/gdb.base/vla-optimized-out/vla-optimized-out-o1 \ -ex "break f1" -ex run -ex "set debug entry-values 1" -ex "print sizeof (a)" Breakpoint 1 at 0x1000067c: file vla-optimized-out.c, line 34. Breakpoint 1, f1 (i=5) at vla-optimized-out.c:34 34 } DW_OP_entry_value resolving cannot find DW_TAG_call_site 0x100006b0 in main $1 = <optimized out> .... The call site lookup fails because the call site label .LVL4: ... bl f1 # 11 *call_value_nonlocal_aixdi [length = 8] nop .LVL4: ... is not placed directly after the bl insn. This is gcc PR target/107909. However, after manually fixing the .s file we have instead: ... Cannot find matching parameter at DW_TAG_call_site 0x10000690 at main $1 = <optimized out> ... due to the fact that the call site has no call site parameters. The call site does have a reference to the corresponding function f1, with parameter i, for which we find location list entries: ... 0037 1000067c 10000680 (DW_OP_reg3 (r3)) 004a 10000680 10000690 (DW_OP_GNU_entry_value: (DW_OP_reg3 (r3)); DW_OP_stack_value) ... and we could use the fact that the current pc is in the 1000067c-10000680 range, and that that the range starts at the start of the function, to deduce that DW_OP_GNU_entry_value: (DW_OP_reg3 (r3)) == DW_OP_reg3 (r3). But that's a non-trivial enhancement, filed as enhancement PR symtab/29836. Fix this by allowing <optimized out> for target powerpc and the gcc compiler. Reviewed-By: Carl Love <cel@us.ibm.com> Tested-By: Carl Love <cel@us.ibm.com> PR testsuite/29813 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29813
2022-11-29gdb/testsuite: make gdb_unload use gdb_test_multipleSimon Marchi4-32/+24
In the failure seen by Philippe here: https://inbox.sourceware.org/gdb-patches/20221120173024.3647464-1-philippe.waroquiers@skynet.be/ gdb_unload crashed GDB, leaving no trace in the test results. Change it to use gdb_test_multiple, so that it leaves an UNRESOLVED result. I think it is good practice anyway. Make it return the result of gdb_test_multiple directly, change gdb.python/py-objfile.exp accordingly. Change gdb.base/endian.exp as well to avoid duplicate test names. Change gdb.base/gnu-debugdata.exp to avoid recording a test result, since gdb_unload does it already now. Change-Id: I59a1e4947691330797e6ce23277942547c437a48 Approved-By: Tom de Vries <tdevries@suse.de>
2022-11-29gdb/testsuite: make gdb_test_multiple return immediately if send_gdb failsSimon Marchi1-2/+6
In the failure seen by Philippe here: https://inbox.sourceware.org/gdb-patches/20221120173024.3647464-1-philippe.waroquiers@skynet.be/ ... the testsuite only outputs PASSes, and an ERROR, resulting from an uncaught exception. This is a bit sneaky, because ERRORs are not reported in the test summary. In certain circumstances, it can be easy to miss. Normally, gdb_test_multiple outputs an UNRESOLVED when GDB crashes. But this is only if it manages to send the command, and it's that command that crashes GDB. Here, the ERROR is due to the fact that GDB had already crashed by the time we entered gdb_test_multiple and tried to send a command. GDB was crashed by the previous "file" command, sent by gdb_unload. Because gdb_unload uses bare expect, it didn't record a test failure when crashing GDB (this will be addressed separately). In this patch, I propose to make gdb_test_multiple call unresolved directly and return -1 send_gdb fails. This way, if GDB is already crashed by the time we enter gdb_test_multiple, it will leave a trace in the test results in the form of an UNRESOLVED. It will also spare us the not-so-useful-in-my-opinion TCL backtrace. Before, it looks like: ERROR: Couldn't send python print(objfile.filename) to GDB. ERROR: : spawn id exp9 not open while executing "expect { -i exp9 -timeout 10 -re ".*A problem internal to GDB has been detected" { fail "$message (GDB internal error)" gdb_internal_error..." ("uplevel" body line 1) invoked from within "uplevel $body" NONE : spawn id exp9 not open And after: Couldn't send python print(objfile.filename) to GDB. UNRESOLVED: gdb.python/py-objfile.exp: objfile.filename after objfile is unloaded Change-Id: I72af8dc0d687826fc3f76911c27a9e5f91b677ba Approved-By: Tom de Vries <tdevries@suse.de>
2022-11-28gdb/testsuite: remove use of then keyword from library filesAndrew Burgess11-109/+109
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the testsuite library files (in boards/, config/, and lib/). Previous commits have removed all uses of the 'then' keyword from the test script files, this commit just cleans up the library files. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.*/*.exp scriptsAndrew Burgess29-44/+44
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the remaining gdb.*/*.exp scripts. Previous commits have done the bulk of this removal, this commit just handles the remaining directories that each contain a low number of instances. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.multi/*.expAndrew Burgess9-18/+18
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.multi/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.fortran/*.expAndrew Burgess23-23/+23
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.fortran/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.disasm/*.expAndrew Burgess13-26/+26
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.disasm/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.reverse/*.expAndrew Burgess15-31/+31
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.reverse/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.trace/*.expAndrew Burgess22-38/+38
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.trace/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.threads/*.expAndrew Burgess38-60/+60
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.threads/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.python/*.expAndrew Burgess38-66/+66
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.python/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.cp/*.expAndrew Burgess66-79/+79
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.cp/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.arch/*.expAndrew Burgess94-142/+142
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.arch/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.base/*.expAndrew Burgess216-435/+435
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.base/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove use of then keyword from gdb.ada/*.expAndrew Burgess51-55/+55
The canonical form of 'if' in modern TCL is 'if {} {}'. But there's still a bunch of places in the testsuite where we make use of the 'then' keyword, and sometimes these get copies into new tests, which just spreads poor practice. This commit removes all use of the 'then' keyword from the gdb.ada/ test script directory. There should be no changes in what is tested after this commit.
2022-11-28gdb/testsuite: remove DOS line endings from a test scriptAndrew Burgess1-92/+92
The gdb.fortran/nested-funcs.exp test script has DOS line endings. I can see no reason why this script needs DOS line endings. Convert to UNIX line endings. There should be no change in what is tested after this commit.
2022-11-28Don't let gdb_stdlog use pagerTom Tromey2-10/+15
When using the "set logging" commands, cli_interp_base::set_logging will send gdb_stdlog output (among others) to the tee it makes for gdb_stdout. However, this has the side effect of also causing logging to use the pager. This is PR gdb/29787. This patch fixes the problem by keeping stderr and stdlog separate from stdout, preserving the rule that only gdb_stdout should page. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29787
2022-11-28Don't let tee_file own a streamTom Tromey6-21/+20
Right now, tee_file owns the second stream it writes to. This is done for the convenience of the users. In a subsequent patch, this will no longer be convenient, so this patch moves the responsibility for ownership to the users of tee_file.
2022-11-28Remove 'saved_output' globalTom Tromey2-30/+33
CLI redirect uses a global variable, 'saved_output'. However, globals are generally bad, and there is no need for this one -- it can be a member of cli_interp_base. This patch makes this change.
2022-11-28Remove no longer used jump labelHannes Domani1-1/+0
The out label is unused since wait_for_debug_event is in a different thread.
2022-11-28Actually set m_is_async to current async modeHannes Domani1-0/+2
Looks like this was missed in the async mode implementation.
2022-11-28Don't use auto for lambda parameterHannes Domani1-1/+1
Older gcc versions (here 4.9.2) can't handle auto for a lambda parameter: ../../gdb/windows-nat.c: In member function 'void windows_nat_target::delete_thread(ptid_t, DWORD, bool)': ../../gdb/windows-nat.c:629:12: error: use of 'auto' in lambda parameter declaration only available with -std=c++1y or -std=gnu++1y [-Werror] [=] (auto &th) ^
2022-11-28Fix calling convention of thread entry pointHannes Domani1-7/+12
For i686 the CreateThread entry point function needs the WINAPI (stdcall) calling convention: ../../gdb/windows-nat.c: In constructor 'windows_nat_target::windows_nat_target()': ../../gdb/windows-nat.c:450:56: error: invalid user-defined conversion from 'windows_nat_target::windows_nat_target()::<lambda(LPVOID)>' to 'LPTHREAD_START_ROUTINE' {aka 'long unsigned int (__attribute__((stdcall)) *)(void*)'} [-fpermissive] 450 | HANDLE bg_thread = CreateThread (nullptr, 64 * 1024, fn, this, 0, nullptr); | ^~ ../../gdb/windows-nat.c:444:13: note: candidate is: 'constexpr windows_nat_target::windows_nat_target()::<lambda(LPVOID)>::operator DWORD (*)(LPVOID)() const' (near match) 444 | auto fn = [] (LPVOID self) -> DWORD | ^ ../../gdb/windows-nat.c:444:13: note: no known conversion from 'DWORD (*)(LPVOID)' {aka 'long unsigned int (*)(void*)'} to 'LPTHREAD_START_ROUTINE' {aka 'long unsigned int (__attribute__((stdcall)) *)(void*)'} Since it's not possible to change the calling convention of a lambda, I've moved it to a separate function.