aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-09-19lookup_minimal_symbol_textusers/palves/jit-speedupPedro Alves1-1/+1
Noticed that create_exception_master_breakpoint could be using the cheaper lookup_minimal_symbol_text instead of lookup_minimal_symbol.
2016-09-19More O(N) eliminationPedro Alves3-14/+11
2016-09-19Incremental breakpoint_re_set for solib_addPedro Alves1-6/+1
Finaly enable per-objfile breakpoint_re_set for solibs
2016-09-19breakpoint_re_set probesPedro Alves4-65/+82
2016-09-19find_function_start_salPedro Alves2-1/+2
2016-09-19Incremental breakpoint_re_set for linespecPedro Alves8-119/+329
When you have a pending breakpoint, the next bottleneck is breakpoint_re_set again. $ time $g --batch -q -ex "run" -ex "c" -iex "set breakpoint pending on" -iex "b mainasdfasdf" --args ./testsuite/outputs/gdb.base/jit/jit-main ./testsuite/outputs/gdb.base/jit/jit-solib.so 8000 No symbol table is loaded. Use the "file" command. Breakpoint 1 (mainasdfasdf) pending. /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.base/jit-main.c:164: libname = ./testsuite/outputs/gdb.base/jit/jit-solib.so, count = 8000 [Inferior 1 (process 25753) exited normally] The program is not being run. real 0m31.738s user 0m29.221s sys 0m2.827s This implement per-objfile re-set for linespece-based breakpoints. - Hoist out plt locations when we find other breakpoint locations It's what the linespec code does if we let it look up in the whole program space. - Check that the sals the linespec code returns match the search scope - Address locations always use a program_space-wide search scope - Fix exception.exp - we may only find the probe interface after seeing __cxa_begin_catch on other objfiles - validate_sals
2016-09-19Incremental breakpoint_re_set for longjmp, etc. master breakpointsPedro Alves17-147/+304
perf shows the next bottleneck is breakpoint_re_set. Even when you don't have user-visible pending breakpoints, gdb still needs to re-set _internal_ breakpoints on every objfile loaded. Specifically, time is spent re-setting the longjmp/terminate, etc. master breakpoints of _all_ objfiles... So start implementing limiting breakpoint_re_set to the objfile that was just loaded. Introduce a struct sym_search_scope and generalize the ALL_SEARCH_OBJFILES approach added by a previous patch. Then when an objfile is loaded, pass a sym_search_scope to breakpoint_re_set that indicates that the scope is a single objfile. For cases where we want to reset the whole program space, we pass a sym_search_scope to breakpoint_re_set that indicates that the scope is the whole program space (i.e., all objfiles in that program space). Then we need to plumb passing that sym_search_scope to all the breakpoint_ops->re_set methods. In the internal breakpoints implementation, it's used to know to only delete the master breakpoint of the just re-loaded objfile, leaving others alone. Other breakpoint types are left to subsequent patches. This is another huge speed up for the normal case you don't have pending breakpoints. Note we need to store the objfile a breakpoint location is set at in bp_location, in order to be able to know whether we should re-set it or not when a single-objfile re-set comes along. And that requires passing down the objfile the internal breakpoint was set at in the first place, thus the create_*_breakpoint changes in this patch.
2016-09-19Defer breakpoint_re_set until after main program+initial solibs are loadedPedro Alves3-3/+3
Fixes execl tests This defers breakpoint_re_set until we've loaded all the main program and the initial solibs. Good on its own anyway, but fixes an issue with breakpoint_re_set limited to a single objfile later in the series.
2016-09-19Use symfile_add_flags in solib_addPedro Alves7-22/+73
The main reason here is being able to tell solib_add to defer breakpoint re-set. (Not used in this patch yet).
2016-09-19Don't run forever in execl-update-breakpoint.expPedro Alves1-0/+2
2016-09-19objfile_dataPedro Alves1-23/+89
The perf profile now shows objfile_data at the top. It's not that that function is expensive. It's that it's called _a lot_ of times. Whenever we register/unregister a JIT objfile, we iterate over the whole list of existing objfiles, and call objfile_data on each, through jit_find_objf_with_entry_addr. Get rid of that O(N) loop by keeping a list of JIT objfiles on the side, sorted by addr and using a binary search for the look up instead.
2016-09-19Stale objfile_unlink commentPedro Alves3-57/+66
07cd4b97 added the internal_error The next bootleneck is adding/removing objfiles from the list of objfiles... The problem is that we iterate over the list looking for the tail objfile every single time. When we have thousands of objfiles, that's costly. So keep a tail pointer to the list instead.
2016-09-19ALL_SEARCH_OBJFILESPedro Alves1-61/+77
The next bottleneck is that the minsym lookup code always iterates over _all_ objfiles, even when we know which objfile to do the look up in... Introduce a macro that knows to get to the right search scope objfiles.
2016-09-19Avoid creating a frame in internal stopsPedro Alves3-47/+76
This speeds up JIT library loading by ${a lot}.
2016-09-19Get rid of sections sorting with qsort and use an incrementally updated ↵Pedro Alves6-301/+297
addrmap instead This gives a massive speed up. The problem with the qsort is that we qsort for any one of the thousands of jit loads/unloads, and when you have thousands of objfiles, that gets very slow. In this scenario, we're constantly adding/removing a handfull of obj_sections to a set of thousands of already-sorted obj_sections. It's much cheaper to do an incremental update. I'm using a mutable addrmap for this, but I needed to add a new primitive that allowed updating a region's object, to handle the case of overlapping sections. The only primitive available, only allows setting a value to a currently-NULL region.
2016-09-19More fixing C++ and PLTs: staticPedro Alves5-26/+158
2016-09-19Fix C++ and PLTs (PR 17201, PR17199 ?)Pedro Alves4-0/+228
2016-09-19nm handling of synthetic symbolsAlan Modra2-17/+16
Symbol sorting means we can't assume that the last n symbols are synthetic. * nm.c (print_symbol): Remove is_synthetic param. Test sym->flags instead. (print_size_symbols, print_symbols): Adjust to suit, deleting now unused synth_count param and fromsynth var. (display_rel_file): Adjust, localizing synth_count.
2016-09-19Consolidate target_mourn_inferior between GDB and gdbserverSergio Durigan Junior20-28/+72
This patch consolidates the API of target_mourn_inferior between GDB and gdbserver, in my continuing efforts to make sharing the fork_inferior function possible between both. GDB's version of the function did not care about the inferior's ptid being mourned, but gdbserver's needed to know this information. Since it actually makes sense to pass the ptid as an argument, instead of depending on a global value directly (which GDB's version did), I decided to make the generic API to accept it. I then went on and extended all calls being made on GDB to include a ptid argument (which ended up being inferior_ptid most of the times, anyway), and now we have a more sane interface. On GDB's side, after talking to Pedro a bit about it, we decided that just an assertion to make sure that the ptid being passed is equal to inferior_ptid would be enough for now, on the GDB side. We can remove the assertion and perform more operations later if we ever pass anything different than inferior_ptid. Regression tested on our BuildBot, everything OK. I'd appreciate a special look at gdb/windows-nat.c's modification because I wasn't really sure what to do there. It seemed to me that maybe I should build a ptid out of the process information there, but then I am almost sure the assertion on GDB's side would trigger. gdb/ChangeLog: 2016-09-19 Sergio Durigan Junior <sergiodj@redhat.com> * darwin-nat.c (darwin_kill_inferior): Adjusting call to target_mourn_inferior to include ptid_t argument. * fork-child.c (startup_inferior): Likewise. * gnu-nat.c (gnu_kill_inferior): Likewise. * inf-ptrace.c (inf_ptrace_kill): Likewise. * infrun.c (handle_inferior_event_1): Likewise. * linux-nat.c (linux_nat_attach): Likewise. (linux_nat_kill): Likewise. * nto-procfs.c (interrupt_query): Likewise. (procfs_interrupt): Likewise. (procfs_kill_inferior): Likewise. * procfs.c (procfs_kill_inferior): Likewise. * record.c (record_mourn_inferior): Likewise. * remote-sim.c (gdbsim_kill): Likewise. * remote.c (remote_detach_1): Likewise. (remote_kill): Likewise. * target.c (target_mourn_inferior): Change declaration to accept new ptid_t argument; use gdb_assert on it. * target.h (target_mourn_inferior): Move function prototype from here... * target/target.h (target_mourn_inferior): ... to here. Adjust it to accept new ptid_t argument. * windows-nat.c (get_windows_debug_event): Adjusting call to target_mourn_inferior to include ptid_t argument. gdb/gdbserver/ChangeLog: 2016-09-19 Sergio Durigan Junior <sergiodj@redhat.com> * server.c (start_inferior): Call target_mourn_inferior instead of mourn_inferior; pass ptid_t argument to it. (resume): Likewise. (handle_target_event): Likewise. * target.c (target_mourn_inferior): New function. * target.h (mourn_inferior): Delete macro.
2016-09-19Automatic date update in version.inGDB Administrator1-1/+1
2016-09-19gdb/s390: Fix build breakage due to std::min/std::max usage without headerPedro Alves2-0/+5
[...] .../gdb/s390-linux-nat.c: In function 'void s390_prepare_to_resume(lwp_info*)': .../gdb/s390-linux-nat.c:703:20: error: 'min' is not a member of 'std' watch_lo_addr = std::min (watch_lo_addr, area->lo_addr); [...] gdb/ChangeLog: 2016-09-18 Pedro Alves <palves@redhat.com> * s390-linux-nat.c: Include <algorithm>.
2016-09-18gdb: Fix std::{min, max}-related build breakage on 32-bit hostsPedro Alves5-5/+13
Building on a 32-bit host fails currently with errors like: .../src/gdb/exec.c: In function ‘target_xfer_status section_table_read_available_memory(gdb_byte*, ULONGEST, ULONGEST, ULONGEST*)’: .../src/gdb/exec.c:801:54: error: no matching function for call to ‘min(ULONGEST, long unsigned int)’ end = std::min (offset + len, r->start + r->length); ^ In file included from /usr/include/c++/5.3.1/algorithm:61:0, from .../src/gdb/exec.c:46: /usr/include/c++/5.3.1/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&) min(const _Tp& __a, const _Tp& __b) ^ /usr/include/c++/5.3.1/bits/stl_algobase.h:195:5: note: template argument deduction/substitution failed: .../src/gdb/exec.c:801:54: note: deduced conflicting types for parameter ‘const _Tp’ (‘long long unsigned int’ and ‘long unsigned int’) end = std::min (offset + len, r->start + r->length); ^ In file included from /usr/include/c++/5.3.1/algorithm:61:0, from .../src/gdb/exec.c:46: /usr/include/c++/5.3.1/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare) min(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ The problem is that the std::min/std::max function templates use the same type for both parameters. When the argument types are different, the compiler can't automatically deduce which template specialization to pick from the arguments' types. Fix that by specifying the specialization we want explicitly. gdb/ChangeLog: 2016-09-18 Pedro Alves <palves@redhat.com> * breakpoint.c (hardware_watchpoint_inserted_in_range): Explicitly specify the std:min/std::max specialization. * exec.c (section_table_read_available_memory): Likewise. * remote.c (remote_read_qxfer): Likewise. * target.c (simple_verify_memory): Likewise.
2016-09-18Automatic date update in version.inGDB Administrator1-1/+1
2016-09-17Improve MinGW support in ReadlineEli Zaretskii14-11/+125
These changes were already accepted upstream in Readline, but GDB did not yet import a newer Readline version. readline/Changelog.gdb: * util.c: Include rlshell.h. (_rl_tropen) [_WIN32 && !__CYGWIN__]: Open the trace file in the user's temporary directory. * tcap.h [HAVE_NCURSES_TERMCAP_H]: Include ncurses/termcap.h. * input.c (w32_isatty) [_WIN32 && !__CYGWIN__]: New function, to replace isatty that is not reliable enough on MS-Windows. (isatty) [_WIN32 && !__CYGWIN__]: Redirect to w32_isatty. (rl_getc): Call _getch, not getch, which could be an ncurses function when linked with ncurses, in which case getch will return EOF for any keystroke, because there's no curses window. * tilde.c (tilde_expand_word) [_WIN32]: * histfile.c (history_filename) [_WIN32]: Windows-specific environment variable to replace HOME if that is undefined. * funmap.c (default_funmap): Compile rl_paste_from_clipboard on all Windows platforms, not just Cygwin. * readline.h (rl_paste_from_clipboard): Include declaration for all Windows platforms. * display.c (insert_some_chars, delete_chars): Don't use the MinGW-specific code if linked with ncurses. * configure.in: * config.h.in: Support ncurses/termcap.h. The configure script was updated accordingly. * complete.c [_WIN32 && !__CYGWIN__]: Initialize _rl_completion_case_fold to 1. (printable_part, rl_filename_completion_function) [_WIN32 && !__CYGWIN__]: Handle the drive letter.
2016-09-17Automatic date update in version.inGDB Administrator1-1/+1
2016-09-16Introduce cleanup to restore current_uioutSimon Marchi7-38/+38
Make a globally available cleanup from a pre-existing one in infrun.c. This is used in a following patch. gdb/ChangeLog: * infrun.c (restore_current_uiout_cleanup): Move to ui-out.c. (print_stop_event): Use make_cleanup_restore_current_uiout. * python/python.c (execute_gdb_command): Likewise. * ui-out.c (restore_current_uiout_cleanup): Move from infrun.c. (make_cleanup_restore_current_uiout): New function definition. * ui-out.h (make_cleanup_restore_current_uiout): New function declaration. * utils.c (do_restore_ui_out): Remove. (make_cleanup_restore_ui_out): Remove. * utils.h (make_cleanup_restore_ui_out): Remove.
2016-09-16gdb: Use std::min and std::max throughoutPedro Alves61-170/+296
Otherwise including <string> or some other C++ header is broken. E.g.: In file included from /opt/gcc/include/c++/7.0.0/bits/char_traits.h:39:0, from /opt/gcc/include/c++/7.0.0/string:40, from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/infrun.c:68: /opt/gcc/include/c++/7.0.0/bits/stl_algobase.h:243:56: error: macro "min" passed 3 arguments, but takes just 2 min(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ /opt/gcc/include/c++/7.0.0/bits/stl_algobase.h:265:56: error: macro "max" passed 3 arguments, but takes just 2 max(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ In file included from .../src/gdb/infrun.c:21:0: To the best of my grepping abilities, I believe I adjusted all min/max calls. gdb/ChangeLog: 2016-09-16 Pedro Alves <palves@redhat.com> * defs.h (min, max): Delete. * aarch64-tdep.c: Include <algorithm> and use std::min and std::max throughout. * aarch64-tdep.c: Likewise. * alpha-tdep.c: Likewise. * amd64-tdep.c: Likewise. * amd64-windows-tdep.c: Likewise. * arm-tdep.c: Likewise. * avr-tdep.c: Likewise. * breakpoint.c: Likewise. * btrace.c: Likewise. * ctf.c: Likewise. * disasm.c: Likewise. * doublest.c: Likewise. * dwarf2loc.c: Likewise. * dwarf2read.c: Likewise. * environ.c: Likewise. * exec.c: Likewise. * f-exp.y: Likewise. * findcmd.c: Likewise. * ft32-tdep.c: Likewise. * gcore.c: Likewise. * hppa-tdep.c: Likewise. * i386-darwin-tdep.c: Likewise. * i386-tdep.c: Likewise. * linux-thread-db.c: Likewise. * lm32-tdep.c: Likewise. * m32r-tdep.c: Likewise. * m88k-tdep.c: Likewise. * memrange.c: Likewise. * minidebug.c: Likewise. * mips-tdep.c: Likewise. * moxie-tdep.c: Likewise. * nds32-tdep.c: Likewise. * nios2-tdep.c: Likewise. * nto-procfs.c: Likewise. * parse.c: Likewise. * ppc-sysv-tdep.c: Likewise. * probe.c: Likewise. * record-btrace.c: Likewise. * remote.c: Likewise. * rs6000-tdep.c: Likewise. * rx-tdep.c: Likewise. * s390-linux-nat.c: Likewise. * s390-linux-tdep.c: Likewise. * ser-tcp.c: Likewise. * sh-tdep.c: Likewise. * sh64-tdep.c: Likewise. * source.c: Likewise. * sparc-tdep.c: Likewise. * symfile.c: Likewise. * target-memory.c: Likewise. * target.c: Likewise. * tic6x-tdep.c: Likewise. * tilegx-tdep.c: Likewise. * tracefile-tfile.c: Likewise. * tracepoint.c: Likewise. * valprint.c: Likewise. * value.c: Likewise. * xtensa-tdep.c: Likewise. * cli/cli-cmds.c: Likewise. * compile/compile-object-load.c: Likewise.
2016-09-16S390: Hardware breakpoint supportAndreas Arnez4-10/+145
Add hardware breakpoint support for S390 targets. gdb/ChangeLog: * s390-linux-nat.c (PER_BIT, PER_EVENT_BRANCH, PER_EVENT_IFETCH) (PER_EVENT_STORE, PER_EVENT_NULLIFICATION) (PER_CONTROL_BRANCH_ADDRESS, PER_CONTROL_SUSPENSION) (PER_CONTROL_ALTERATION): New macros. (struct s390_debug_reg_state) <break_areas>: New member. (s390_forget_process): Free break_areas as well. (s390_linux_new_fork): Copy break_areas as well. (s390_prepare_to_resume): Install hardware breakpoints. (s390_can_use_hw_breakpoint): Indicate support for hardware breakpoints. (s390_insert_hw_breakpoint, s390_remove_hw_breakpoint): New linux_nat target methods. (_initialize_s390_nat): Register them. gdb/testsuite/ChangeLog: * lib/gdb.exp: No longer skip hardware breakpoint tests on s390.
2016-09-16linux-nat: Add function lwp_is_steppingAndreas Arnez5-0/+30
Add the function lwp_is_stepping which indicates whether the given LWP is currently single-stepping. This is a common interface, usable from native GDB as well as from gdbserver. gdb/gdbserver/ChangeLog: * linux-low.c (lwp_is_stepping): New function. gdb/ChangeLog: * nat/linux-nat.h (lwp_is_stepping): New declaration. * linux-nat.c (lwp_is_stepping): New function.
2016-09-16S390: Enable "maint set show-debug-regs"Andreas Arnez2-0/+60
Implement a new function for dumping the S390 "debug registers" (actually, the PER info) and invoke it at appropriate places. Respect the variable show_debug_regs and make it settable by the user. gdb/ChangeLog: * s390-linux-nat.c (gdbcmd.h): New include. (s390_show_debug_regs): New function. (s390_stopped_by_watchpoint): Call it, if show_debug_regs is set. (s390_prepare_to_resume): Likewise. (_initialize_s390_nat): Register the command "maint set show-debug-regs".
2016-09-16S390: Multi-inferior watchpoint supportAndreas Arnez2-10/+157
Support different sets of watchpoints in multiple inferiors. gdb/ChangeLog: * s390-linux-nat.c (watch_areas): Remove variable. Replace by a member of... (struct s390_debug_reg_state): ...this. New struct. (struct s390_process_info): New struct. (s390_process_list): New variable. (s390_find_process_pid, s390_add_process, s390_process_info_get) (s390_get_debug_reg_state): New functions. (s390_stopped_by_watchpoint): Now access the watch_areas VEC via s390_get_debug_reg_state. (s390_prepare_to_resume): Likewise. (s390_insert_watchpoint): Likewise. (s390_remove_watchpoint): Likewise. (s390_forget_process, s390_linux_new_fork): New linux_nat target methods. (_initialize_s390_nat): Register them.
2016-09-16S390: Migrate watch areas from list to VEC typeAndreas Arnez2-37/+45
For S390, the list of active watchpoints is maintained in a list based at "watch_base". This refactors the list to a vector "watch_areas". gdb/ChangeLog: * s390-linux-nat.c (s390_watch_area): New typedef. Define a VEC. (watch_base): Remove variable. (watch_areas): New variable. (s390_stopped_by_watchpoint): Transform operations on the watch_base list to equivalent operations on the watch_areas VEC. (s390_prepare_to_resume): Likewise. (s390_insert_watchpoint): Likewise. (s390_remove_watchpoint): Likewise.
2016-09-16S390: Avoid direct access to lwp_info structureAndreas Arnez2-24/+48
When using the lwp_info structure, avoid accessing its members directly, and use the advertised function interfaces instead. This is according to the instructions in linux-nat.h and prepares for making some of the code common between gdb and gdbserver. gdb/ChangeLog: * s390-linux-nat.c (s390_prepare_to_resume): Use advertised lwp functions instead of accessing lwp_info structure members. (s390_mark_per_info_changed): New function. (s390_new_thread): Use it. (s390_refresh_per_info_cb): New function. (s390_refresh_per_info): Remove parameter. Refresh all lwps of the current process. (s390_insert_watchpoint): Adjust call to s390_refresh_per_info. (s390_remove_watchpoint): Likewise.
2016-09-16testsuite: Fix false FAIL in gdb.cp/casts.expJan Kratochvil4-15/+60
gcc-6.2.1-1.fc26.x86_64 gdb compile failed, /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected primary-expression before 'int' decltype(int x) ^~~ /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:10: error: expected ')' before 'int' /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:40:1: error: expected unqualified-id before 'decltype' decltype(int x) ^~~~~~~~ /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc: In function 'int main(int, char**)': /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/casts.cc:59:14: error: expected primary-expression before 'decltype' double y = decltype(2); ^~~~~~~~ 'decltype' is a registered keyword since C++11 which is now a default for GCC. On Thu, 15 Sep 2016 14:06:56 +0200, Pedro Alves wrote: Seems to be exercising the FLAG_SHADOW bits: ... {"__typeof__", TYPEOF, OP_TYPEOF, 0 }, {"__typeof", TYPEOF, OP_TYPEOF, 0 }, {"typeof", TYPEOF, OP_TYPEOF, FLAG_SHADOW }, {"__decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX }, {"decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX | FLAG_SHADOW }, ... /* This is used to associate some attributes with a token. */ enum token_flag { ... /* If this bit is set, the token is conditional: if there is a symbol of the same name, then the token is a symbol; otherwise, the token is a keyword. */ FLAG_SHADOW = 2 }; So perhaps a better fix is to move that particular test to a separate testcase that force-compiles with -std=c++03. gdb/testsuite/ChangeLog 2016-09-16 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.cp/casts.cc (decltype): Move it ... (main): ... with its call to ... * gdb.cp/casts03.cc: ... a new file. * gdb.cp/casts.exp: Add new file casts03.cc, move decltype test to it.
2016-09-16[ARC] Disassemble correctly extension instructions.Claudiu Zissulescu5-3/+34
For each MAJOR-MINOR opcode tuple, we can have either a 3-operand, or 2-operand, or a single operand instruction format, depending on the values present in i-field, and a-field. The disassembler is reading the section containing the extension instruction format and stores them in a table. Each table element represents a linked list with encodings for a particular MAJOR-MINOR tuple. The current implementation checks only against the first element of the list, hence, the issue. This patch is walking the linked list until empty or finds an opcode match. It also adds a test outlining the found problem. opcodes/ 2016-09-15 Claudiu Zissulescu <claziss@synopsys.com> * arc-dis.c (find_format): Walk the linked list pointed by einsn. gas/ 2016-09-15 Claudiu Zissulescu <claziss@synopsys.com> * testsuite/gas/arc/textinsnxop.d: New file. * testsuite/gas/arc/textinsnxop.s: Likewise.
2016-09-16Automatic date update in version.inGDB Administrator1-1/+1
2016-09-15testsuite: Fix C++11 compilation failure for gdb.cp/m-static.expJan Kratochvil2-0/+7
gcc-6.2.1-1.fc26.x86_64 g++ -std=c++03: no warnings g++: In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79:0: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:34: error: ‘constexpr’ needed for in-class initialization of static data member ‘const float gnu_obj_4::somewhere’ of non-integral type [-fpermissive] static const float somewhere = 3.14159; ^~~~~~~ clang++: In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: warning: in-class initializer for static data member of type 'const float' is a GNU extension [-Wgnu-static-float-init] static const float somewhere = 3.14159; ^ ~~~~~~~ 1 warning generated. clang++ -std=c++11: In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: error: in-class initializer for static data member of type 'const float' requires 'constexpr' specifier [-Wstatic-float-init] static const float somewhere = 3.14159; ^ ~~~~~~~ /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:3: note: add 'constexpr' static const float somewhere = 3.14159; ^ constexpr 1 error generated. OK for check-in? After the fix out of the 4 combinations above only this one remains non-empty: clang++: In file included from /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.cc:79: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.cp/m-static.h:9:22: warning: in-class initializer for static data member of type 'const float' is a GNU extension [-Wgnu-static-float-init] static const float somewhere = 3.14159; ^ ~~~~~~~ 1 warning generated. On Thu, 15 Sep 2016 15:10:50 +0200, Pedro Alves wrote: Hmm, OK, now that I read the test, I think you were right in trying to keep it safe, actually. The .exp file has: if { $non_dwarf } { setup_xfail *-*-* } gdb_test "print test4.everywhere" "\\$\[0-9\].* = 317" "static const int initialized in class definition" if { $non_dwarf } { setup_xfail *-*-* } gdb_test "print test4.somewhere" "\\$\[0-9\].* = 3.14\[0-9\]*" "static const float initialized in class definition" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Added by this: https://sourceware.org/bugzilla/show_bug.cgi?id=11702 https://sourceware.org/ml/gdb-patches/2010-06/msg00677.html https://sourceware.org/ml/gdb-patches/2010-06/txt00011.txt So the new patch would make that highlighted tested above not test what its test message says it is testing. So I now think your original patch is better. Please push that one instead. gdb/testsuite/ChangeLog 2016-09-15 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.cp/m-static.h (gnu_obj_4::somewhere): Use constexpr for C++11.
2016-09-15Update ISA 3.0 / POWER9 gdb tests to match GAS test cases.Peter Bergner3-470/+493
* gdb.arch/powerpc-power.s: Update Power9 instruction tests and sync up the test with tests in gas/testsuite/gas/ppc. * gdb.arch/powerpc-power.exp: Likewise.
2016-09-15testsuite: Disable ccacheJan Kratochvil2-0/+9
There were always various problems with compatibility with ccache: https://bugzilla.redhat.com/show_bug.cgi?id=488863 https://bugzilla.redhat.com/show_bug.cgi?id=759592 https://sourceware.org/ml/gdb-patches/2009-02/msg00397.html IMO in a summary ccache finds more a benefit of faster compilation despite the debug info is no longer exactly the same (as without ccache). Although for example in this case ccache helped to find a real GDB bug: https://sourceware.org/ml/gdb-patches/2015-01/msg00497.html For the GDB testcases ccache has (IMO) no real performance advantage and it just brings heisenbugs - false FAILs - from time to time: Breakpoint 1, main () at gdb/testsuite/gdb.base/vdso-warning.c:21^M 21 return 0;^M (gdb) PASS: gdb.base/vdso-warning.exp: run: startup -> Breakpoint 1, main () at gdb/testsuite/gdb.base/hbreak-unmapped.c:21^M 21 return 0;^M (gdb) FAIL: gdb.base/vdso-warning.exp: run: startup So I find most safe and easy to just disable ccache for all testsuites. gdb/testsuite/ChangeLog 2016-09-15 Jan Kratochvil <jan.kratochvil@redhat.com> * lib/future.exp: Set CCACHE_DISABLE, clear CCACHE_NODISABLE.
2016-09-15gas: run the sparc test dcti-couples-v9 only in ELF targets.Jose E. Marchesi2-1/+7
gas/ChangeLog: 2016-09-15 Jose E. Marchesi <jose.marchesi@oracle.com> * testsuite/gas/sparc/sparc.exp (gas_64_check): Run dcti-couples-v9 only in ELF targets to avoid spurious failures in sparc-aout and sparc-coff targets.
2016-09-15Fix typo in readelf error message.Ed Maste2-1/+5
* readelf.c (process_mips_specific): Fix typo in error message.
2016-09-14Modify POWER9 support to match final ISA 3.0 documentation.Peter Bergner5-87/+42
opcodes/ * ppc-opc.c (powerpc_opcodes) <slbiag>: New mnemonic. <addex., brd, brh, brw, lwzmx, nandxor, rldixor, setbool, xor3>: Delete mnemonics. <cp_abort>: Rename mnemonic from ... <cpabort>: ...to this. <setb>: Change to a X form instruction. <sync>: Change to 1 operand form. <copy>: Delete mnemonic. <copy_first>: Rename mnemonic from ... <copy>: ...to this. <paste, paste.>: Delete mnemonics. <paste_last>: Rename mnemonic from ... <paste.>: ...to this. gas/ * testsuite/gas/ppc/power9.d <slbiag, cpabort> New tests. <addex., brd, brh, brw, lwzmx, nandxor, rldixor, setbool, xor3, cp_abort, copy_first, paste, paste_last, sync>: Remove tests. <copy, paste.>: Update tests. * testsuite/gas/ppc/power9.s: Likewise.
2016-09-15Automatic date update in version.inGDB Administrator1-1/+1
2016-09-14Fix ld --gc-section segfault with ARMv8-M entry function in absolute sectionThomas Preud'homme5-1/+25
bfd/ 2016-09-14 Thomas Preud'homme <thomas.preudhomme@arm.com> * elf32-arm.c (elf32_arm_gc_mark_extra_sections): Only mark section not already marked. ld/ 2016-09-14 Thomas Preud'homme <thomas.preudhomme@arm.com> * testsuite/ld-arm/cmse-veneers.s: Add a test for ARMv8-M Security Extensions entry functions in absolute section. * testsuite/ld-arm/cmse-veneers.rd: Adapt expected output accordingly.
2016-09-14Fix seg-fault in objdump when run on a fuzzed PE binary.Nick Clifton2-11/+22
PR binutils/20605 * peicode.h (pe_bfd_read_buildid): Check that the Data Directory contains a valid size for the Debug directory.
2016-09-14gas: improve architecture mismatch diagnostics in sparcJose E. Marchesi2-1/+6
Merely dumping the mnemonic name in "architecture mismatch" errors may not provide enough information to determine what went wrong, as the same mnemonic can be used for different variants of an instruction pertaining to different architecture levels. This little patch makes the assembler to include the instruction arguments in the error message. gas/ChangeLog: 2016-09-14 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-sparc.c (sparc_ip): Print the instruction arguments in "architecture mismatch" error messages.
2016-09-14gas: detect DCTI couples in sparcJose E. Marchesi11-18/+133
Before SPARC V9 the effect of having a delayed branch instruction in the delay slot of a conditional delayed branch was undefined. In SPARC V9 DCTI couples are well defined. However, starting with the UltraSPARC Architecture 2005, DCTI couples (of all kind) are deprecated and should not be used, as they may be slow or behave differently to what the programmer expects. This patch adds a new command line option --dcti-couples-detect to `as', disabled by default, that makes the assembler to warn the user if an unpredictable DCTI couple is found. Tests and documentation are included. gas/ChangeLog: 2016-09-14 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-sparc.c (md_assemble): Detect and warning on unpredictable DCTI couples in certain arches. (dcti_couples_detect): New global. (md_longopts): Add command line option -dcti-couples-detect. (md_show_usage): Document -dcti-couples-detect. (md_parse_option): Handle OPTION_DCTI_COUPLES_DETECT. * testsuite/gas/sparc/sparc.exp (gas_64_check): Run dcti-couples-v8, dcti-couples-v9 and dcti-couples-v9c tests. * testsuite/gas/sparc/dcti-couples.s: New file. * testsuite/gas/sparc/dcti-couples-v9c.d: Likewise. * testsuite/gas/sparc/dcti-couples-v8.d: Likewise. * testsuite/gas/sparc/dcti-couples-v9.d: Likewise. * testsuite/gas/sparc/dcti-couples-v9c.l: Likewise. * testsuite/gas/sparc/dcti-couples-v8.l: Likewise. * doc/as.texinfo (Overview): Document --dcti-couples-detect. * doc/c-sparc.texi (Sparc-Opts): Likewise.
2016-09-14Prevent segfault in GDB when searching for architecture matches.Bhushan Attarde2-0/+9
* format.c (struct bfd_preserve): New "build_id" field. (bfd_preserve_save): Save "build_id". (bfd_preserve_restore): Restore "build_id".
2016-09-14[ARC] Fix parsing dtpoff relocation expression.Claudiu Zissulescu10-1/+90
The assembler accepts dtpoff complex relocation expression like identifier@dtpoff + const. However, it doesn't accept an expression such as identifier@dtpoff@base + const. This patch solves this issue, and adds a number of tests. ld/ 2016-09-14 Claudiu Zissulescu <claziss@synopsys.com> * testsuite/ld-arc/tls-dtpoff.dd: New file. * testsuite/ld-arc/tls-dtpoff.rd: Likewise. * testsuite/ld-arc/tls-dtpoff.s: Likewise. * testsuite/ld-arc/tls-relocs.ld: Likewise. * testsuite/ld-arc/arc.exp: Add new tdpoff test. gas/ 2016-09-14 Claudiu Zissulescu <claziss@synopsys.com> * testsuite/gas/arc/tls-relocs2.d: New file. * testsuite/gas/arc/tls-relocs2.s: Likewise. * config/tc-arc.c (tokenize_arguments): Accept offsets when base is used.
2016-09-14Stop the ARC disassembler from seg-faulting if initialised without a BFD ↵Anton Kolesov2-3/+12
present. * arc-dis.c (arc_get_disassembler): Accept a null bfd gracefully.