{"push_id":749040441,"size":94,"distinct_size":94,"ref":"refs/heads/cxx-01","head":"2faecb5169fffc9e76b6ff3c9fde786348b48d4c","before":"d2274c5daeaa8ec17f16314a3a9eda8997878bf3","commits":[{"sha":"2c8c5d375e91824387eeacd1d710e714f1534d36","author":{"email":"c495fe4dba026c81f120733ccce155c132d5c6ba@redhat.com","name":"Pedro Alves"},"message":"testsuite: tcl exec& -> 'kill -9 $pid' is racy (attach-many-short-lived-thread.exp races and others)\n\nThe buildbots show that attach-many-short-lived-thread.exp is racy.\nBut after staring at debug logs and playing with SystemTap scripts for\na (long) while, I figured out that neither GDB, nor the kernel nor the\ntest's program itself are at fault.\n\nThe problem is simply that the testsuite machinery is currently\nsubject to PID-reuse races.  The attach-many-short-lived-threads.c\ntest program just happens to be much more susceptible to trigger this\nrace because threads and processes share the same number space on\nLinux, and the test spawns many many short lived threads in\nsuccession, thus enlarging the race window a lot.\n\nPart of the problem is that several tests spawn processes with \"exec&\"\n(in order to test the \"attach\" command) , and then at the end of the\ntest, to make sure things are cleaned up, issue a 'remote_spawn \"kill\n-p $testpid\"'.  Since with tcl's \"exec&\", tcl itself is responsible\nfor reaping the process's exit status, when we go kill the process,\ntestpid may have already exited _and_ its status may have (and often\nhas) been reaped already.  Thus it can happen that another process\nmeanwhile reuses $testpid, and that \"kill\" command kills the wrong\nprocess...  Frequently, that happens to be\nattach-many-short-lived-thread, but this explains other test's races\nas well.\n\nIn the attach-many-short-lived-threads test, it sometimes manifests\nlike this:\n\n (gdb) file /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.threads/attach-many-short-lived-threads\n Reading symbols from /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.threads/attach-many-short-lived-threads...done.\n (gdb)           Loaded /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.threads/attach-many-short-lived-threads into /home/pedro/gdb/mygit/build/gdb/testsuite/../../gdb/gdb\n attach 5940\n Attaching to program: /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.threads/attach-many-short-lived-threads, process 5940\n warning: process 5940 is a zombie - the process has already terminated\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ptrace: Operation not permitted.\n (gdb) PASS: gdb.threads/attach-many-short-lived-threads.exp: iter 1: attach\n info threads\n No threads.\n (gdb) PASS: gdb.threads/attach-many-short-lived-threads.exp: iter 1: no new threads\n set breakpoint always-inserted on\n (gdb) PASS: gdb.threads/attach-many-short-lived-threads.exp: iter 1: set breakpoint always-inserted on\n\nOther times the process dies while the test is ongoing (the process is\nptrace-stopped):\n\n (gdb) print again = 1\n Cannot access memory at address 0x6020cc\n (gdb) FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 2: reset timer in the inferior\n\n(Recall that on Linux, SIGKILL is not interceptable)\n\nAnd other times it dies just while we're detaching:\n\n $4 = 319\n (gdb) PASS: gdb.threads/attach-many-short-lived-threads.exp: iter 2: print seconds_left\n detach\n Can't detach Thread 0x7fb13b7de700 (LWP 1842): No such process\n (gdb) FAIL: gdb.threads/attach-many-short-lived-threads.exp: iter 2: detach\n\nGDB mishandles the latter (it should ignore ESRCH while detaching just\nlike when continuing), but that's another story.\n\nThe fix here is to change spawn_wait_for_attach to use Expect's\n'spawn' command instead of Tcl's 'exec&' to spawn programs, because\nwith spawn we control when to wait for/reap the process.  That allows\nkilling the process by PID without being subject to pid-reuse races,\nbecause even if the process is already dead, the kernel won't reuse\nthe process's PID until the zombie is reaped.\n\nThe other part of the problem lies in DejaGnu itself, unfortunately.\nI have occasionally seen tests (attach-many-short-lived-threads\nincluded, but not only that one) die with a random inexplicable\nSIGTERM too, and that too is caused by the same reason, except that in\nthat case, the rogue SIGTERM is sent from this bit in DejaGnu's remote.exp:\n\n    exec sh -c \"exec > /dev/null 2>&1 && (kill -2 $pgid || kill -2 $pid) && sleep 5 && (kill $pgid || kill $pid) && sleep 5 && (kill -9 $pgid || kill -9 $pid) &\"\n    ...\n    catch \"wait -i $shell_id\"\n\nEven if the program exits promptly, that whole cascade of kills\ncarries on in the background, thus potentially killing the poor\nprocess that manages to reuse $pid...\n\nI sent a fix for that to the DejaGnu list:\n http://lists.gnu.org/archive/html/dejagnu/2015-07/msg00000.html\n\nWith both patches in place, I haven't seen\nattach-many-short-lived-threads.exp fail again.\n\nTested on x86_64 Fedora 20, native, gdbserver and extended-gdbserver.\n\ngdb/testsuite/ChangeLog:\n2015-07-31  Pedro Alves  <palves@redhat.com>\n\n\t* gdb.base/attach-pie-misread.exp: Rename $res to $test_spawn_id.\n\tUse spawn_id_get_pid.  Wait for spawn id after eof.  Use\n\tkill_wait_spawned_process instead of explicit \"kill -9\".\n\t* gdb.base/attach-pie-noexec.exp: Adjust to spawn_wait_for_attach\n\treturning a spawn id instead of a pid.  Use spawn_id_get_pid and\n\tkill_wait_spawned_process.\n\t* gdb.base/attach-twice.exp: Likewise.\n\t* gdb.base/attach.exp: Likewise.\n\t(do_command_attach_tests): Use gdb_spawn_with_cmdline_opts and\n\tgdb_test_multiple.\n\t* gdb.base/solib-overlap.exp: Adjust to spawn_wait_for_attach\n\treturning a spawn id instead of a pid.  Use spawn_id_get_pid and\n\tkill_wait_spawned_process.\n\t* gdb.base/valgrind-infcall.exp: Likewise.\n\t* gdb.multi/multi-attach.exp: Likewise.\n\t* gdb.python/py-prompt.exp: Likewise.\n\t* gdb.python/py-sync-interp.exp: Likewise.\n\t* gdb.server/ext-attach.exp: Likewise.\n\t* gdb.threads/attach-into-signal.exp (corefunc): Use\n\tspawn_wait_for_attach, spawn_id_get_pid and\n\tkill_wait_spawned_process.\n\t* gdb.threads/attach-many-short-lived-threads.exp: Adjust to\n\tspawn_wait_for_attach returning a spawn id instead of a pid.  Use\n\tspawn_id_get_pid and kill_wait_spawned_process.\n\t* gdb.threads/attach-stopped.exp (corefunc): Use\n\tspawn_wait_for_attach, spawn_id_get_pid and\n\tkill_wait_spawned_process.\n\t* gdb.base/break-interp.exp: Rename $res to $test_spawn_id.\n\tUse spawn_id_get_pid.  Wait for spawn id after eof.  Use\n\tkill_wait_spawned_process instead of explicit \"kill -9\".\n\t* lib/gdb.exp (can_spawn_for_attach): Adjust comment.\n\t(kill_wait_spawned_process, spawn_id_get_pid): New procedures.\n\t(spawn_wait_for_attach): Use spawn instead of exec to spawn\n\tprocesses.  Don't map cygwin/windows pids here.  Now returns a\n\tspawn id list.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/2c8c5d375e91824387eeacd1d710e714f1534d36"},{"sha":"5efafabf7be800069e02f84589c9462e99079c4d","author":{"email":"46ff6e41b02a6ff6bd50cc64faab96b75208d63d@sourceware.org","name":"GDB Administrator"},"message":"Automatic date update in version.in","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/5efafabf7be800069e02f84589c9462e99079c4d"},{"sha":"d12307c199dfdb9cad1ea79d2626224e705089a3","author":{"email":"3c49283fdd8f0fc594a7c068549b8deb22b4265f@adacore.com","name":"Pierre-Marie de Rodat"},"message":"Replace the block_found global with explicit data-flow\n\nAs Pedro suggested on gdb-patches@ (see\nhttps://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this\nchange makes symbol lookup functions return a structure that includes\nboth the symbol found and the block in which it was found.  This makes\nit possible to get rid of the block_found global variable and thus makes\nblock hunting explicit.\n\ngdb/\n\n\t* ada-exp.y (write_object_renaming): Replace struct\n\tada_symbol_info with struct block_symbol.  Update field\n\treferences accordingly.\n\t(block_lookup, select_possible_type_sym): Likewise.\n\t(find_primitive_type): Likewise.  Also update call to\n\tada_lookup_symbol to extract the symbol itself.\n\t(write_var_or_type, write_name_assoc): Likewise.\n\t* ada-lang.h (struct ada_symbol_info): Remove.\n\t(ada_lookup_symbol_list): Replace struct ada_symbol_info with\n\tstruct block_symbol.\n\t(ada_lookup_encoded_symbol, user_select_syms): Likewise.\n\t(ada_lookup_symbol): Return struct block_symbol instead of a\n\tmere symbol.\n\t* ada-lang.c (defns_collected): Replace struct ada_symbol_info\n\twith struct block_symbol.\n\t(resolve_subexp, ada_resolve_function, sort_choices,\n\tuser_select_syms, is_nonfunction, add_defn_to_vec,\n\tnum_defns_collected, defns_collected,\n\tsymbols_are_identical_enums, remove_extra_symbols,\n\tremove_irrelevant_renamings, add_lookup_symbol_list_worker,\n\tada_lookup_symbol_list, ada_iterate_over_symbols,\n\tada_lookup_encoded_symbol, get_var_value): Likewise.\n\t(ada_lookup_symbol): Return a block_symbol instead of a mere\n\tsymbol.  Replace struct ada_symbol_info with struct\n\tblock_symbol.\n\t(ada_lookup_symbol_nonlocal): Likewise.\n\t(standard_lookup): Make block passing explicit through\n\tlookup_symbol_in_language.\n\t* ada-tasks.c (get_tcb_types_info): Update the calls to\n\tlookup_symbol_in_language to extract the mere symbol out of the\n\treturned value.\n\t(ada_tasks_inferior_data_sniffer): Likewise.\n\t* ax-gdb.c (gen_static_field): Likewise for the call to\n\tlookup_symbol.\n\t(gen_maybe_namespace_elt): Deal with struct symbol_in_block from\n\tlookup functions.\n\t(gen_expr): Likewise.\n\t* c-exp.y: Likewise.  Remove uses of block_found.\n\t(lex_one_token, classify_inner_name, c_print_token): Likewise.\n\t(classify_name): Likewise.  Rename the \"sym\" local variable to\n\t\"bsym\".\n\t* c-valprint.c (print_unpacked_pointer): Likewise.\n\t* compile/compile-c-symbols.c (convert_symbol_sym): Promote the\n\t\"sym\" parameter from struct symbol * to struct block_symbol.\n\tUse it to remove uses of block_found.  Deal with struct\n\tsymbol_in_block from lookup functions.\n\t(gcc_convert_symbol): Likewise.  Update the call to\n\tconvert_symbol_sym.\n\t* compile/compile-object-load.c (compile_object_load): Deal with\n\tstruct symbol_in_block from lookup functions.\n\t* cp-namespace.c (cp_lookup_nested_symbol_1,\n\tcp_lookup_nested_symbol, cp_lookup_bare_symbol,\n\tcp_search_static_and_baseclasses,\n\tcp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,\n\tcp_lookup_symbol_imports_or_template,\n\tcp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,\n\tlookup_namespace_scope, cp_lookup_nonlocal,\n\tfind_symbol_in_baseclass): Return struct symbol_in_block instead\n\tof mere symbols and deal with struct symbol_in_block from lookup\n\tfunctions.\n\t* cp-support.c (inspect_type, replace_typedefs,\n\tcp_lookup_rtti_type): Deal with struct symbol_in_block from\n\tlookup functions.\n\t* cp-support.h (cp_lookup_symbol_nonlocal,\n\tcp_lookup_symbol_from_namespace,\n\tcp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):\n\tReturn struct symbol_in_block instead of mere symbols.\n\t* d-exp.y (d_type_from_name, d_module_from_name, push_variable,\n\tpush_module_name):\n\tDeal with struct symbol_in_block from lookup functions.  Remove\n\tuses of block_found.\n\t* eval.c (evaluate_subexp_standard): Update call to\n\tcp_lookup_symbol_namespace.\n\t* f-exp.y: Deal with struct symbol_in_block from lookup\n\tfunctions.  Remove uses of block_found.\n\t(yylex): Likewise.\n\t* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,\n\tlookup_enum, lookup_template_type, check_typedef): Deal with\n\tstruct symbol_in_block from lookup functions.\n\t* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.\n\t* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.\n\t(gdbscm_lookup_global_symbol): Likewise.\n\t* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.\n\t* go-exp.y: Likewise.  Remove uses of block_found.\n\t(package_name_p, classify_packaged_name, classify_name):\n\tLikewise.\n\t* infrun.c (insert_exception_resume_breakpoint): Likewise.\n\t* jv-exp.y (push_variable): Likewise.\n\t* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.\n\t* language.c (language_bool_type): Likewise.\n\t* language.h (struct language_defn): Update\n\tla_lookup_symbol_nonlocal to return a struct symbol_in_block\n\trather than a mere symbol.\n\t* linespec.c (find_label_symbols): Deal with struct\n\tsymbol_in_block from lookup functions.\n\t* m2-exp.y: Likewise.  Remove uses of block_found.\n\t(yylex): Likewise.\n\t* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.\n\t* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.\n\t* p-exp.y: Likewise.  Remove uses of block_found.\n\t(yylex): Likewise.\n\t* p-valprint.c (pascal_val_print): Likewise.\n\t* parse.c (write_dollar_variable): Likewise.  Remove uses of\n\tblock_found.\n\t* parser-defs.h (struct symtoken): Turn the SYM field into a\n\tstruct symbol_in_block.\n\t* printcmd.c (address_info): Deal with struct symbol_in_block\n\tfrom lookup functions.\n\t* python/py-frame.c (frapy_read_var): Likewise.\n\t* python/py-symbol.c (gdbpy_lookup_symbol,\n\tgdbpy_lookup_global_symbol): Likewise.\n\t* skip.c (skip_function_command): Likewise.\n\t* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct\n\tsymbol_in_block instead of a mere symbol.\n\t* solib-spu.c (spu_lookup_lib_symbol): Likewise.\n\t* solib-svr4.c (elf_lookup_lib_symbol): Likewise.\n\t* solib.c (solib_global_lookup): Likewise.\n\t* solist.h (solib_global_lookup): Likewise.\n\t(struct target_so_ops): Update lookup_lib_global_symbol to\n\treturn a struct symbol_in_block rather than a mere symbol.\n\t* source.c (select_source_symtab): Deal with struct\n\tsymbol_in_block from lookup functions.\n\t* stack.c (print_frame_args, iterate_over_block_arg_vars):\n\tLikewise.\n\t* symfile.c (set_initial_language): Likewise.\n\t* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct\n\tsymbol_in_block.\n\t(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.\n\t(struct symbol_cache_slot): Turn the FOUND field into a struct\n\tsymbol_in_block.\n\t(block_found): Remove.\n\t(eq_symbol_entry): Update to deal with struct symbol_in_block in\n\tcache slots.\n\t(symbol_cache_lookup): Return a struct symbol_in_block rather\n\tthan a mere symbol.\n\t(symbol_cache_mark_found): Add a BLOCK parameter to fill\n\tappropriately the cache slots.  Update callers.\n\t(symbol_cache_dump): Update cache slots handling to the type\n\tchange.\n\t(lookup_symbol_in_language, lookup_symbol, lookup_language_this,\n\tlookup_symbol_aux, lookup_local_symbol,\n\tlookup_symbol_in_objfile, lookup_global_symbol_from_objfile,\n\tlookup_symbol_in_objfile_symtabs,\n\tlookup_symbol_in_objfile_from_linkage_name,\n\tlookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,\n\tlookup_symbol_in_static_block, lookup_static_symbol,\n\tlookup_global_symbol):\n\tReturn a struct symbol_in_block rather than a mere symbol.  Deal\n\twith struct symbol_in_block from other lookup functions.  Remove\n\tuses of block_found.\n\t(lookup_symbol_in_block): Remove uses of block_found.\n\t(struct global_sym_lookup_data): Turn the RESULT field into a\n\tstruct symbol_in_block.\n\t(lookup_symbol_global_iterator_cb): Update references to the\n\tRESULT field.\n\t(search_symbols): Deal with struct symbol_in_block from lookup\n\tfunctions.\n\t* symtab.h (struct symbol_in_block): New structure.\n\t(block_found): Remove.\n\t(lookup_symbol_in_language, lookup_symbol,\n\tbasic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,\n\tlooku_static_symbol, lookup_global_symbol,\n\tlookup_symbol_in_block, lookup_language_this,\n\tlookup_global_symbol_from_objfile): Return a struct\n\tsymbol_in_block rather than just a mere symbol.  Update comments\n\tto remove mentions of block_found.\n\t* valops.c (find_function_in_inferior,\n\tvalue_struct_elt_for_reference, value_maybe_namespace_elt,\n\tvalue_of_this):  Deal with struct symbol_in_block from lookup\n\tfunctions.\n\t* value.c (value_static_field, value_fn_field): Likewise.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/d12307c199dfdb9cad1ea79d2626224e705089a3"},{"sha":"5e99d4b301d820e1622b35cfd4b359bb4ba264e6","author":{"email":"46ff6e41b02a6ff6bd50cc64faab96b75208d63d@sourceware.org","name":"GDB Administrator"},"message":"Automatic date update in version.in","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/5e99d4b301d820e1622b35cfd4b359bb4ba264e6"},{"sha":"835a09d99d585bfdc9f760970908e10bd8b2fec2","author":{"email":"3c49283fdd8f0fc594a7c068549b8deb22b4265f@adacore.com","name":"Pierre-Marie de Rodat"},"message":"Complete the previous commit (block_found refactoring)\n\nThe previous commit (Replace the block_found global with explicit\ndata-flow) lacks updates in a couple of files because it was not\ntested building GDB with --enable-targets=all... but buildbots did.\nThis adds the appropriate simple updates to fix the build.\n\ngdb/ChangeLog:\n\n\t* alpha-mdebug-tdep.c (find_proc_desc): Update call to\n\tlookup_symbol.\n\t* ft32-tdep.c (ft32_skip_prologue): Likewise.\n\t* moxie-tdep.c (moxie_skip_prologue): Likewise.\n\t* mt-tdep.c (mt_skip_prologue): Likewise.\n\t* xstormy16-tdep.c (xstormy16_skip_prologue): Likewise.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/835a09d99d585bfdc9f760970908e10bd8b2fec2"},{"sha":"e76460dbb9b9b34b9c7fc2f2e4faae38730d00b0","author":{"email":"c495fe4dba026c81f120733ccce155c132d5c6ba@redhat.com","name":"Pedro Alves"},"message":"Unbreak PPC gdb builds\n\nCommit f486487f5586 (Mostly trivial enum fixes) missed updating\nppc-linux-nat.c, resulting in:\n\n ../../src/gdb/ppc-linux-nat.c: In function ‘_initialize_ppc_linux_nat’:\n ../../src/gdb/ppc-linux-nat.c:2503:27: error: assignment from incompatible pointer type [-Werror]\n ../../src/gdb/ppc-linux-nat.c:2504:27: error: assignment from incompatible pointer type [-Werror]\n\ngdb/ChangeLog\n2015-08-02  Pedro Alves  <palves@redhat.com>\n\n\t* ppc-linux-nat.c (get_trigger_type, create_watchpoint_request)\n\t(ppc_linux_insert_watchpoint, ppc_linux_remove_watchpoint): Change\n\tparameter 'rw's type to enum target_hw_bp_type and rename to\n\t'type'.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/e76460dbb9b9b34b9c7fc2f2e4faae38730d00b0"},{"sha":"17c42309df30d43ad57556050f96850105a7dfe7","author":{"email":"46ff6e41b02a6ff6bd50cc64faab96b75208d63d@sourceware.org","name":"GDB Administrator"},"message":"Automatic date update in version.in","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/17c42309df30d43ad57556050f96850105a7dfe7"},{"sha":"a5fdf78a4402341a0ae23a5ca8a63825e2b5286c","author":{"email":"3c49283fdd8f0fc594a7c068549b8deb22b4265f@adacore.com","name":"Pierre-Marie de Rodat"},"message":"Fix the block_found refactoring ChangeLog entry\n\nReplace the old \"struct symbol_in_block\" with the actual \"struct\nblock_symbol\", fix a typo and remove mention to an unmodified function.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/a5fdf78a4402341a0ae23a5ca8a63825e2b5286c"},{"sha":"d60646b95830f1687b641b96f31adbea75c08d6c","author":{"email":"2a3695df0edcde19d41e033e172c391a56c7af17@redhat.com","name":"Nick Clifton"},"message":"Fix thinkos in the description of the --hash-size command line option for GAS.\n\n\t* doc/as.texinfo (Overview): Add --hash-size to the synopsis and\n\tfix typo in its entry: @kindex -> @item.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/d60646b95830f1687b641b96f31adbea75c08d6c"},{"sha":"8156fe7f47884390b7404af15903795bb607658b","author":{"email":"82697eede7783c80d18ae8c0d02575d32c9ac359@linaro.org","name":"Yao Qi"},"message":"Enum fix for arm-linux-nat.c\n\nThis patch fixes GDB build breakage on arm-linux.\n\ngdb:\n\n2015-08-03  Yao Qi  <yao.qi@linaro.org>\n\n\t* arm-linux-nat.c (arm_linux_get_hwbp_type): Capitalize \"type\"\n\tin comment.  Replace \"rw\" with \"type\".\n\t(arm_linux_remove_watchpoint): Change type of \"rw\" to\n\t\"enum target_hw_bp_type\".","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/8156fe7f47884390b7404af15903795bb607658b"},{"sha":"1da03605ced73fc20f40ad649f3038e654d36dee","author":{"email":"dfbb67861321c3a0b65599ad75850a0b877f5c0d@de.ibm.com","name":"Ulrich Weigand"},"message":"Fix build error due to uninitialized variable warning\n\nAs of commit a5fdf78a4402341a0ae23a5ca8a63825e2b5286c, building GDB with\na GCC 4.1 host compiler fails with:\n\ngdb/cp-namespace.c: In function 'cp_lookup_symbol_via_imports':\ngdb/cp-namespace.c:482: warning: 'sym.block' may be used uninitialized in this function\n\nApparently, more recent compilers are able to deduce that no actual\nuninitialized use of sym.block takes place, but GCC 4.1 isn't yet\nable to do that.\n\nFixed by adding an explicit initalization.\n\ngdb/\n\t* cp-namespace.c (cp_lookup_symbol_via_imports): Fix uninitialized\n\tvariable warning with some compilers.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/1da03605ced73fc20f40ad649f3038e654d36dee"},{"sha":"af061d3e9c09baa0df2f2d4724baed06cc6158ca","author":{"email":"63bca33a6a1e19f381dec9b7049f8467c9b91a3c@google.com","name":"Doug Evans"},"message":"Move basic perf-test output from perftest.log to perftest.sum.\n\nThis patch does two things.\n1) Add support for multiple data points.\n2) Move the \"report\" output from perftest.log to perftest.sum.\n\nI want to record the raw data somewhere, and a bit of statistical analysis\n(standard deviation left for another day), but I also don't want\nit to clutter up the basic report.\nThis patch takes a cue from gdb.{sum,log} and does the same thing\nwith perftest.{sum,log}.\nUltimately, we'll probably want to emit raw data to csv files or some\nsuch and then do post-processing passes on that.\n\ngdb/testsuite/ChangeLog:\n\n\t* lib/perftest/reporter.py (SUM_FILE_NAME): New global.\n\t(LOG_FILE_NAME): New global.\n\t(TextReporter.__init__): Initialize self.txt_sum.\n\t(TextReporter.report): Add support for multiple data-points.\n\tMove report to perftest.sum, put raw data in perftest.log.\n\t(TextReporter.start): Open sum and log files.\n\t(TextReporter.end): Close sum and log files.\n\t* lib/perftest/testresult.py (SingleStatisticTestResult.record): Handle\n\tmultiple data-points.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/af061d3e9c09baa0df2f2d4724baed06cc6158ca"},{"sha":"3d3389010c00504602656ba6f16c6b91ade75243","author":{"email":"63bca33a6a1e19f381dec9b7049f8467c9b91a3c@google.com","name":"Doug Evans"},"message":"Add parallel build support for perf tests.\n\ngdb/testsuite/ChangeLog:\n\n\t* Makefile.in (workers/%.worker, build-perf): New rule.\n\t(GDB_PERFTEST_MODE): New variable.\n\t(check-perf): Use it.\n\t(clean): Clean up gdb.perf parallel build subdirs.\n\t* lib/build-piece.exp: New file.\n\t* lib/gdb.exp (make_gdb_parallel_path): New function\n\t(standard_output_file, standard_temp_file): Call it.\n\t(GDB_PARALLEL handling): Make outputs,temp,cache directories as subdirs\n\tof $GDB_PARALLEL.\n\t* lib/cache.exp (gdb_do_cache): Call make_gdb_parallel_path.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/3d3389010c00504602656ba6f16c6b91ade75243"},{"sha":"4e1bdb00c63a839037f31f005349c87702d50cfe","author":{"email":"63bca33a6a1e19f381dec9b7049f8467c9b91a3c@google.com","name":"Doug Evans"},"message":"gdb.perf/single-step.exp (SINGLE_STEP_COUNT): Change to 1000 from 10000.\n\nsingle-step.exp takes a while to run, and while that's not necessarily\nbad, here it's because the default value of SINGLE_STEP_COUNT is 10,000.\nWe're not going to gain any more insight into perf issues\nsingle-stepping (stepi) 10,000 times over 1,000 times,\nso this patch changes the default to 1,000.\n\ngdb/testsuite/ChangeLog:\n\n\t* gdb.perf/single-step.exp (SINGLE_STEP_COUNT): Change to 1000 from\n\t10000.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/4e1bdb00c63a839037f31f005349c87702d50cfe"},{"sha":"8e1afc817ca50aec1e77b5bd2613844bb4b4d932","author":{"email":"63bca33a6a1e19f381dec9b7049f8467c9b91a3c@google.com","name":"Doug Evans"},"message":"Fix file paths in earlier entry.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/8e1afc817ca50aec1e77b5bd2613844bb4b4d932"},{"sha":"c8bd4544607d4f41b89b78630fc233f53f90b6a2","author":{"email":"63bca33a6a1e19f381dec9b7049f8467c9b91a3c@google.com","name":"Doug Evans"},"message":"Missing changelog entry for previous commit: Add gmonster-{1,2} perf testcases.\n\nThese testcases are mocks of real programs.\nGDB doesn't care what the programs do, they just have to look\nand/or behave like the real program.\nThese testcases exercise gdb when debugging really large programs.\nE.g., gmonster-1 has 10,000 CUs, and gmonster-2 has 1000 shared libs\n(which is actually a little small, 5000 would be more accurate).\n\ngdb/testsuite/ChangeLog:\n\n\t* gdb.perf/lib/perftest/utils.py: New file.\n\t* gdb.perf/gm-hello.cc: New file.\n\t* gdb.perf/gm-pervasive-typedef.cc: New file.\n\t* gdb.perf/gm-pervasive-typedef.h: New file.\n\t* gdb.perf/gm-std.cc: New file.\n\t* gdb.perf/gm-std.h: New file.\n\t* gdb.perf/gm-use-cerr.cc: New file.\n\t* gdb.perf/gm-utils.h: New file.\n\t* gdb.perf/gmonster-null-lookup.py: New file.\n\t* gdb.perf/gmonster-pervasive-typedef.py: New file.\n\t* gdb.perf/gmonster-print-cerr.py: New file.\n\t* gdb.perf/gmonster-ptype-string.py: New file.\n\t* gdb.perf/gmonster-runto-main.py: New file.\n\t* gdb.perf/gmonster-select-file.py: New file.\n\t* gdb.perf/gmonster1-null-lookup.exp: New file.\n\t* gdb.perf/gmonster1-pervasive-typedef.exp: New file.\n\t* gdb.perf/gmonster1-print-cerr.exp: New file.\n\t* gdb.perf/gmonster1-ptype-string.exp: New file.\n\t* gdb.perf/gmonster1-runto-main.exp: New file.\n\t* gdb.perf/gmonster1-select-file.exp: New file.\n\t* gdb.perf/gmonster1.cc: New file.\n\t* gdb.perf/gmonster1.exp: New file.\n\t* gdb.perf/gmonster2-null-lookup.exp: New file.\n\t* gdb.perf/gmonster2-pervasive-typedef.exp: New file.\n\t* gdb.perf/gmonster2-print-cerr.exp: New file.\n\t* gdb.perf/gmonster2-ptype-string.exp: New file.\n\t* gdb.perf/gmonster2-runto-main.exp: New file.\n\t* gdb.perf/gmonster2-select-file.exp: New file.\n\t* gdb.perf/gmonster2.cc: New file.\n\t* gdb.perf/gmonster2.exp: New file.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/c8bd4544607d4f41b89b78630fc233f53f90b6a2"},{"sha":"666fcf91c0117da8294207f631df5a97fdc4157c","author":{"email":"c495fe4dba026c81f120733ccce155c132d5c6ba@redhat.com","name":"Pedro Alves"},"message":"dwarf2read.c: fix latent buglet\n\ncust->includes is:\n\nstruct compunit_symtab\n{\n...\n  struct compunit_symtab **includes;\n\ngdb/ChangeLog:\n2015-08-03  Pedro Alves  <palves@redhat.com>\n\n\t* dwarf2read.c (compute_compunit_symtab_includes): Use size of struct\n\tcompunit_symtab pointer.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/666fcf91c0117da8294207f631df5a97fdc4157c"},{"sha":"ee2d2b102071f89a04f93f0434df818f69ef1e50","author":{"email":"cad1524360e58851cd0ae1e82b75ff5283474667@codesourcery.com","name":"Sandra Loosemore"},"message":"Further robustify gdb.base/bp-permanent.exp.\n\n2015-08-03  Sandra Loosemore  <sandra@codesourcery.com>\n\n\tgdb/testsuite/\n\t* gdb.base/bp-permanent.exp: Report test as unsupported if\n\tthe target cannot stop at the permanent breakpoint.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/ee2d2b102071f89a04f93f0434df818f69ef1e50"},{"sha":"cb1c8103f13d413e05ca6e61e21b56bba3baae74","author":{"email":"e68b072303e1c28c4073630daeb803737a761e06@bitrange.com","name":"Hans-Peter Nilsson"},"message":"Fix \"FAIL: -Bsymbolic-functions\" for cris-linux in ld\n\n\t* elf32-cris.c (cris_elf_relocate_section)\n\t(elf_cris_finish_dynamic_symbol, cris_elf_check_relocs)\n\t(elf_cris_discard_excess_dso_dynamics): Use SYMBOLIC_BIND, not\n\tjust h->symbolic, to check if a symbol should be bound\n\tsymbolically.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/cb1c8103f13d413e05ca6e61e21b56bba3baae74"},{"sha":"af60a1ef46d2c4aca22868b0f2819234b949018e","author":{"email":"cad1524360e58851cd0ae1e82b75ff5283474667@codesourcery.com","name":"Sandra Loosemore"},"message":"Nios II R2 support for GDB.\n\n2015-08-03  Sandra Loosemore  <sandra@codesourcery.com>\n\n\tgdb/\n\t* nios2-tdep.h: Include opcode/nios2.h here.\n\t(NIOS2_CDX_OPCODE_SIZE): New.\n\t(struct gdbarch_tdep): Add OP parameter to syscall_next_pc.\n\t* nios2-tdep.c: Don't include opcode/nios2.h here.\n\t(nios2_fetch_insn): For R2, try reading 2-byte instruction if\n\t4-byte read fails.\n\t(nios2_match_add, nios2_match_sub): Add cases for R2 encodings.\n\t(nios2_match_addi, nios2_match_orhi): Likewise.\n\t(nios2_match_stw, nios2_match_ldw): Likewise.\n\t(nios2_match_rdctl): Likewise.\n\t(nios2_match_stwm, nios2_match_ldwm): New.\n\t(nios2_match_branch): Add cases for R2 encodings.\n\t(nios2_match_jmpi, nios2_match_calli): Likewise.\n\t(nios2_match_jmpr, nios2_match_callr): Likewise.\n\t(nios2_match_break, nios2_match_trap): Likewise.\n\t(nios2_in_epilogue_p): Add R2 support.\n\t(nios2_analyze_prologue): Update comments.  Recognize R2 CDX\n\tprologues.\n\t(nios2_breakpoint_from_pc): Handle R2 instructions.\n\t(nios2_get_next_pc): Likewise.  Adjust call to\n\ttdep->syscall_next_pc.\n\t* nios2-linux-tdep.c (nios2_r1_linux_rt_sigreturn_tramp_frame):\n\tRenamed from nios2_linux_rt_sigreturn_tramp_frame.  Use\n\tinstruction field macros instead of literal hex values.\n\t(nios2_r2_linux_rt_sigreturn_tramp_frame): New.\n\t(nios2_linux_syscall_next_pc): Adjust signature to pass OP.\n\tUse size field from OP instead of assuming all instructions\n\tare the same size.\n\t(nios2_linux_init_abi): Register appropriate unwinder for mach.\n\n\tgdb/gdbserver/\n\t* linux-nios2-low.c (NIOS2_BREAKPOINT): Conditionalize for\n\tarch variant.\n\t(CDX_BREAKPOINT): Define for R2.\n\t(nios2_breakpoint_at): Check for CDX_BREAKPOINT when R2.\n\t(the_low_target): Add comments.","distinct":true,"url":"https://api.github.com/repos/simark/binutils-gdb/commits/af60a1ef46d2c4aca22868b0f2819234b949018e"}]}