summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* savestring: Rename parameter 'size' to 'len'.Pedro Alves2013-02-142-5/+9
| | | | | | | | | | | | | | | It's better to avoid needless confusion, and call string length, length, instead of size, which is usually used to refer to sizeof of the string (len+1): size_t len = strlen (str); size_t size = sizeof (str); Tested on x86_64 Fedora 17. 2013-02-14 Pedro Alves <palves@redhat.com> * utils.c (savestring): Rename parameter 'size' to 'len'.
* gdb/testsuite/Jan Kratochvil2013-02-142-2/+6
| | | | | * gdb.threads/pthread_cond_wait.c (main): Remove variable ts. Replace nanosleep by sleep.
* 2013-02-14 Pedro Alves <palves@redhat.com>Yufeng Zhang2013-02-142-68/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Yufeng Zhang <yufeng.zhang@arm.com> * aarch64-linux-nat.c (aarch64_init_debug_reg_state): Delete. (aarch64_inferior_data, struct aarch64_inferior_data): Delete. (struct aarch64_process_info): New. (aarch64_process_list): New global. (aarch64_find_process_pid, aarch64_add_process) (aarch64_process_info_get): New functions. (aarch64_inferior_data_get): Delete. (aarch64_process_info_get): New function. (aarch64_forget_process): New function. (aarch64_get_debug_reg_state): New parameter 'pid'. Reimplement. (aarch64_linux_prepare_to_resume): Pass the lwp's pid to aarch64_get_debug_reg_state. (aarch64_notify_debug_reg_change): Use iterate_over_lwps instead of linux_nat_iterate_watchpoint_lwps. (aarch64_linux_new_fork): New function. (aarch64_linux_child_post_startup_inferior): Use aarch64_forget_process instead of aarch64_init_debug_reg_state. (aarch64_handle_breakpoint, aarch64_linux_insert_hw_breakpoint) (aarch64_linux_remove_hw_breakpoint) (aarch64_handle_aligned_watchpoint) (aarch64_handle_unaligned_watchpoint) (aarch64_linux_insert_watchpoint) (aarch64_linux_remove_watchpoint) (aarch64_linux_stopped_data_address): Adjust to pass the current process id to aarch64_debug_reg_state. (_initialize_aarch64_linux_nat): Install aarch64_linux_new_fork as linux_nat_new_fork hook, and aarch64_forget_process as linux_nat_forget_process hook; remove the call to register_inferior_data_with_cleanup.
* Fix ptype bug actually exercised in userdef.expPedro Alves2013-02-144-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I happened to notice a bug with ptype &Ref, and found out userdef.exp actually exercises the bug. With: class Container { public: Member m; Member& operator* (); }; Member& Container::operator* () { return this->m; } And 'c' is of type Container: (gdb) p c $1 = {m = {z = -9192}} (gdb) p *c $2 = (Member &) @0x7fffffffda20: {z = -9192} (gdb) ptype *c type = class Member { public: int z; } & (gdb) p &*c $3 = (Member *) 0x7fffffffda20 (gdb) ptype &*c type = class Member { public: int z; } &* (gdb) Notice that last print (&*c) on says the type is a pointer - that's how you get the address behind a reference. But notice the last ptype instead says the type of the same expression is a pointer _reference_. This looks like a bug to me. This patch fixes it. The issue is that we're entering the VALUE_LVAL (x) == lval_memory branch by mistake for references. The fix is just to swap the tests so references are checked first, like value_addr also handles references first. Tested on x86_64 Fedora 17. 2013-02-14 Pedro Alves <palves@redhat.com> * eval.c (evaluate_subexp_for_address) <default_case_after_eval, EVAL_AVOID_SIDE_EFFECTS>: Swap and handle TYPE_CODE_REF before lval_memory. 2013-02-14 Pedro Alves <palves@redhat.com> * gdb.cp/userdef.exp (ptype &*c): Don't expect an &.
* PR binutils/15125Nick Clifton2013-02-142-48/+67
| | | | | | * objcopy.c (copy_object): Provide a helpful warning message when adding a gnu_debuglink section to an object which already contains one.
* 2013-02-14 Pedro Alves <pedro@codesourcery.com>Hafiz Abid Qadeer2013-02-146-42/+80
| | | | | | | | | | | | | | | Hafiz Abid Qadeer <abidh@codesourcery.com> gdb/ * tracepoint.h (validate_trace_state_variable_name): Declare. * tracepoint.c (validate_trace_state_variable_name): New. (trace_variable_command): Parse the trace state variable's name without using parse_expression. Do several validations. * mi/mi-main.c (mi_cmd_trace_define_variable): Don't parse the trace state variable's name with parse_expression. Validate it. gdb/testsuite/ * gdb.trace/tsv.exp: Adjust tests, and add a few more.
* gdb/Yao Qi2013-02-142-5/+4
| | | | * infcmd.c (breakpoint_proceeded): Remove it.
* gdb/Yao Qi2013-02-143-5/+10
| | | | | | | | * tracepoint.c (end_actions_pseudocommand): Make it static. (while_stepping_pseudocommand): Likewise. * tracepoint.h (end_actions_pseudocommand): Remove the declaration. (while_stepping_pseudocommand): Likewise.
* gdb/Yao Qi2013-02-141-2/+2
| | | | Indent one changelog entry.
* gdb/Yao Qi2013-02-142-2/+6
| | | | | | * cli/cli-decode.c (help_cmd): Remove the declaration of "cmdlist". (help_all): Likewise.
* *** empty log message ***gdbadmin2013-02-141-1/+1
|
* daily updateAlan Modra2013-02-131-1/+1
|
* Correct ChangeLog dates.Maciej W. Rozycki2013-02-132-2/+2
|
* opcodes/Maciej W. Rozycki2013-02-138-0/+168
| | | | | | | | | | | | * mips-dis.c (is_compressed_mode_p): Only match symbols from the section disassembled. binutils/testsuite/ * binutils-all/mips/mixed-micromips.d: New test. * binutils-all/mips/mixed-mips16.d: New test. * binutils-all/mips/mixed-micromips.s: New test source. * binutils-all/mips/mixed-mips16.s: New test source. * binutils-all/mips/mips.exp: New file.
* Fix typo: amd64 -> i386.Pedro Alves2013-02-131-1/+1
|
* [native x86 GNU/Linux] Access debug register mirror from the corresponding ↵Pedro Alves2013-02-1310-168/+382
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | process. While reviewing the native AArch64 patch, I noticed a problem: On 02/06/2013 08:46 PM, Pedro Alves wrote: > >> > +static void >> > +aarch64_linux_prepare_to_resume (struct lwp_info *lwp) >> > +{ >> > + struct arch_lwp_info *info = lwp->arch_private; >> > + >> > + /* NULL means this is the main thread still going through the shell, >> > + or, no watchpoint has been set yet. In that case, there's >> > + nothing to do. */ >> > + if (info == NULL) >> > + return; >> > + >> > + if (DR_HAS_CHANGED (info->dr_changed_bp) >> > + || DR_HAS_CHANGED (info->dr_changed_wp)) >> > + { >> > + int tid = GET_LWP (lwp->ptid); >> > + struct aarch64_debug_reg_state *state = aarch64_get_debug_reg_state (); > Hmm. This is always fetching the debug_reg_state of > the current inferior, but may not be the inferior of lwp. > I see the same bug on x86. Sorry about that. I'll fix it. A natural fix would be to make xxx_get_debug_reg_state take an inferior argument, but that doesn't work because of the case where we detach breakpoints/watchpoints from the child fork, at a time there's no inferior for the child fork at all. We do a nasty hack in i386_inferior_data_get, but that relies on all callers pointing the current inferior to the correct inferior, which isn't actually being done by all callers, and I don't think we want to enforce that -- deep in the bowls of linux-nat.c, there are many cases we resume lwps behind the scenes, and it's be better to not have that code rely on global state (as it doesn't today). The fix is to decouple the watchpoints code from inferiors, making it track target processes instead. This way, we can freely keep track of the watchpoint mirrors for these processes behind the core's back. Checkpoints also play dirty tricks with swapping the process behind the inferior, so they get special treatment too in the patch (which just amounts to calling a new hook). Instead of the old hack in i386_inferior_data_get, where we returned a copy of the current inferior's debug registers mirror, as soon as we detect a fork in the target, we copy the debug register mirror from the parent to the child process. I don't have an old kernel handy to test, but I stepped through gdb doing the watchpoint removal in the fork child in the watchpoint-fork test seeing that the debug registers end up cleared in the child. I didn't find the need for linux_nat_iterate_watchpoint_lwps. If we use plain iterate_over_lwps instead, what happens is that when removing watchpoints, that iterate_over_lwps doesn't actually iterate over anything, since the fork child is not added to the lwp list until later, at detach time, in linux_child_follow_fork. And if we don't iterate over that lwp, we don't mark its debug registers as needing update. But linux_child_follow_fork takes care of doing that explicitly: child_lp = add_lwp (inferior_ptid); child_lp->stopped = 1; child_lp->last_resume_kind = resume_stop; make_cleanup (delete_lwp_cleanup, child_lp); /* CHILD_LP has new PID, therefore linux_nat_new_thread is not called for it. See i386_inferior_data_get for the Linux kernel specifics. Ensure linux_nat_prepare_to_resume will reset the hardware debug registers. It is done by the linux_nat_new_thread call, which is being skipped in add_lwp above for the first lwp of a pid. */ gdb_assert (num_lwps (GET_PID (child_lp->ptid)) == 1); if (linux_nat_new_thread != NULL) linux_nat_new_thread (child_lp); if (linux_nat_prepare_to_resume != NULL) linux_nat_prepare_to_resume (child_lp); ptrace (PTRACE_DETACH, child_pid, 0, 0); so unless I'm missing something (quite possible) it ends up all the same. But, the !detach-on-fork, and the "follow-fork child" paths should also call linux_nat_new_thread, and they don't presently. It seems to me in those cases we're not clearing debug regs correctly when that's needed. Instead of copying that bit that works around add_lwp bypassing the linux_nat_new_thread call, I thought it'd be better to add an add_initial_lwp call to be used in the case we really need to bypass linux_nat_new_thread, and make add_lwp always call linux_nat_new_thread. i386_cleanup_dregs is rewritten to forget about the current process debug mirrors, which takes cares of other i386 ports. Only a couple of extra tweaks here and there were needed, as some targets wheren't actually calling i386_cleanup_dregs. Tested on Fedora 17 x86_64 -m64/-m32. GDBserver already fetches the i386_debug_reg_state from the right process, and, it doesn't handle forks at all, so no fix is needed over there. gdb/ 2013-02-13 Pedro Alves <palves@redhat.com> * amd64-linux-nat.c (update_debug_registers_callback): Update comment. (amd64_linux_dr_set_control, amd64_linux_dr_set_addr): Use iterate_over_lwps. (amd64_linux_prepare_to_resume): Pass the lwp's pid to i386_debug_reg_state. (amd64_linux_new_fork): New function. (_initialize_amd64_linux_nat): Install amd64_linux_new_fork as linux_nat_new_fork hook, and i386_forget_process as linux_nat_forget_process hook. * i386-linux-nat.c (update_debug_registers_callback): Update comment. (amd64_linux_dr_set_control, amd64_linux_dr_set_addr): Use iterate_over_lwps. (i386_linux_prepare_to_resume): Pass the lwp's pid to i386_debug_reg_state. (i386_linux_new_fork): New function. (_initialize_i386_linux_nat): Install i386_linux_new_fork as linux_nat_new_fork hook, and i386_forget_process as linux_nat_forget_process hook. * i386-nat.c (i386_init_dregs): Delete. (i386_inferior_data, struct i386_inferior_data): Delete. (struct i386_process_info): New. (i386_process_list): New global. (i386_find_process_pid, i386_add_process, i386_process_info_get): New functions. (i386_inferior_data_get): Delete. (i386_process_info_get): New function. (i386_debug_reg_state): New parameter 'pid'. Reimplement. (i386_forget_process): New function. (i386_cleanup_dregs): Rewrite. (i386_update_inferior_debug_regs, i386_insert_watchpoint) (i386_remove_watchpoint, i386_region_ok_for_watchpoint) (i386_stopped_data_address, i386_insert_hw_breakpoint) (i386_remove_hw_breakpoint): Adjust to pass the current process id to i386_debug_reg_state. (i386_use_watchpoints): Don't register inferior data. * i386-nat.h (i386_debug_reg_state): Add new 'pid' parameter, and adjust comment. (i386_forget_process): Declare. * linux-fork.c (delete_fork): Call linux_nat_forget_process. * linux-nat.c (linux_nat_new_fork, linux_nat_forget_process_hook): New static globals. (linux_child_follow_fork): Don't call linux_nat_new_thread here. (add_initial_lwp): New, factored out from ... (add_lwp): ... this. Don't check the number of lwps before calling linux_nat_new_thread. (linux_nat_iterate_watchpoint_lwps): Delete. (linux_nat_attach): Use add_initial_lwp instead of add_lwp. (linux_handle_extended_wait): Call the linux_nat_new_fork hook on forks and vforks. (linux_nat_wait_1): Use add_initial_lwp instead of add_lwp for the initial lwp. (linux_nat_kill, linux_nat_mourn_inferior): Call linux_nat_forget_process. (linux_nat_set_new_fork, linux_nat_set_forget_process) (linux_nat_forget_process): New functions. * linux-nat.h (linux_nat_iterate_watchpoint_lwps_ftype): Delete type. (linux_nat_iterate_watchpoint_lwps): Delete declaration. (linux_nat_new_fork_ftype, linux_nat_forget_process_ftype): New types. (linux_nat_set_new_fork, linux_nat_set_forget_process) (linux_nat_forget_process): New declarations. * amd64fbsd-nat.c (super_mourn_inferior): New global. (amd64fbsd_mourn_inferior): New function. (_initialize_amd64fbsd_nat): Override to_mourn_inferior. * windows-nat.c (windows_detach): Call i386_cleanup_dregs.
* Fix ARI gripe about missing _().Marcus Shawcroft2013-02-131-0/+5
|
* bfd/Richard Sandiford2013-02-1325-129/+664
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_page_ref): New structure. (mips_got_page_entry): Use a section rather than a (bfd, symndx) pair to represent the anchor point. (mips_got_info): Add a got_page_refs field. (mips_elf_link_hash_table): Add a sym_cache field. (mips_got_page_ref_hash, mips_got_page_ref_eq): New functions. (mips_got_page_entry_hash, mips_got_page_entry_eq): Update for new anchor representation. (mips_elf_create_got_info): Create got_page_refs rather than got_page_entries. (mips_elf_record_got_page_ref): New function. (mips_elf_pages_for_range): Move further down file. (mips_elf_record_got_page_entry): Likewise. Take a got as argument. Use a section rather than a (bfd, symndx) pair to represent the anchor point. (mips_elf_resolve_got_page_ref): New function. (mips_elf_resolve_final_got_entries): Use it to populate got_page_entries. (_bfd_mips_elf_check_relocs): Call mips_elf_record_got_page_ref rather than mips_elf_record_got_page_entry. Only nullify h afterwards. (mips_elf_lay_out_got): Call mips_elf_resolve_final_got_entries earlier. ld/testsuite/ * ld-mips-elf/mips16-pic-2.dd, ld-mips-elf/mips16-pic-2.gd: Remove 3 unused local GOT entries. * ld-mips-elf/got-page-4a.s, ld-mips-elf/got-page-4b.s, ld-mips-elf/got-page-4a.d, ld-mips-elf/got-page-4a.got, ld-mips-elf/got-page-4b.d, ld-mips-elf/got-page-4b.got, ld-mips-elf/got-page-5.s, ld-mips-elf/got-page-5.d, ld-mips-elf/got-page-5.got, ld-mips-elf/got-page-6.s, ld-mips-elf/got-page-6.d, ld-mips-elf/got-page-6.got, ld-mips-elf/got-page-7a.s, ld-mips-elf/got-page-7b.s, ld-mips-elf/got-page-7c.s, ld-mips-elf/got-page-7d.s, ld-mips-elf/got-page-7e.s, ld-mips-elf/got-page-7.d, ld-mips-elf/got-page-7.got: New tests. * ld-mips-elf/mips-elf.exp: Run them.
* ARI fix: Replace %llx with %s and phex().Marcus Shawcroft2013-02-132-14/+22
| | | | | | | | 2013-02-13 Marcus Shawcroft <marcus.shawcroft@arm.com> * aarch64-linux-nat.c (debug_reg_change_callback) (aarch64_linux_get_debug_reg_capacity): ARI fix: Replace %llx with %s and phex().
* ARI fix: Replace long long with LONGEST.Marcus Shawcroft2013-02-132-1/+6
| | | | | * aarch64-linux-nat.c (dr_changed_t): ARI fix: Replace long long with LONGEST.
* 2013-02-13 Pedro Alves <palves@redhat.com>Hafiz Abid Qadeer2013-02-132-0/+6
| | | | | | Hafiz Abid Qadeer <abidh@codesourcery.com> * c-lang.c (c_op_print_tab): Add entry for UNOP_PLUS.
* *** empty log message ***gdbadmin2013-02-131-1/+1
|
* daily updateAlan Modra2013-02-121-1/+1
|
* PR symtab/11464:Tom Tromey2013-02-125-11/+47
| | | | | | | | | | | | * c-exp.y (lex_one_token): Initialize other fields of yylval on NAME return. (classify_inner_name): Remove 'first_name' argument, add 'context'. Remove unused variable. (yylex): Explicitly maintain the context type. Exit loop earlier if NAME result is seen. gdb/testsuite * gdb.cp/m-static.cc (gnu_obj_1::~gnu_obj_1): New destructor. * gdb.cp/m-static.exp: Add tests to print quoted destructor.
* Consistent use of (C) after "Copyright".Pedro Alves2013-02-1254-53/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While writing the previous patch, I noticed that we're not consistent with the (C) in the copyright header. The maintainers manual prefers having it, though also says it's optional. We have over 10x more files with (C) than without in gdb's code, so I spent a few minutes grepping and fixing. Funny enough, the testsuite has it backwards. I'll leave that for another time. gdb/ 2013-02-12 Pedro Alves <palves@redhat.com> * amd64-darwin-tdep.c: Add (C) after Copyright. * cli/cli-cmds.h: Ditto. * cli/cli-decode.c: Ditto. * cli/cli-decode.h: Ditto. * cli/cli-dump.c: Ditto. * cli/cli-dump.h: Ditto. * cli/cli-interp.c: Ditto. * cli/cli-logging.c: Ditto. * cli/cli-script.c: Ditto. * cli/cli-script.h: Ditto. * cli/cli-setshow.c: Ditto. * cli/cli-setshow.h: Ditto. * cli/cli-utils.c: Ditto. * cli/cli-utils.h: Ditto. * config/alpha/nm-osf3.h: Ditto. * config/djgpp/djconfig.sh: Ditto. * config/i386/nm-fbsd.h: Ditto. * config/i386/nm-i386gnu.h: Ditto. * config/nm-linux.h: Ditto. * config/nm-nto.h: Ditto. * config/rs6000/nm-rs6000.h: Ditto. * config/sparc/nm-sol2.h: Ditto. * darwin-nat-info.c: Ditto. * dfp.c: Ditto. * dfp.h: Ditto. * gdb-demangle.h: Ditto. * i386-darwin-nat.c: Ditto. * i386-darwin-tdep.c: Ditto. * linux-fork.h: Ditto. * m32c-tdep.c: Ditto. * microblaze-linux-tdep.c: Ditto. * microblaze-rom.c: Ditto. * microblaze-tdep.c: Ditto. * microblaze-tdep.h: Ditto. * mips-linux-tdep.h: Ditto. * ppc-ravenscar-thread.c: Ditto. * ppc-ravenscar-thread.h: Ditto. * prologue-value.c: Ditto. * prologue-value.h: Ditto. * ravenscar-thread.c: Ditto. * ravenscar-thread.h: Ditto. * sparc-ravenscar-thread.c: Ditto. * sparc-ravenscar-thread.h: Ditto. * tilegx-linux-tdep.c: Ditto. * unwind_stop_reasons.def: Ditto. * windows-nat.h: Ditto. * xtensa-linux-tdep.c: Ditto. * xtensa-xtregs.c: Ditto. * regformats/regdat.sh: Ditto. * regformats/regdef.h: Ditto. gdb/gdbserver/ 2013-02-12 Pedro Alves <palves@redhat.com> * linux-xtensa-low.c: Ditto. * xtensa-xtregs.c: Ditto.
* Update some copyright years.Pedro Alves2013-02-1213-11/+28
| | | | | | | | | | | | | | | | | | | | | | | | Some files managed to get in the tree with outdated copyright years. This fixes it. Applied. gdb/ 2013-02-12 Pedro Alves <palves@redhat.com> * break-catch-sig.c: Update copyright years. gdb/testsuite/ 2013-02-12 Pedro Alves <palves@redhat.com> * gdb.base/catch-signal.c: Update copyright years. * gdb.base/catch-signal.exp: Update copyright years. * gdb.dwarf2/dw2-dir-file-name.c: Update copyright years. * gdb.dwarf2/dw2-dir-file-name.exp: Update copyright years. * gdb.dwarf2/dw2-empty-pc-range.S: Update copyright years. * gdb.dwarf2/dw2-error.S: Update copyright years. * gdb.dwarf2/dw2-error.c: Update copyright years. * gdb.dwarf2/dw2-restrict.S: Update copyright years. * gdb.dwarf2/dw2-restrict.c: Update copyright years. * gdb.dwarf2/dw2-restrict.exp: Update copyright years.
* Fix some pastos in the testsuite.Pedro Alves2013-02-125-4/+12
| | | | | | | | | | 2013-02-12 Pedro Alves <palves@redhat.com> * gdb.base/catch-signal.exp: Correct test file name in "Skipping" message. * gdb.base/sigaltstack.exp: Ditto. * gdb.base/siginfo.exp: Ditto. * gdb.base/sizeof.exp: Ditto.
* Tweak intro comments to some MI test files.Pedro Alves2013-02-1210-67/+39
| | | | | | | | | | | | | | | | | | | | A while ago I noticed there's some blind copy/pasting going on some test intro comments. This fixes some instances, in the MI testsuite. Tested on x86_64 Fedora 17. testsuite/ 2013-02-12 Pedro Alves <palves@redhat.com> * gdb.mi/mi-basics.exp: Tweak intro comment. * gdb.mi/mi-break.exp: Tweak intro comment. * gdb.mi/mi-console.exp: Tweak intro comment. * gdb.mi/mi-file.exp: Tweak intro comment. * gdb.mi/mi-read-memory.exp: Tweak intro comment. * gdb.mi/mi-return.exp: Tweak intro comment. * gdb.mi/mi-stepi.exp: Tweak intro comment. * gdb.mi/mi-until.exp: Tweak intro comment. * gdb.mi/mi-watch.exp: Tweak intro comment.
* Fix whitespace.Pedro Alves2013-02-123-69/+72
|
* From: Sanimir Agovic <sanimir.agovic@intel.com>Pedro Alves2013-02-126-2/+98
| | | | | | | | | | | | | | | | | | null ptr check to prevent gdbserver from crashing Evaluating a thread local storage variable in a remote scenario crashes gdbserver if libthread-db could not be loaded. 2013-02-12 Sanimir Agovic <sanimir.agovic@intel.com> gdbserver/ * thread-db.c (thread_db_get_tls_address): NULL pointer check thread_db. testsuite/ * gdb.server/no-thread-db.exp: New file. * gdb.server/no-thread-db.c: New file. * gdb.server/Makefile.in (EXECUTABLES): Add no-thread-db.
* bfd/Richard Sandiford2013-02-122-14/+10
| | | | | * elfxx-mips.c (mips_elf_lay_out_got): Count VxWorks GOT relocs in g->relocs.
* Add support for a destructor for ui_out data and use it toSiva Chandra Reddy2013-02-125-4/+68
| | | | | | | | | | | | | | | | | | | | provide a ui_out destructor. * ui-out.h: Declare the new ui_out destructor. (ui_out_impl): Add a field for data destructor in ui_out_impl. * ui-out.c (default_data_destroy): Add a default data destructor which does nothing. (default_ui_out_impl): Set the new data_destroy field to default_data_destroy (uo_data_destroy): Local function which invokes the data destructor if present. (clear_table): Local function which clears the table data of a ui_out object. (ui_out_destroy): Public function which frees a ui_out object. (ui_out_table_end): Use the new clear_table function. * cli-out.c (cli_ui_out_impl): Set the new data_destroy field to NULL. * mi/mi-out.c (mi_ui_out_impl): Set the new data_destroy field to NULL.
* *** empty log message ***gdbadmin2013-02-121-1/+1
|
* daily updateAlan Modra2013-02-111-1/+1
|
* (printf_c_string): Fix thinko in comment.Doug Evans2013-02-111-3/+2
| | | | (printf_wide_c_string): Ditto.
* * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_free): ProvideAlan Modra2013-02-112-4/+46
| | | | suitable definition when using generic linker hash table.
* * printcmd.c (printf_c_string,printf_wide_c_string): New functions.Doug Evans2013-02-114-231/+259
| | | | | | | | (printf_decfloat): New function. Broken out from ui_printf. Remove unnecessary code to shift the entire format string down. (printf_pointer): New function. (ui_printf): Code to print C strings, wide C strings, decfloats, and pointers moved to separate functions.
* This patch assigns explicit integers to enum values correspondingSriraman Tallam2013-02-112-27/+32
| | | | | | | | | | | | to the plugin API. This patch helps preventing problems while cherry-picking plugin-api.h changes from trunk gold to local branches. For instance, a linker plugin compiled with a cherry-picked plugin-api.h header with some enum values missing will behave strangely when used with a linker built with the up to date header. * plugin-api.h (enum ld_plugin_level): Assign integers explicitly for all values.
* bfd/Richard Sandiford2013-02-112-59/+55
| | | | | | | | | | | * elfxx-mips.c (mips_elf_count_got_entries): Delete. (mips_elf_check_recreate_got, mips_elf_recreate_got): Take a mips_elf_traverse_got_arg. Count GOT entries. (mips_elf_resolve_final_got_entries): Take the bfd_link_info as argument. Update after above changes. (mips_elf_merge_got, mips_elf_lay_out_got): Don't call mips_elf_count_got_entries. Update the calls to mips_elf_resolve_final_got_entries.
* bfd/Richard Sandiford2013-02-112-55/+58
| | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_tls_type): New enum. (mips_got_entry): Add tls_initialized. (mips_elf_got_entry_hash, mips_elf_got_entry_eq, mips_tls_got_relocs) (mips_elf_count_got_entry, mips_elf_initialize_tls_index): Remove GOT_TLS_TYPE masks. (mips_elf_reloc_tls_type, mips_tls_got_entries) (mips_elf_record_global_got_symbol, mips_elf_initialize_tls_index) (_bfd_mips_elf_finish_dynamic_symbol): Use GOT_TLS_NONE rather than GOT_NORMAL. (mips_elf_initialize_tls_slots): Replace got_offset and tls_type_p arguments with a GOT entry. Remove GOT_TLS_TYPE masks. Use tls_initialized rather than GOT_TLS_DONE. (mips_tls_got_index): Delete. (mips_elf_local_got_index, mips_elf_global_got_index): Use mips_elf_initialize_tls_slots rather than mips_tls_got_index. (mips_elf_record_got_entry): Initialize tls_initialized.
* bfd/Richard Sandiford2013-02-112-229/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_entry): Remove tls_ldm_offset. (mips_elf_link_hash_entry): Remove tls_ie_type, tls_gd_type, tls_ie_got_offset and tls_gd_got_offset. (mips_elf_link_hash_newfunc): Remove initialization. (mips_elf_create_got_info): Likewise. (mips_elf_count_local_got_entries, mips_elf_count_global_tls_entries) (mips_tls_single_got_index): Delete. (mips_elf_local_got_index): Always use the GOT entry to track GOT indices. (mips_elf_global_got_index): Likewise. (mips_elf_create_local_got_entry): Assert that TLS entries have already been allocated. (mips_elf_record_global_got_symbol): Don't initialize tls_ie_type or tls_gd_type. (mips_elf_count_got_symbols): Only count reloc-only GOT entries here. (mips_elf_initialize_tls_index): Allocate a GOT index for every TLS entry. (mips_elf_lay_out_got): Use mips_elf_count_got_entries to count the GOT entries. (_bfd_mips_elf_finish_dynamic_symbol): Assert that TLS GOT offsets have been allocated. (_bfd_mips_elf_copy_indirect_symbol): Remove handling of tls_ie_type and tls_gd_type.
* bfd/Richard Sandiford2013-02-112-36/+42
| | | | | * elfxx-mips.c (mips_elf_create_local_got_entry): Tidy. Avoid aliasing violation. Check for htab allocation failures.
* bfd/Richard Sandiford2013-02-112-24/+55
| | | | | | | | | | | | | * elfxx-mips.c (mips_elf_primary_global_got_index): New function, split out from... (mips_elf_global_got_index): ...here. Reorder arguments so that the output bfd and info come first. (mips_elf_calculate_relocation): Update the call to mips_elf_global_got_index accordingly. (_bfd_mips_elf_finish_dynamic_symbol): Use mips_elf_primary_global_got_index rather than mips_elf_global_got_index. (_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
* bfd/Richard Sandiford2013-02-1111-117/+92
| | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_entry): Update comments. (mips_elf_multi_got_entry_eq): Rename to... (mips_elf_got_entry_eq): ...this, deleting the old definition. (mips_elf_create_got_info): Remove master_got_p argument. Always use mips_elf_got_entry_eq. (mips_elf_bfd_got, mips_elf_multi_got, mips_elf_create_got_section): Update calls accordingly. ld/testsuite/ * ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-1.got, ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-3.got, ld-mips-elf/tls-hidden3.d, ld-mips-elf/tls-hidden3.got: Update for new hash table order.
* bfd/Richard Sandiford2013-02-116-215/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_info): Remove bfd2got. (mips_elf_bfd2got_hash): Delete. (mips_elf_got_per_bfd_arg): Remove bfd2got. (mips_elf_replace_bfd_got, mips_elf_count_got_entries): New functions. (mips_elf_global_got_index, mips_elf_create_local_got_entry): Use g->next to test for the multigot case. Use mips_elf_bfd_got rather than mips_elf_got_for_ibfd. (mips_elf_bfd2got_entry_hash, mips_elf_bfd2got_entry_eq) (mips_elf_got_for_ibfd, mips_elf_get_got_for_bfd): Delete. (mips_elf_make_got_per_bfd): Replace with... (mips_elf_add_got_entry): ...this new function. (mips_elf_make_got_pages_per_bfd): Replace with... (mips_elf_add_got_page_entry): ...this new function. (mips_elf_merge_got_with): Replace bfd2got argument with separate bfd and GOT arguments. Use mips_elf_add_got_entry and mips_elf_add_got_page_entry instead of mips_elf_make_got_per_bfd and mips_elf_make_got_pages_per_bfd. Use mips_elf_replace_bfd_got to set the BFD's GOT and free the old table. (mips_elf_merge_got): Replace bfd2got argument with separate bfd and GOT arguments. Apply mips_elf_resolve_final_got_entries. Use mips_elf_count_got_entries to count the number of entries in each GOT. Update the calls to mips_elf_merge_got_with. (mips_elf_adjust_gp): Use g->next to test for the multigot case. Use mips_elf_bfd_got rather than mips_elf_got_for_ibfd. (mips_elf_multi_got): Don't create the bfd2got hash table. Replace hash table traversal with a walk over the input bfds, updating the call to mips_elf_merge_got. Use mips_elf_replace_bfd_got to set the output bfd's GOT. (mips_elf_lay_out_got): Rename "sub" to "ibfd". Record that all bfds use the master GOT in the single-GOT case. (_bfd_mips_elf_finish_dynamic_sections): Use mips_elf_bfd_got rather than mips_elf_got_for_ibfd. ld/testsuite/ * ld-mips-elf/tls-hidden4.got, ld-mips-elf/tls-multi-got-1.d, ld-mips-elf/tls-multi-got-1.got: Update for changes in the order that symbols are added to per-bfd GOTs.
* gdb/:Sergio Durigan Junior2013-02-115-5/+73
| | | | | | | | | | | | | 2013-02-11 Sergio Durigan Junior <sergiodj@redhat.com> * valops.c (value_assign): Handling bitfield offset in `lval_internalvar_component' case. gdb/testsuite/: 2013-02-11 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/bitfields.c (struct internalvartest): New declaration. * gdb.base/bitfields.exp (bitfield_internalvar): New function.
* bfd/Richard Sandiford2013-02-112-56/+112
| | | | | | | | | | | * elfxx-mips.c (mips_elf_obj_tdata): Add a got field. (mips_elf_bfd_got, mips_elf_record_got_entry): New functions. (mips_elf_record_global_got_symbol): Update the hash entry before adding the mips_got_entry. Use mips_elf_record_got_entry to do the latter. (mips_elf_record_local_got_symbol): Use mips_elf_record_got_entry. (mips_elf_record_got_page_entry): Record the entry in both the master and bfd GOTs.
* bfd/Richard Sandiford2013-02-112-18/+100
| | | | | | | | | | | | * elfxx-mips.c (mips_elf_recreate_got): Don't change the entry; create another one if necessary. (mips_elf_set_gotidx): New function. (mips_elf_set_global_gotidx): Use it. (mips_elf_initialize_tls_index): Likewise. Take a mips_elf_traverse_got_arg as argument. (mips_elf_lay_out_got): Update use of mips_elf_initialize_tls_index. (mips_elf_multi_got): Likewise. Cope with error returns from mips_elf_set_global_gotidx.
* bfd/Richard Sandiford2013-02-112-132/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_info): Add relocs field. (mips_elf_set_global_got_offset_arg, mips_elf_count_tls_arg): Replace with... (mips_elf_traverse_got_arg): ...this new structure. (mips_elf_count_local_tls_relocs): Delete. (mips_elf_count_global_tls_relocs): Likewise. (mips_elf_count_got_entry): New function. (mips_elf_count_local_got_entries): Likewise. (mips_elf_count_global_tls_entries): Take a mips_elf_traverse_got_arg rather than a mips_elf_count_tls_arg. Count both relocs and entries. (mips_elf_record_local_got_symbol): Don't count got entries here. (mips_elf_make_got_per_bfd): Use mips_elf_count_got_entry. (mips_elf_set_global_got_offset): Split into... (mips_elf_set_global_got_area, mips_elf_set_global_gotidx): ...these new functions. Take a mips_elf_traverse_got_arg rather than a mips_elf_set_global_got_offset_arg. Don't count TLS relocs here. Use g->relocs to record the number of relocs needed for global GOT entries. (mips_elf_multi_got): Use mips_elf_traverse_got_arg rather than mips_elf_set_global_got_offset_arg. Use the relocs field to count relocations. Update for above function split. (mips_elf_lay_out_got): Use mips_elf_count_local_got_entries to count both the number of GOT entries and the number of TLS relocs required by local entries. Likewise mips_elf_count_global_tls_entries and global entries. Remove uses of mips_elf_count_local_tls_relocs and mips_elf_count_global_tls_relocs.
* bfd/Richard Sandiford2013-02-112-220/+247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_entry): Update comment above tls_type entry to say that each structure represents only one type of TLS reference. (GOT_TLS_TYPE): New define. (mips_elf_link_hash_entry): Temporarily split tls_type and tls_got_offset into two variables each. (mips_elf_link_hash_newfunc): Update accordingly. (mips_elf_got_entry_eq, mips_elf_got_entry_hash) (mips_elf_multi_got_entry_eq): Require the tls_type to be the same. (mips_elf_reloc_tls_type, mips_tls_got_entries): New functions. (mips_tls_got_relocs): Use a switch statement. (mips_elf_count_global_tls_entries): Handle the new hash entry fields. (mips_elf_initialize_tls_slots): Use a switch statement. Avoid local "offset" variable. (mips_tls_got_index): Remove r_type argument and assert. Remove code that handled entries with two TLS types; always use the original got_index instead. (mips_tls_single_got_index): New function. (mips_elf_local_got_index): Use entry->tls_type to check for TLS entries. Use mips_tls_single_got_index. Update call to mips_tls_got_index. (mips_elf_global_got_index): Use mips_elf_reloc_tls_type. Use p->tls_type to check for TLS entries. Update call to mips_tls_got_index. Use mips_tls_single_got_index. (mips_elf_create_local_got_entry): Use mips_elf_reloc_tls_type. Use entry.tls_type to check for TLS entries. (mips_elf_record_global_got_symbol): Replace tls_flag argument with r_type argument. Use mips_elf_reloc_tls_type. Set up the new hash entry fields. (mips_elf_record_local_got_symbol): Replace tls_flag argument with r_type argument. Use mips_elf_reloc_tls_type and mips_tls_got_entries. Remove code that handled entries with multiple TLS types. (mips_elf_make_got_per_bfd): Use mips_tls_got_entries. (mips_elf_initialize_tls_index): Handle new hash entry fields. Use equality rather than masks when checking for specific TLS types. Use mips_tls_got_entries. Remove code that handled entries with multiple TLS types. (mips_elf_calculate_relocation): Use TLS_RELOC_P instead of testing the hash table entry. (_bfd_mips_elf_check_relocs): Update calls to mips_elf_record_global_got_symbol and mips_elf_record_local_got_symbol. (_bfd_mips_elf_finish_dynamic_symbol): Don't check h->type. (_bfd_mips_elf_copy_indirect_symbol): Handle new hash entry fields.