aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.rust/simple.rs
AgeCommit message (Collapse)AuthorFilesLines
2024-01-12Update copyright year range in header of all files managed by GDBAndrew Burgess1-1/+1
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
2023-01-01Update copyright year range in header of all files managed by GDBJoel Brobecker1-1/+1
This commit is the result of running the gdb/copyright.py script, which automated the update of the copyright year range for all source files managed by the GDB project to be updated to include year 2023.
2022-01-01Automatic Copyright Year update after running gdb/copyright.pyJoel Brobecker1-1/+1
This commit brings all the changes made by running gdb/copyright.py as per GDB's Start of New Year Procedure. For the avoidance of doubt, all changes in this commits were performed by the script.
2021-01-01Update copyright year range in all GDB filesJoel Brobecker1-1/+1
This commits the result of running gdb/copyright.py as per our Start of New Year procedure... gdb/ChangeLog Update copyright year range in copyright header of all GDB files.
2020-04-01Move Rust union tests to new fileTom Tromey1-12/+0
I wanted to run the gdb.rust tests against older versions of the Rust compiler, to ensure that changes I am making don't break debugging when using older compilers. However, this did not work because simple.rs now uses unchecked unions, which were only added in Rust 1.19. This patch splits the union code into its own file, so that simple.exp can continue to work. I tested this with selected rust versions back to 1.12. gdb/testsuite/ChangeLog 2020-04-01 Tom Tromey <tromey@adacore.com> * gdb.rust/union.rs: New file. * gdb.rust/union.exp: New file. * gdb.rust/simple.rs (Union, Union2): Move to union.rs. (main): Update. * gdb.rust/simple.exp: Move union tests to union.exp.
2020-04-01Remove local variable from simple.rs test caseTom Tromey1-1/+0
This removes the "y0" variable from simple.rs:main. This variable isn't needed by the test case, and it uses a form of initialization that was added in rust 1.17. Removing this makes it simpler to run the gdb.rust tests against older versions of rustc. gdb/testsuite/ChangeLog 2020-04-01 Tom Tromey <tromey@adacore.com> * gdb.rust/simple.rs (main): Remove "y0".
2020-02-19rust/25535 Apply embedded offset to enum variant calculationDoug Evans1-0/+8
Hopefully straightforward (and I didn't miss anything ...). gdb/ChangeLog 2020-02-19 Doug Evans <dje@google.com> PR rust/25535 * rust-lang.c (rust_print_enum): Apply embedded_offset to rust_enum_variant calculation. gdb/testsuite/ChangeLog 2020-02-19 Doug Evans <dje@google.com> PR rust/25535 * gdb.rust/simple.exp: Add test. * gdb.rust/simple.rs: Add test.
2020-01-01Update copyright year range in all GDB files.Joel Brobecker1-1/+1
gdb/ChangeLog: Update copyright year range in all GDB files.
2019-10-03Avoid crash on single-field union in RustTom Tromey1-0/+6
PR rust/24976 points out a crash in gdb when a single-field union is used in Rust. The immediate problem was a NULL pointer dereference in quirk_rust_enum. However, that code is also erroneously treating a single-field union as if it were a univariant enum. Looking at the output of an older Rust compiler, it turns out that univariant enums are distinguished by having a single *anonymous* field. This patch changes quirk_rust_enum to limit its fixup to this case. Tested with a new-enough version of the Rust compiler to cause the crash; plus by using an older executable that uses the old univariant encoding. gdb/ChangeLog 2019-10-03 Tom Tromey <tom@tromey.com> PR rust/24976: * dwarf2read.c (quirk_rust_enum): Handle single-element unions. gdb/testsuite/ChangeLog 2019-10-03 Tom Tromey <tom@tromey.com> PR rust/24976: * gdb.rust/simple.rs (Union2): New type. (main): Use Union2. * gdb.rust/simple.exp: Add test.
2019-05-02gdb/rust: Handle printing structures containing stringsAndrew Burgess1-0/+8
When printing a rust structure that contains a string GDB can currently fail to read the fields that define the string. This is because GDB mistakenly treats a value that is the parent structure as though it is the structure that defines the string, and then fails to find the fields needed to extract a string. The solution is to create a new value to represent the string field of the parent value. gdb/ChangeLog: * rust-lang.c (val_print_struct): Handle printing structures containing strings. gdb/testsuite/ChangeLog: * gdb.rust/simple.exp: Add new test case. * gdb.rust/simple.rs (struct StringAtOffset): New struct. (main): Initialise an instance of the new struct.
2019-01-01Update copyright year range in all GDB files.Joel Brobecker1-1/+1
This commit applies all changes made after running the gdb/copyright.py script. Note that one file was flagged by the script, due to an invalid copyright header (gdb/unittests/basic_string_view/element_access/char/empty.cc). As the file was copied from GCC's libstdc++-v3 testsuite, this commit leaves this file untouched for the time being; a patch to fix the header was sent to gcc-patches first. gdb/ChangeLog: Update copyright year range in all GDB files.
2018-11-19Fix gdb.rust/simple.rs for more recent compilersTom Tromey1-1/+1
gdb.rust/simple.exp will fail when run with a recent version of rustc. This patch fixes the test case so that it will continue to run. Tested on x86-64 Fedora 28. I also temporarily backed out the rust-lang.c from commit 098b2108a2b61531c0bc8ea16854f773083a95d7, and verified that this updated test still would have provoked the original bug. gdb/testsuite/ChangeLog 2018-11-19 Tom Tromey <tom@tromey.com> * gdb.rust/simple.rs: Don't initialize empty_enum_value.
2018-09-13Fix crash with empty Rust enumTom Tromey1-0/+4
While testing my Rust compiler patch to fix the DWARF representation of Rust enums (https://github.com/rust-lang/rust/pull/54004), I found a gdb crash coming from one of the Rust test cases. The bug here is that the new variant support in gdb does not handle the case where there are no variants in the enum. This patch fixes the problem in a straightforward way. Note that the new tests are somewhat lax because I did not want to try to fully fix this corner case for older compilers. If you think that's unacceptable, let meknow. Tested on x86-64 Fedora 28 using several versions of the Rust compiler. I intend to push this to the 8.2 branch as well. gdb/ChangeLog 2018-09-13 Tom Tromey <tom@tromey.com> PR rust/23626: * rust-lang.c (rust_enum_variant): Now static. (rust_empty_enum_p): New function. (rust_print_enum, rust_evaluate_subexp, rust_print_struct_def): Handle empty enum. gdb/testsuite/ChangeLog 2018-09-13 Tom Tromey <tom@tromey.com> PR rust/23626: * gdb.rust/simple.rs (EmptyEnum): New type. (main): Use it. * gdb.rust/simple.exp (test_one_slice): Add empty enum test.
2018-08-31Fix a small bug in gdb.rust/simple.rsTom Tromey1-1/+1
I noticed that gdb.rust/simple.rs had two local variables named "v". This didn't previous cause problems, but with a newer rust compiler this resulted in a test failure. (It should have failed all along, so I suppose earlier passes were due to a compiler bug.) This patch renames the second variable. gdb/testsuite/ChangeLog 2018-08-31 Tom Tromey <tom@tromey.com> * gdb.rust/simple.rs: Rename second variable "v".
2018-06-26Support ptype/o in RustTom Tromey1-0/+8
This adds support for ptype/o to the Rust language code. By default, the Rust compiler reorders fields to reduce padding. So, the Rust language code sorts the fields by offset before printing. This may yield somewhat odd-looking results, but it is faithful to "what really happens", and might be useful when doing lower-level debugging. The reordering can be disabled using #[repr(c)]; ptype/o might be more useful in this case. gdb/ChangeLog 2018-06-26 Tom Tromey <tom@tromey.com> PR rust/22574: * typeprint.c (whatis_exp): Allow ptype/o for Rust. * rust-lang.c (rust_print_struct_def): Add podata parameter. Update. (rust_internal_print_type): Add podata parameter. (rust_print_type): Update. gdb/testsuite/ChangeLog 2018-06-26 Tom Tromey <tom@tromey.com> PR rust/22574: * gdb.rust/simple.exp (test_one_slice): Add ptype/o tests. * gdb.rust/simple.rs (struct SimpleLayout): New.
2018-04-17Fix crash in quirk_rust_enumTom Tromey1-0/+7
I noticed that quirk_rust_enum can crash when presented with a union whose fields are all scalar types. This patch adds a new test case and fixes the bug. Regression tested on Fedora 26 x86-64. 2018-04-17 Tom Tromey <tom@tromey.com> * dwarf2read.c (quirk_rust_enum): Handle unions correctly. 2018-04-17 Tom Tromey <tom@tromey.com> * gdb.rust/simple.rs (Union): New type. (main): New local "u". * gdb.rust/simple.exp (test_one_slice): Add new test case.
2018-03-19Support bare-identifier field initializers in RustTom Tromey1-0/+4
In Rust one can initialize a struct member from an identically-named local variable by simply mentioning the member name in the initializer, like: let x = 0; let y = Struct { x }; This initializes "Struct::x" from "x". This patch adds this form of initializer to the Rust expression parser and adds a test. Tested on x86-64 Fedora 26 using rustc 1.23. 2018-03-19 Tom Tromey <tom@tromey.com> * rust-exp.y (struct_expr_tail, struct_expr_list): Add plain "IDENT" production. 2018-03-19 Tom Tromey <tom@tromey.com> * gdb.rust/simple.rs (main): Add local variables field1, field2, y0. * gdb.rust/simple.exp: Test bare identifier form of struct initializer.
2018-01-02Update copyright year range in all GDB filesJoel Brobecker1-1/+1
gdb/ChangeLog: Update copyright year range in all GDB files
2017-10-02Fix &str printing in RustTom Tromey1-0/+2
Printing a string slice ("&str") in Rust would print until the terminating \0; but that is incorrect because a slice has a length. This fixes &str printing, and arranges to preserve the type name when slicing a slice, so that printing a slice of an "&str" works as well. This is PR rust/22236. 2017-10-02 Tom Tromey <tom@tromey.com> PR rust/22236: * rust-lang.c (rust_val_print_str): New function. (val_print_struct): Call it. (rust_subscript): Preserve name of slice type. 2017-10-02 Tom Tromey <tom@tromey.com> PR rust/22236: * gdb.rust/simple.rs (main): New variable "fslice". * gdb.rust/simple.exp: Add slice tests. Update string tests.
2017-01-01update copyright year range in GDB filesJoel Brobecker1-1/+1
This applies the second part of GDB's End of Year Procedure, which updates the copyright year range in all of GDB's files. gdb/ChangeLog: Update copyright year range in all GDB files.
2016-11-03Fix handling of discriminantless univariant enums in Rust; fix bug with ↵Manish Goregaokar1-0/+30
encoded enums 2016-10-27 Manish Goregaokar <manish@mozilla.com> gdb/ChangeLog: * rust-lang.c (rust_get_disr_info): Treat univariant enums without discriminants as encoded enums with a real field * rust-lang.c (rust_evaluate_subexp): Handle field access on encoded struct-like enums gdb/testsuite/ChangeLog: * simple.rs: Add test for univariant enums without discriminants and for encoded struct-like enums * simple.exp: Add test expectations
2016-07-21Allow empty struct expressions in RustTom Tromey1-0/+1
I learned recently that empty struct expressions, like "X{}", have been promoted from experimental to stable in Rust. This patch changes the Rust expression parser to allow this case. New test case included. Built and regtested on x86-64 Fedora 23, using Rust 1.11 beta. 2016-07-21 Tom Tromey <tom@tromey.com> * rust-lang.c (rust_tuple_struct_type_p): Return false for empty structs. * rust-exp.y (struct_expr_list): Allow empty elements. 2016-07-21 Tom Tromey <tom@tromey.com> * gdb.rust/simple.rs (main): Use empty struct expression. * gdb.rust/simple.exp: Add tests for empty struct expression.
2016-07-06Allow subscripting raw pointersManish Goregaokar1-0/+1
This will be useful for dealing with vectors; regardless of our final solution for the Index trait. 2016-07-06 Manish Goregaokar <manish@mozilla.com> gdb/ChangeLog: * rust-lang.c (rust_subscript): Allow subscripting pointers gdb/testsuite/ChangeLog: * simple.rs: Add test for raw pointer subscripting * simple.exp: Add test expectations
2016-06-27Print void types correctly in RustManish Goregaokar1-0/+7
Rust prefers to not specify the return type of a function when it is unit (`()`). The type is also referred to as "void" in debuginfo but not in actual usage, so we should never be printing "void" when the language is Rust. 2016-06-27 Manish Goregaokar <manish@mozilla.com> gdb/ChangeLog: * rust-lang.c (rust_print_type): Print unit types as "()" * rust-lang.c (rust_print_type): Omit return type for functions returning unit gdb/testsuite/ChangeLog: * gdb.rust/simple.rs: Add test for returning unit in a function * gdb.rust/simple.exp: Add expectation for functions returning unit
2016-06-25Add tests for printing of NonZero-optimized enums in RustManish Goregaokar1-0/+17
gdb/testsuite/ChangeLog: 2016-06-25 Manish Goregaokar <manish@mozilla.com> PR gdb/20239 * gdb.rust/simple.rs: Add more tests for printing NonZero enums. * gdb.rust/simple.exp: Add test expectations for new NonZero tests.
2016-05-17Update gdb test suite for RustTom Tromey1-0/+97
This updates the gdb test suite for Rust. 2016-05-17 Tom Tromey <tom@tromey.com> Manish Goregaokar <manishsmail@gmail.com> * lib/rust-support.exp: New file. * lib/gdb.exp (skip_rust_tests): New proc. (build_executable_from_specs): Handle rust. * lib/future.exp (gdb_find_rustc): New proc. (gdb_default_target_compile): Handle rust. * gdb.rust/expr.exp: New file. * gdb.rust/generics.exp: New file. * gdb.rust/generics.rs: New file. * gdb.rust/methods.exp: New file. * gdb.rust/methods.rs: New file. * gdb.rust/modules.exp: New file. * gdb.rust/modules.rs: New file. * gdb.rust/simple.exp: New file. * gdb.rust/simple.rs: New file.