aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-05-08Convert break-catch-syscall.c to type-safe registry APITom Tromey2-20/+13
This changes break-catch-syscall.c to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * break-catch-syscall.c (catch_syscall_inferior_data): Move. Change type. (get_catch_syscall_inferior_data): Update. (catch_syscall_inferior_data_cleanup): Remove. (_initialize_break_catch_syscall): Update.
2019-05-08Convert inflow to type-safe registry APITom Tromey2-37/+27
This changes inflow.c to use the type-safe registry API. This fixes a latent bug in swap_terminal_info, which previously said: terminal_info *info_a = (terminal_info *) inferior_data (a, inflow_inferior_data); terminal_info *info_b = (terminal_info *) inferior_data (a, inflow_inferior_data); ... both of which examine 'a'. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * inflow.c (struct terminal_info): Add destructor and initializers. (inflow_inferior_data): Change type. (~terminal_info): Rename from inflow_inferior_data_cleanup. (get_inflow_inferior_data, inflow_inferior_exit) (swap_terminal_info, _initialize_inflow): Update.
2019-05-08Convert target dcache to type-safe registry APITom Tromey3-27/+25
This changes the target dcache to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * target-dcache.c (target_dcache_cleanup): Remove. (target_dcache_aspace_key): Change type. (target_dcache_init_p, target_dcache_invalidate) (target_dcache_get, target_dcache_get_or_init) (_initialize_target_dcache): Update. * dcache.h (struct dcache_deleter): New.
2019-05-08Convert symbol_cache to type-safe registry APITom Tromey2-54/+34
This changes the symbol_cache to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * symtab.c (struct symbol_cache): Add destructor and initializers. (symbol_cache_key): Move. Change type. (make_symbol_cache, free_symbol_cache): Remove. (get_symbol_cache): Update. (symbol_cache_cleanup): Remove. (ALL_PSPACES, symbol_cache_flush) (maintenance_print_symbol_cache) (maintenance_print_symbol_cache_statistics, _initialize_symtab): Update.
2019-05-08Convert main_info to type-safe registry APITom Tromey2-29/+23
This changes main_info to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * symtab.c (struct main_info): Add destructor and initializers. (main_progspace_key): Move. Change type. (get_main_info): Update. (main_info_cleanup): Remove. (_initialize_symtab): Update.
2019-05-08Add a type-safe C++ interface to a registryTom Tromey2-6/+66
This changes DECLARE_REGISTRY to add a type-safe interface. This interface is a C++ class that handles the details of registering a key, and provides various useful methods, including policy-based cleanup. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * registry.h (DECLARE_REGISTRY): Define the _key class.
2019-05-08gdb: Merge two 'New commands' sections in NEWS fileAndrew Burgess2-9/+11
Commit 2e62ab400ff9 added a second 'New commands' section to the NEWS file, this commit merges the two together. gdb/ChangeLog: * NEWS: Merge two 'New commands' sections.
2019-05-08When debugging a mixed Ada/C program using this scenario:Xavier Roirand8-31/+207
- set print frame-arguements all - an Ada function named pck.call_me calls a C function named break_me - you put a breakpoint in break_me and the program reaches this breakpoint. Now display the backtrace: (gdb) bt #0 break_me () at [...] #1 0x000000000040243e in pck.call_me ( s={P_ARRAY = 0x7fffffffe21c, P_BOUNDS = 0x41e6e8}) at [...] whereas we should expect: (gdb) bt #0 break_me () at [...] #1 0x000000000040243e in pck.call_me (s="test") at [...] The problem is that GDB prints the S parameter in the pck.call_me Ada function using the current language, so the C one, because the program is stopped in a C function, whereas it should use the pck.call_me frame one. This behavior is ok when user manually changes the language but it's not the right one when language is auto. This patch fixes this problem so now when using auto language, all Ada frame arguments are printed using Ada like syntax when the frame is part of Ada code, even if the program is stopped in a frame using a different language. If the user explicitly sets a language (using "set language ...") then no change here, all the Ada frame arguments are printed using this language. gdb/ChangeLog: * ada-valprint.c (ada_val_print_gnat_array): Remove language parameter and use Ada language definition instead. (ada_val_print_ptr): Remove unused language parameter. (ada_val_print_num): Remove language parameter and use Ada language definition instead. (ada_val_print_enum, ada_val_print_flt): Remove unused language parameter. (ada_val_print_struct_union, ada_val_print_ref): Remove language parameter and use Ada language definition instead. (ada_val_print_1): Update all ada_val_print_xxx calls. Remove language parameter. (ada_val_print): Update ada_val_print_1 call. gdb/testsuite/ChangeLog: * gdb.ada/frame_arg_lang.exp: New testcase. * gdb.ada/frame_arg_lang/bla.adb: New file. * gdb.ada/frame_arg_lang/pck.ads: New file. * gdb.ada/frame_arg_lang/pck.adb: New file. * gdb.ada/frame_arg_lang/foo.c: New file. Tested on x86_64-linux, no regressions.
2019-05-08Change some remote.c globals to "static"Tom Tromey2-3/+9
I noticed a three globals in remote.c that could be static. This patch makes this change. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * remote.c (remote_hw_watchpoint_limit) (remote_hw_watchpoint_length_limit, remote_hw_breakpoint_limit): Now static.
2019-05-08Move "watchdog" to remote.cTom Tromey4-28/+34
The "watchdog" global is only used in remote.c, so this patch moves it there and makes it static. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * maint.c (_initialize_maint_cmds): Move initialization code to remote.c. (watchdog, show_watchdog): Move to remote.c. * remote.c (watchdog, show_watchdog): Move from maint.c. Make "watchdog" static. (_initialize_remote): Move initialization code from maint.c. * defs.h (watchdog): Don't declare.
2019-05-08Move interpreter_p declaration to main.hTom Tromey5-3/+12
This moves the interpreter_p declaration from defs.h to main.h. I think this makes more sense, as it is defined in main.c. Also, this declaration was in the wrong place -- between a comment and the things the comment described. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * tui/tui-interp.c: Include main.h. * interps.c: Include main.h. * main.h (interpreter_p): Declare. * defs.h (interpreter_p): Don't declare.
2019-05-08Don't declare read_unsigned_leb128 in defs.hTom Tromey4-4/+9
I noticed that read_unsigned_leb128 is declared in defs.h. There's no reason this should be here, so this patch moves it to dwarf2read.h. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * dwarf2loc.c: Include dwarf2read.h. * defs.h (read_unsigned_leb128): Don't declare. * dwarf2read.h (read_unsigned_leb128): Declare.
2019-05-08Fix build problem in fputs_maybe_filteredTom Tromey2-1/+6
When merging commit 99f20f ("Fix style bug when paging") to master, I had to make some changes to get it to compile again. Unfortunately, I must not have added these to the index at the correct time, because they were not committed. This patch fixes the problem. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * utils.c (fputs_maybe_filtered): Call can_emit_style_escape as a method.
2019-05-08Fix style bug when pagingTom Tromey2-3/+26
Philippe pointed out a styling bug that would occur in some conditions when paging: https://sourceware.org/ml/gdb-patches/2019-04/msg00101.html I was finally able to reproduce this, and this patch fixes the bug. The problem occurred when text overflowed the line, causing a pagination prompt, but when no wrap column had been set. In this case, the current style was reset to show the prompt, but then not reset back to the previously applied style before emitting the rest of the line. The fix is to record the applied style in this case, and re-apply it afterward -- but only if the pager prompt was emitted, something that the existing style.exp pointed out on the first, more naive, version of the patch. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * utils.c (fputs_maybe_filtered): Reset style after paging, even when no wrap column is set.
2019-05-08Correctly handle non-C-style arrays in c_get_stringTom Tromey4-4/+48
A user here noticed that the Python Value.string method did not work for Ada arrays. I tracked this down to an oddity in value_as_address -- namely, it calls coerce_array, but that function will not force array coercion when the language has c_style_arrays=false, as Ada does. This patch fixes the problem by changing c_get_string so that arrays take the "in GDB's memory" branch. The actual patch is somewhat more complicated than you might think, because the caller can request more array elements than the type allows. This is normal when the type is using the C struct hack. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * c-lang.c (c_get_string): Handle non-C-style arrays. gdb/testsuite/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * gdb.python/py-value.exp (test_value_in_inferior): Add Ada test.
2019-05-08Change ptype/o to print bit offsetTom Tromey6-42/+40
Consider this short C example: struct inner { unsigned x; unsigned y : 3; unsigned z : 3; }; struct outer { unsigned char o : 3; struct inner i __attribute__ ((packed)); }; When I use "ptype/o" on this, I get: (gdb) ptype/o struct outer /* offset | size */ type = struct outer { /* 0: 5 | 1 */ unsigned char o : 3; /* XXX 5-bit hole */ /* 1 | 8 */ struct inner { /* 1 | 4 */ unsigned int x; /* 5:29 | 4 */ unsigned int y : 3; /* 5:26 | 4 */ unsigned int z : 3; /* XXX 2-bit padding */ /* XXX 3-byte padding */ /* total size (bytes): 8 */ } i; /* total size (bytes): 9 */ } In the location of "o" ("0: 5"), the "5" means "there are 5 bits left relative to the size of the underlying type. I find this very difficult to follow. On irc, Sergio said that this choice came because it is what pahole does. However, I think it's not very useful, and maybe is just an artifact of the way that DW_AT_bit_offset was defined in DWARF 3. This patch changes ptype/o to print the offset of a bitfield in a more natural way, that is, using the bit number according to the platform's bit numbering. With this patch, the output is now: (gdb) ptype/o struct outer /* offset | size */ type = struct outer { /* 0: 0 | 1 */ unsigned char o : 3; /* XXX 5-bit hole */ /* 1 | 8 */ struct inner { /* 1 | 4 */ unsigned int x; /* 5: 0 | 4 */ unsigned int y : 3; /* 5: 3 | 4 */ unsigned int z : 3; /* XXX 2-bit padding */ /* XXX 3-byte padding */ /* total size (bytes): 8 */ } i; /* total size (bytes): 9 */ } This is better, IMO, because now the "offset" of a bitfield is consistent with the offset of an ordinary member, referring to its offset from the start of the structure. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * typeprint.c (print_offset_data::update): Print the bit offset, not the number of bits remaining. gdb/doc/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * gdb.texinfo (Symbols): Document change to ptype/o. gdb/testsuite/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * gdb.base/ptype-offsets.exp: Update tests.
2019-05-08Fix ptype/o comment formattingTom Tromey5-253/+266
I noticed that ptype/o will print: /* 3: 3 | 1 */ signed char a4 : 2; /* XXX 3-bit hole */ That is, "*/" at the end of the "hole" message does not line up with the other comment ends. I thought it would be a bit nicer if this did line up, so I fixed it. Then, to my surprise, I found that I could not make ptype-offsets.exp fail. I still am not sure why it doesn't fail, but changing the tests to use string_to_regexp and changing the quoting helped. This in turn showed that some of the existing test cases were wrong, so I've also updated them here. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * typeprint.c (print_offset_data::maybe_print_hole): Add extra padding at end of comment. gdb/testsuite/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * gdb.base/ptype-offsets.exp: Use string_to_regexp. Fix test cases. * gdb.base/ptype-offsets.cc (struct abc) <my_int_type>: Now "short".
2019-05-08Fix VLA printing for AdaTom Tromey5-2/+111
While looking at a different Ada problem, I found that printing a record containing a VLA did not work properly. I tracked the problem down to dwarf2_evaluate_property trying, and failing, to compare two types that differed only in qualifiers. This patch changes dwarf2_evaluate_property to ignore qualifiers when comparing types. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * dwarf2loc.c (dwarf2_evaluate_property) <PROP_ADDR_OFFSET>: Compare main types. gdb/testsuite/ChangeLog 2019-05-08 Tom Tromey <tromey@adacore.com> * gdb.ada/vla.exp: New file. * gdb.ada/vla/vla.adb: New file.
2019-05-08Sign-extend start and stop address inputs to objdumpFaraz Shahbazker3-0/+88
For targets that treat addresses as signed (MIPS/SH64), user-specified start/stop address limits cannot be compared directly to section VMAs. We must sign-extend user-specified 32-bit address limits which have bit 31 set for such targets. binutils/ * objdump.c (sign_extend_address): New function. (dump_bfd): Sign-extend user-specified start/stop addresses for targets that need it. * testsuite/binutils-all/objdump.exp: Add tests for objdump with start and stop addresses in higher address ranges.
2019-05-08Fix compile time warning when building the linker in a MinGw32 environment ↵Pekka Sepp?nen2-1/+7
using gcc 8. PR 24536 * ldbuildid.c (generate_build_id): Cast return value from GetProcAddress in order to avoid a compile time warning.
2019-05-08Do not force the m68k-elf linker to fail if it encoutners a non-ELF format file.Nick Clifton2-2/+10
PR 24523 * elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Return TRUE rather than FALSE if encountering a non-ELF file.
2019-05-08gas/elf dwarf2 testsAlan Modra35-220/+243
Make them work for tile, by using ".quad 0" as the simulated instruction and doubling size of aligns. The larger aligns tripped over riscv alignment handling, fixed by adding -mno-relax there. Also disable link-relax for avr, pru and xtensa, allowing these targets to pass these tests. With link-time relaxation enabled, these targets emit alignment relocations rather than aligning at assembly time. This means the assembler doesn't see a change in PC when it is expected over an alignment frag and thus view numbers are calculated incorrectly. * testsuite/gas/elf/dwarf2-1.s, * testsuite/gas/elf/dwarf2-2.s, * testsuite/gas/elf/dwarf2-5.s, * testsuite/gas/elf/dwarf2-7.s, * testsuite/gas/elf/dwarf2-8.s, * testsuite/gas/elf/dwarf2-9.s, * testsuite/gas/elf/dwarf2-10.s, * testsuite/gas/elf/dwarf2-11.s, * testsuite/gas/elf/dwarf2-12.s, * testsuite/gas/elf/dwarf2-13.s, * testsuite/gas/elf/dwarf2-14.s, * testsuite/gas/elf/dwarf2-15.s, * testsuite/gas/elf/dwarf2-16.s, * testsuite/gas/elf/dwarf2-17.s, * testsuite/gas/elf/dwarf2-18.s, * testsuite/gas/elf/dwarf2-19.s: Double size of align and simulated instructions. * testsuite/gas/elf/dwarf2-1.d, * testsuite/gas/elf/dwarf2-2.d, * testsuite/gas/elf/dwarf2-5.d, * testsuite/gas/elf/dwarf2-7.d, * testsuite/gas/elf/dwarf2-8.d, * testsuite/gas/elf/dwarf2-9.d, * testsuite/gas/elf/dwarf2-10.d, * testsuite/gas/elf/dwarf2-11.d, * testsuite/gas/elf/dwarf2-12.d, * testsuite/gas/elf/dwarf2-13.d, * testsuite/gas/elf/dwarf2-14.d, * testsuite/gas/elf/dwarf2-15.d, * testsuite/gas/elf/dwarf2-16.d, * testsuite/gas/elf/dwarf2-17.d, * testsuite/gas/elf/dwarf2-18.d, * testsuite/gas/elf/dwarf2-19.d: Use xfail rather than notarget. Remove avr, pru, tile, xtensa from xfails. Update expected output. * testsuite/gas/elf/elf.exp: Sort targets. (dump_opts): Pass {as -mno-relax} for riscv, {as -mno-link-relax} for avr and pru, and {as --no-link-relax} for xtensa to dwarf tests. * testsuite/gas/elf/section2.e-miwmmxt: Delete unused file.
2019-05-08xtensa ignores option --no-link-relaxAlan Modra2-3/+10
md_begin happens after md_parse_option. * config/tc-xtensa.c (opt_linkrelax): New variable. (md_parse_option): Set it here. (md_begin): Copy opt_linkrelax to linkrelax.
2019-05-08PR24520, gprof fails to read compressed debug dataAlan Modra2-0/+7
PR 24520 * corefile.c (core_init): Set BFD_DECOMPRESS.
2019-05-08Automatic date update in version.inGDB Administrator1-1/+1
2019-05-07xfail locview tests on mep that use complex relocs for view numbersAlexandre Oliva3-2/+9
Expressions that compute view numbers that aren't simplified early enough to a constant end up being selected for representation as complex relocations, enabled on mep-* targets. It would be possible to recognize such expressions, that can resolve to constants, but this problem was hit before, in preexisting tests, so xfail the new hits similarly. The new hits were caused by yesterday's patch to dwarf2dbg.c: views in the beginning of subsections are now computed later, based on the final views or previous subsections in the same section. for gas/ChangeLog * testsuite/gas/elf/dwarf2-18.d: Xfail mep-*. * testsuite/gas/elf/dwarf2-19.d: Likewise.
2019-05-07[gdb/testsuite] Fix ls_host return in index-cache.expTom de Vries2-1/+5
When adding a debug print here in index-cache.exp: ... proc_with_prefix test_cache_disabled { cache_dir } { lassign [ls_host $cache_dir] ret files_before + puts "before: '$files_before'" + exit ... we have: ... files_before: '' ... When further adding: ... proc_with_prefix test_cache_disabled { cache_dir } { + exec touch $cache_dir/foo.1 $cache_dir/foo.2 $cache_dir/foo.3 ... we have: ... files_before: 'foo.1' ... while we're expecting file_before to contain foo.[123]. Fix this by making the return statement in ls_host return a list rather than a string (in accordance with the ls_host documentation), after which we have: ... files_before: 'foo.1 foo.2 foo.3' ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-05-07 Tom de Vries <tdevries@suse.de> * gdb.base/index-cache.exp (ls_host): Fix return statement.
2019-05-07[gdb/testsuite] Fix .debug_aranges in watch-loc.cTom de Vries2-1/+10
When running gdb.dlang/watch-loc.exp with target board cc-with-debug-names, we run into: ... FAIL: gdb.dlang/watch-loc.exp: disassemble _Dmain (GDB internal error) ... in more detail: ... (gdb) disassemble _Dmain gdb/dwarf2read.c:5293: internal-error: \ compunit_symtab* dw2_find_pc_sect_compunit_symtab(objfile*, \ bound_minimal_symbol, CORE_ADDR, obj_section*, int): \ Assertion `result != NULL' failed. ... The problem is that the .debug_aranges section in watch-loc.c contains a debug_info_offset which is set to 0: ... asm ( " .pushsection .debug_aranges,\"\",%progbits\n" " .4byte .Laranges_end - .Laranges_start\n" ".Laranges_start:\n" " .2byte 0x2\n" " .4byte 0\n" ... while the compilation unit at offset 0 in the .debug_section in the executable is in fact not the compilation unit generated from watch-loc-dw.S. [ Note: this is a non-trivial test-case. The file watch-loc-dw.S contains a .debug_info section, but not an .debug_aranges section or any actual code. The file watch-loc.c contains code and a .debug_aranges section, but no other debug section. So, the intent for the .debug_aranges section in watch-loc.c is to refer to a compilation unit in the .debug_info section in watch-loc-dw.S. ] This happens when linked in object files contain dwarf info and are placed in the .debug_info section before the compilation units generated from watch-loc.c and watch-loc-dw.S. Fix this by defining the debug_info_offset field using a label .Lcu1_begin that defines the start of an empty .debug_section compilation unit: ... asm ( + " .pushsection .debug_info,\"\",%progbits\n" + ".Lcu1_begin:" + " .popsection\n" " .pushsection .debug_aranges,\"\",%progbits\n" " .4byte .Laranges_end - .Laranges_start \n" ".Laranges_start:\n" " .2byte 0x2\n" - " .4byte 0\n" + " .4byte .Lcu1_begin\n" ... which during linking merges with the start of the .debug_info section of watch-loc-dw.S. Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names. gdb/testsuite/ChangeLog: 2019-05-07 Tom de Vries <tdevries@suse.de> PR testsuite/24522 * gdb.dlang/watch-loc.c: Fix debug_info_offset in .debug_aranges section.
2019-05-07[gdb/testsuite] Fix .debug_aranges in dw2-case-insensitive-debug.STom de Vries2-1/+7
When running gdb.dwarf2/dw2-case-insensitive.exp with target board cc-with-debug-names, we run into: ... FAIL: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off \ (GDB internal error) ... in more detail: ... (gdb) info functions fUnC_lang gdb/dwarf2read.c:5293: internal-error: \ compunit_symtab* dw2_find_pc_sect_compunit_symtab(objfile*, \ bound_minimal_symbol, CORE_ADDR, obj_section*, int): \ Assertion `result != NULL' failed. ... The problem is that the .debug_aranges section in dw2-case-insensitive-debug.S contains a debug_info_offset which is set to 0: ... .section .debug_aranges,"",@progbits .4byte .Laranges_end - .Laranges_start .Laranges_start: .2byte 0x2 .4byte 0 ... while the compilation unit at offset 0 in the .debug_section of the executable is in fact not the compilation unit generated from dw2-case-insensitive-debug.S. This happens when linked in object files contain dwarf info and are placed in the .debug_info section before the compilation unit generated from dw2-case-insensitive-debug.S. Fix this by defining the debug_info_offset field using the label .Lcu1_begin that defines the start of the compilation unit: ... - .4byte 0 + .4byte .Lcu1_begin ... Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names. gdb/testsuite/ChangeLog: 2019-05-07 Tom de Vries <tdevries@suse.de> PR testsuite/24522 * gdb.dwarf2/dw2-case-insensitive-debug.S: Fix debug_info_offset in .debug_aranges section.
2019-05-07[gdb/testsuite] Fix handling of DW_FORM_ref_addr in dwarf assemblerTom de Vries2-4/+7
When running gdb.dwarf2/multidictionary.exp with target board cc-with-dwz and current dwz, we run into a dwz abort: ... gdb compile failed, gdb/contrib/cc-with-tweaks.sh: line 188: 11484 Aborted \ (core dumped) $DWZ "$output_file" > /dev/null 2>&1 UNTESTED: gdb.dwarf2/multidictionary.exp: multidictionary.exp ... The dwz abort (PR dwz/24169) is caused by an invalid DW_FORM_ref_addr in the multidictionary binary. The multidictionary binary is build from multidictionary.S which is generated using the dwarf assembler, and multidictionary.S contains dwarf for 3 compilation units. In multidictionary0.o (generated from multidictionary.S), we find a concrete formal parameter DIE: ... <2><dc>: Abbrev Number: 4 (DW_TAG_formal_parameter) <dd> DW_AT_abstract_origin: <0xa6> ... referring to an abstract formal parameter DIE at 0xa6: ... <2><a6>: Abbrev Number: 8 (DW_TAG_formal_parameter) <a7> DW_AT_name : msg <ab> DW_AT_type : <0x92> ... but in the multidictionary binary the concrete formal parameter DIE is still referring to 0xa6: ... <2><1a3>: Abbrev Number: 4 (DW_TAG_formal_parameter) <1a4> DW_AT_abstract_origin: <0xa6> ... while the abstract formal parameter DIE has moved to 0x16d: ... <2><16d>: Abbrev Number: 8 (DW_TAG_formal_parameter) <16e> DW_AT_name : msg <172> DW_AT_type : <0x159> ... The concrete formal parameter DIE is specified in multidictionary.S like this: ... .Llabel21: .uleb128 4 .4byte .Llabel17 - .Lcu1_begin ... The problem is that the .Lcu1_begin label is assumed to mark the start of the .debug_info section in the executable, but in fact it marks the start of the first compilation unit from multidictionary.S in the executable. Usually these two entities are the same, but they are not when linked in object files contain dwarf info and are placed in the .debug_info section before the compilation units generated from multidictionary.S. Fix this in the dwarf assembler by generating instead the label itself: ... .Llabel21: .uleb128 4 .4byte .Llabel17 ... resulting in a relocation in the object file: ... Offset Info Type Sym. Value Sym. Name + Addend 0000000000dd 00040000000a R_X86_64_32 0000000000000000 .debug_info + a6 ... and resulting in the correct offset in the executable: ... <2><1a3>: Abbrev Number: 4 (DW_TAG_formal_parameter) <1a4> DW_AT_abstract_origin: <0x16d> ... Tested on x86_64-linux with native and cc-with-dwz. gdb/testsuite/ChangeLog: 2019-05-07 Tom de Vries <tdevries@suse.de> PR testsuite/24159 * lib/dwarf.exp: Fix handling of DW_FORM_ref_addr.
2019-05-07Tidy use_complex_relocs_forAlan Modra2-22/+18
Since I was looking at this I decided to fix the formatting, and used an old C switch statements trick to factor out common code. * symbols.c (use_complex_relocs_for): Formatting. Factor out X_add_symbol tests.
2019-05-06Fix scoped_mmap includesTom Tromey3-3/+6
I noticed that scoped_mmap.h included config.h, and that scoped_mmap.c included defs.h. This patch fixes both of these problems. Tested by the buildbot. gdb/ChangeLog 2019-05-06 Tom Tromey <tom@tromey.com> * common/scoped_mmap.c: Include common-defs.h. * common/scoped_mmap.h: Don't include config.h.
2019-05-07Automatic date update in version.inGDB Administrator1-1/+1
2019-05-06Fix regression caused by recently added syscall restart codeKevin Buettner2-0/+7
This line of code... *(int64_t *) ptr = *(int32_t *) ptr; ...in linux-x86-low.c is not needed (and does not work correctly) within a 32-bit executable. I added an __x86_64__ ifdef (which is used extensively elsewhere in the file for like purposes) to prevent this code from being included in 32-bit builds. It fixes the following regressions when running on native i686-pc-linux-gnu: FAIL: gdb.server/abspath.exp: continue to main FAIL: gdb.server/connect-without-multi-process.exp: multiprocess=auto: continue to main FAIL: gdb.server/connect-without-multi-process.exp: multiprocess=off: continue to main FAIL: gdb.server/ext-restart.exp: restart: run to main FAIL: gdb.server/ext-restart.exp: run to main FAIL: gdb.server/ext-run.exp: continue to main FAIL: gdb.server/ext-wrapper.exp: print d FAIL: gdb.server/ext-wrapper.exp: restart: print d FAIL: gdb.server/ext-wrapper.exp: restart: run to marker FAIL: gdb.server/ext-wrapper.exp: run to marker FAIL: gdb.server/no-thread-db.exp: continue to breakpoint: after tls assignment FAIL: gdb.server/reconnect-ctrl-c.exp: first: stop with control-c FAIL: gdb.server/reconnect-ctrl-c.exp: second: stop with control-c FAIL: gdb.server/run-without-local-binary.exp: run test program until the end FAIL: gdb.server/server-kill.exp: continue to breakpoint: after server_pid assignment FAIL: gdb.server/server-kill.exp: tstatus FAIL: gdb.server/server-run.exp: continue to main gdb/gdbserver/ChangeLog: * linux-x86-low.c (x86_fill_gregset): Don't compile 64-bit sign extension code on 32-bit builds.
2019-05-06Add load-link, store-conditional paired EVA instructionsFaraz Shahbazker11-4/+124
Add paired load-link and store-conditional instructions to the EVA ASE for MIPS32R6[1]. These instructions are optional within the EVA ASE. Their presence is indicated by the XNP bit in the Config5 register. [1] "MIPS Architecture for Programmers Volume II-A: The MIPS32 Instruction Set Manual", Imagination Technologies Ltd., Document Number: MD00086, Revision 6.06, December 15, 2016, Section 3.2 "Alphabetical List of Instructions", pp. 230-231, pp. 357-360. gas/ * config/tc-mips.c (mips_set_ase): Handle ASE_EVA_R6. (macro) <M_LLWPE_AB, M_SCWPE_AB>: New cases. (mips_after_parse_args): Translate EVA to EVA_R6. * testsuite/gas/mips/ase-errors-1.s: Add new instructions. * testsuite/gas/mips/eva.s: Likewise. * testsuite/gas/mips/ase-errors-1.l: Check errors for new instructions. * testsuite/gas/mips/mipsr6@eva.d: Check new test cases. include/ * opcode/mips.h (ASE_EVA_R6): New macro. (M_LLWPE_AB, M_SCWPE_AB): New enum values. opcodes/ * mips-dis.c (mips_calculate_combination_ases): Add ISA argument and set ASE_EVA_R6 appropriately. (set_default_mips_dis_options): Pass ISA to above. (parse_mips_dis_option): Likewise. * mips-opc.c (EVAR6): New macro. (mips_builtin_opcodes): Add llwpe, scwpe. Derived from patch authored by Andrew Bennett <andrew.bennett@imgtec.com>
2019-05-06sym->sy_value is not valid for struct local_symbolAlan Modra2-1/+6
Fixes this mep-elf error: gas/elf/dwarf2-19.s: Error: Unknown expression operator (enum 0) gas/elf/dwarf2-19.s: Error: cannot convert expression symbol .L2 to complex relocation * symbols.c (symbol_relc_make_sym): Do not access sym->sy_value directly.
2019-05-06[gdb/testsuite] Fix index-cache.exp with cc-with-{gdb-index,debug-names}Tom de Vries3-8/+49
In gdb.base/index-cache.exp, handle the case that binfile contains either a .gdb_index or .debug_names index section. Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names. gdb/testsuite/ChangeLog: 2019-05-06 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (exec_has_index_section): New proc. * gdb.base/index-cache.exp: Handle case that binfile contains an index section.
2019-05-06PicoJava weak undefined symbolsAlan Modra4-1/+9
This fixes the recently added ld-elf/pr24511 test failure on pj-elf. Incidentally, pj-elf has failed its gas "pj" test since 2005-12-22 (git commit 54758c3e39). I think that makes the target ripe for obsolescence. bfd/ * elf32-pj.c (pj_elf_reloc): Don't report undefined weak as an error. ld/ * testsuite/ld-undefined/weak-undef.exp: Don't xfail pj.
2019-05-06PowerPC reloc symbols that shouldn't be adjustedAlan Modra7-17/+51
GOT and PLT relocs shouldn't have their symbols replaced with a section symbol plus added. Nor should the HIGHA TLS relocations, which failed to be caught by the range test in ppc_fix_adjustable. bfd/ * reloc.c (BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA), (BFD_RELOC_PPC64_DTPREL16_HIGH, BFD_RELOC_PPC64_DTPREL16_HIGHA): Sort before BFD_RELOC_PPC64_DTPREL16_HIGHESTA entry. gas/ * config/tc-ppc.c (ppc_fix_adjustable): Exclude all GOT and PLT relocs, and VLE sdarel relocs. * testsuite/gas/ppc/power4.d: Adjust.
2019-05-05[LVu] base subseg head view on prev subseg's tailAlexandre Oliva5-5/+107
Location views at borders between subsegments/subsections in the same segment/section are computed as if each new subsegment/subsection started with a forced view reset to zero, but the line number program does not introduce resets that are not explicitly requested, so if a subsegment ends at the same address another starts, the line number program will have a continuity of views at the border address, whereas the initial view number label in the latter subsegment will be miscomputed as zero. This patch delays the assignment of view expressions at subsegment heads to the time of chaining the frags of subsegments into a single segment, so that they are set based on the view at the end of the previous subsegment in the same segment. The line number program created for the test program had an unnecessary DW_LNS_advance_pc at the end. This patch also arranges for us not to emit it. for gas/ChangeLog * dwarf2dbg.c (set_or_check_view): Skip heads when assigning views of prior locs. (dwarf2_gen_line_info_1): Skip heads. (size_inc_line_addr, emit_inc_line_addr): Drop DW_LNS_advance_pc for zero addr delta. (dwarf2_finish): Assign views for heads of segments. * testsuite/gas/elf/dwarf2-19.d: New. * testsuite/gas/elf/dwarf2-19.s: New. * testsuite/gas/elf/elf.exp: Test it.
2019-05-06Automatic date update in version.inGDB Administrator1-1/+1
2019-05-05Automatic date update in version.inGDB Administrator1-1/+1
2019-05-04Remove a VEC from aarch64-tdep.cTom Tromey2-21/+22
This removes a VEC from aarch64-tdep.c, replacing it with a std::vector. gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * aarch64-tdep.c (stack_item_t): Remove typedef and DEF_VEC. (struct aarch64_call_info): Add initializers. <si>: Now a std::vector. (pass_on_stack, aarch64_push_dummy_call): Update.
2019-05-04Remove a VEC from ppc-linux-nat.cTom Tromey2-28/+39
This replaces a VEC in ppc-linux-nat.c with a std::vector. gdb/ChangeLog 2019-05-04 Simon Marchi <simon.marchi@efficios.com> Tom Tromey <tom@tromey.com> * ppc-linux-nat.c (thread_points_p): Remove typedef and DEF_VEC. (ppc_threads): Now a std::vector. Now static. (hwdebug_find_thread_points_by_tid) (ppc_linux_nat_target::low_new_thread, ppc_linux_thread_exit): Update.
2019-05-04Change arc_tdesc_init to return boolTom Tromey2-9/+13
This changes arc_tdesc_init to return bool. gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * arc-tdep.c (arc_tdesc_init): Return bool.
2019-05-04Use gdb_assert_not_reached in arm-linux-nat.cTom Tromey2-1/+6
This changes arm-linux-nat.c to use gdb_assert_not_reached rather than an assert of false. gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * arm-linux-nat.c (arm_linux_nat_target::can_use_hw_breakpoint): Use gdb_assert_not_reached.
2019-05-04Use "false" in compile_cplus_convert_enumTom Tromey2-1/+6
This changes compile_cplus_convert_enum to use "false". Note that this variable is never modified, which seems like an error. I filed PR compile/24473 for this. gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * compile/compile-cplus-types.c (compile_cplus_convert_enum): Use "false".
2019-05-04Use bool, true, and false in arc-tdep.cTom Tromey2-4/+8
This changes arc-tdep.c to use bool, true, and false. gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * arc-tdep.c (arc_tdesc_init): Use bool.
2019-05-04Use "false" in select_frame_for_miTom Tromey2-1/+5
This changes select_frame_for_mi to use "false" rather than "FALSE". gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * stack.c (select_frame_for_mi): Use "false", not "FALSE".
2019-05-04Change valid_command_p to return boolTom Tromey2-3/+7
This changes valid_command_p to return bool. gdb/ChangeLog 2019-05-04 Tom Tromey <tom@tromey.com> * cli/cli-cmds.c (valid_command_p): Return bool.