* icf.cc (get_section_contents): Check for preemptible functions.
Ignore addend when appropriate.
* symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
section folded.
(add_from_relobj): Check for section folded.
(set_dynsym_indexes): Fix call to should_add_dynsym_entry.
* symtab.h (should_add_dynsym_entry): Add new parameter.
* target-reloc.h (scan_relocs): Check for section folded.
* x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
Check reloc types for function pointers in shared objects.
* testsuite/Makefile.am (icf_virtual_function_folding_test): New test
case.
(icf_preemptible_functions_test): New test case.
(icf_string_merge_test): New test case.
* testsuite.Makefile.in: Regenerate.
* testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
bar_glob. Refactor code.
* testsuite/icf_preemptible_functions_test.cc: New file.
* testsuite/icf_preemptible_functions_test.sh: New file.
* testsuite/icf_string_merge_test.cc: New file.
* testsuite/icf_string_merge_test.sh: New file.
* testsuite/icf_virtual_function_folding_test.cc: New file.
* testsuite/icf_virtual_function_folding_test.sh: New file.
Mark Kettenis [Tue, 20 Apr 2010 19:39:50 +0000 (19:39 +0000)]
* i386-linux-tdep.c (i386_linux_regset_sections): Size of the
general-purpose register set should be 68 instead of 144.
(i386_linux_sse_regset_sections): Likewise.
(i386_linux_avx_regset_sections): Likewise.
2010-04-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* f-exp.y: Add new production to recognize the `logical*8' type.
(LOGICAL_S8_KEYWORD): New token.
* f-lang.c (enum f_primitive_types)
<f_primitive_type_logical_s8>: New field.
(f_language_arch_info): Handling `logical*8' type.
(build_fortran_types): Building `logical*8' type.
* f-lang.h (struct builtin_f_type) <builtin_logical_s8>: New field.
gdb/testsuite/ChangeLog:
2010-04-20 Jan Kratochvil <jan.kratochvil@redhat.com>
Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.fortran/logical.exp: New testcase.
* gdb.fortran/logical.f90: New file.
Pierre Muller [Tue, 20 Apr 2010 09:58:42 +0000 (09:58 +0000)]
* win32-i386-low.c: Use __x86_64__ macro instead of __x86_64 to
be consistent with other sources of this directory.
(init_registers_amd64): Correct name of source file of this function
in the comment.
Pierre Muller [Tue, 20 Apr 2010 00:17:05 +0000 (00:17 +0000)]
* win32-i386-low.c: Add 64-bit support.
(CONTEXT_EXTENDED_REGISTERS): Set macro to zero if not exisiting.
(init_registers_amd64): Declare.
(mappings): Add 64-bit version of array.
(init_windows_x86): New function.
(the_low_target): Change init_arch field to init_windows_x86.
Pierre Muller [Tue, 20 Apr 2010 00:07:44 +0000 (00:07 +0000)]
* win32-low.c: Adapt to support also 64-bit architecture.
(child_xfer_memory): Use uintptr_t type for local variable `addr'.
(get_image_name): Use SIZE_T type for local variable `done'.
(psapi_get_dll_name): Use LPVOID type for parameter `BaseAddress'.
(toolhelp_get_dll_name): Idem.
(handle_load_dll): Use CORE_ADDR type for local variable `load_addr'.
Use uintptr_t typecast to avoid warning.
(handle_unload_dll): Use uintptr_t typecast to avoid warning.
(handle_exception): Use phex_nz to avoid warning.
(win32_wait): Remove unused local variable `process'.
Mike Frysinger [Mon, 19 Apr 2010 19:51:39 +0000 (19:51 +0000)]
gdb: objc-lang: check symbol name before accessing memory
The current ObjC logic will check both the symbol name and the target
address space when trying to locate an appropriate selector. The problem
is that first the target address space is checked before the symbol name.
This may lead to a lot of unnecessary host<->target transactions when
dealing with a non-OjbC target that does use function descriptors to
describe functions as every symbol will have its FD read just to have the
result thrown away with non-matching symbol names.
It also may lead to problems when a non-FD symbol is found that points near
the end of the address space as the target will throw up a memory_error().
One such example are symbols that are not functions, smaller than a FD,
and are the last valid location. Obviously treating it as a larger data
struct can cause memory overflows.
So to speed things up and not screw over such targets, check the symbol
name (which we already have locally) first before attempting to read the
function's descriptor. This fixes breakpoints with Blackfin Linux FDPIC
ELFs, and seems to cause no native regressions on my x86_64/Linux system.
Mike Frysinger [Mon, 19 Apr 2010 18:42:00 +0000 (18:42 +0000)]
sim: add --model-info helper option
There is an architecture-info flag for listing possible arch values, but
there is on equivalent for listing possible model values. So add the
equivalent for models.
Jan Kratochvil [Mon, 19 Apr 2010 03:13:07 +0000 (03:13 +0000)]
gdb/testsuite/
* gdb.base/solib-display.exp: Replace gdb_exit, gdb_start,
gdb_reinitialize_dir and gdb_load by clean_restart. Remove trailing
gdb_exit and return.
(executable): New variable.
(binfile): Use it.
Pedro Alves [Mon, 19 Apr 2010 00:48:44 +0000 (00:48 +0000)]
PR breakpoints/8554.
Implement `save-breakpoints'.
gdb/
* breakpoint.c (save_cmdlist): New.
(breakpoint_set_cmdlist, breakpoint_show_cmdlist): Moved up close
to save_cmdlist.
(print_recreate_catch_fork): New.
(catch_fork_breakpoint_ops): Install it.
(print_recreate_catch_vfork): New.
(catch_vfork_breakpoint_ops): Install it.
(print_recreate_catch_syscall): New.
(catch_syscall_breakpoint_ops): Install it.
(print_recreate_catch_exec): New.
(catch_exec_breakpoint_ops): Install it.
(print_recreate_exception_catchpoint): New.
(gnu_v3_exception_catchpoint_ops): Install it.
(save_breakpoints): New, based on tracepoint_save_command, but
handle all breakpoint types.
(save_breakpoints_command): New.
(tracepoint_save_command): Rename to...
(save_tracepoints_command): ... this, and reimplement using
save_breakpoints.
(save_command): New.
(_initialize_breakpoints): Install the "save" command prefix.
Install the "save breakpoints" command. Make "save-tracepoints" a
deprecated alias for "save tracepoints".
* breakpoint.h (struct breakpoint_ops): New field `print_recreate'.
* ada-lang.c (print_recreate_exception): New.
(print_recreate_catch_exception): New.
(catch_exception_breakpoint_ops): Install it.
(print_recreate_catch_exception_unhandled): New.
(catch_exception_unhandled_breakpoint_ops): Install it.
(print_recreate_catch_assert): New.
(catch_assert_breakpoint_ops): Install it.
* NEWS: Mention the new `save breakpoints' command. Mention the
new `save tracepoints' alias and that `save-tracepoints' is now
deprecated.
gdb/doc/
* gdb.texinfo (Save Breakpoints): New node.
(save-tracepoints): Rename to ...
(save tracepoints): ... this. Mention that `save-tracepoints' is
a deprecated alias to `save tracepoints'.
Pedro Alves [Sun, 18 Apr 2010 00:11:55 +0000 (00:11 +0000)]
PR tui/9217
* tui/tui-out.c: Include cli-out.h.
(tui_table_begin, tui_table_body, tui_table_end, tui_table_header)
(tui_begin, tui_end, tui_field_int, tui_field_skip)
(tui_field_string, tui_field_fmt, tui_spaces, tui_text)
(tui_message, tui_wrap_hint, tui_flush): Delete forward
declarations.
(struct ui_out_data): Rename to...
(struct tui_ui_out_data): ... this. Remove `stream' and
`suppress_output' fields, and inherit cli_ui_out_data.
(tui_out_data): New typedef.
(tui_ui_out_impl): Don't initialize fields staticaly.
(tui_table_begin, tui_table_body, tui_table_end, tui_table_header)
(tui_begin, tui_end): Delete.
(tui_field_int): Adjust to delegate most work to the base type.
(tui_field_skip): Delete.
(tui_field_string, tui_field_fmt): Adjust comment. Adjust to
delegate most work to the base type.
(tui_spaces): Delete.
(tui_text): Adjust to delegate most work to the base type.
(tui_message): Delete.
(tui_wrap_hint): Delete.
(tui_flush): Delete.
(out_field_fmt): Delete.
(field_separator): Delete.
(tui_out_new): Adjust to initialize the base type.
(_initialize_tui_out): Initialize tui_ui_out_impl.
* cli-out.c (struct ui_out_data): Moved out to cli-out.h, renamed
cli_ui_out_data.
(cli_out_data): Adjust.
(cli_ui_out_impl): Make extern.
(cli_table_header, cli_field_int, cli_field_skip): Use
uo_field_string instead of cli_field_string.
(cli_redirect): Adjust to use cli_out_data.
(cli_out_data_ctor): New.
(cli_out_new): Use it.
* cli-out.h (struct ui_file): Remove forward declaration.
(struct cli_ui_out_data): New, moved from cli-out.c, and renamed.
(cli_ui_out_impl): Declare.
(cli_out_data_ctor): Declare.
* ui-out.c (struct ui_out) <data>: Change type to void pointer.
(uo_field_string): No longer static.
(ui_out_data): Change return type to void pointer.
(ui_out_new): Change `data' parameter type to void pointer.
* ui-out.h (struct ui_out_data): Don't forward declare.
(ui_out_data): Change return type to void pointer.
(ui_out_new): Change `data' parameter type to void pointer.
(uo_field_string): Declare.
Pierre Muller [Sat, 17 Apr 2010 20:43:13 +0000 (20:43 +0000)]
* configure.ac: Use `ws2_32' library for srv_mingw.
* configure: Regenerate.
* gdbreplay.c: Include winsock2.h instead of winsock.h.
* remote-utils.c: Likewise.
Pedro Alves [Sat, 17 Apr 2010 18:42:46 +0000 (18:42 +0000)]
* breakpoint.c (watchpoints_triggered): Use
is_hardware_watchpoint.
(watchpoints_triggered): Ditto.
(bpstat_check_location): Use is_watchpoint and
is_hardware_watchpoint.
(bpstat_check_watchpoint): Use is_watchpoint and
is_hardware_watchpoint.
(bpstat_stop_status): Fix comment.
(user_settable_breakpoint): Use is_watchpoint.
(hw_watchpoint_used_count): Use is_hardware_watchpoint.
(disable_watchpoints_before_interactive_call_start): Use
is_watchpoint.
(enable_watchpoints_after_interactive_call_stop): Use
is_watchpoint.
(clear_command): Use is_watchpoint.
(do_enable_breakpoint): Use is_watchpoint.
Mike Frysinger [Fri, 16 Apr 2010 22:47:42 +0000 (22:47 +0000)]
gdb: fdpic/frv: fix shared library loading
The recent change to reload_shared_libraries() broke FDPIC shared libraries as
the solib-frv.c code was implicitly relying on the initial order of calls
(first solib_addr() and then solib_create_inferior_hook()). It was
maintaining internal state via enable_break{1,2}_done to handle this.
While I could tweak these values a bit more, the original code wasn't terribly
bullet proof -- if during the initial debug you attempted to view shared
libraries, the enable2_break() code would whine about the ldso internal debug
addresses being unfetchable (and would actually attempt to read address 0x8 on
the target). So I've dropped this implicit dependency on order (i.e.
enable_break1_done) and updated the ldso poking code (i.e. enable_break2) to
silently return when the internal debug address is still set to 0. It will
remain this way until the ldso gets a chance to initialize at which point the
code will act the same as before.
While I have no way of testing the FRV, the Blackfin FDPIC code is using this
same base in a 100% copy & paste method since we implemented FDPIC the same
way as the FRV guys (I'll address this in the future). This fix was required
in order to handle shared libraries with Blackfin FDPIC properly, and I see no
reason why it wouldn't also work for FRV (since the uClibc ldso FDPIC code is
the same too and that's really what this is poking).
Kevin Buettner [Fri, 16 Apr 2010 22:46:27 +0000 (22:46 +0000)]
* m32c-tdep.c (m32c_m16c_address_to_pointer): Print warning
instead of an error if no PLT entry is found. Return a
potentially useful result.
(m32c_m16c_pointer_to_address): Add code to search for function
address when no .plt entry is found.
* vms-alpha.c (_bfd_vms_slurp_eihd): Fix typo.
(_bfd_vms_get_object_record): Always assume there is a pad byte
for alignment.
* vms-lib.c: Add a few comments.
Nick Clifton [Fri, 16 Apr 2010 11:20:41 +0000 (11:20 +0000)]
PR gas/11395
* config/tc-hppa.c (pa_ip): Do not allow 64-bit add condition
matcher to accept and unconditional 32-bit add instruction.
(pa_build_unwind_subspace): Cope with error conditions not
allowing the start symbol to be set.
* gas/hppa/basic/add2.s: Add test of simple 32-bit instruction.
* gas/hppa/basic/basic.exp (do_add2): Add grep for expected
disassembly.
Pierre Muller [Fri, 16 Apr 2010 07:49:37 +0000 (07:49 +0000)]
Support for Windows OS Thread Information Block.
* NEWS: Document new feature.
* remote.c (PACKET_qGetTIBAddr): New enum element.
(remote_get_tib_address): New function.
(init_remote_ops): Set to_get_tib_address field
to remote_get_tib_address.
(_initialize_remote): Add add_packet_config_cmd
for PACKET_qGetTIBAddr.
* target.c (update_current_target): Set default value for
new to_get_tib_address field.
* target.h (target_ops): New field to_get_tib_address.
(target_get_tib_address): New macro.
* windows-nat.c (thread_info): Add thread_local_base field.
(windows_add_thread): Add tlb argument of type 'void *'.
(fake_create_process): Adapt windows_add_thread call.
(get_windows_debug_event): Idem.
(windows_get_tib_address): New function.
(init_windows_ops): Set to_get_tib_address field
to remote_get_tib_address.
(_initialize_windows_nat): Replace info_w32_cmdlist
initialization by a call to init_w32_command_list.
(info_w32_command, info_w32_cmdlist): Removed from here...
to windows-tdep.c file.
* windows-tdep.h (info_w32_cmdlist): Declare.
(init_w32_command_list): New external function
declaration.
* windows-tdep.c: Add several headers.
(info_w32_cmdlist): to here, made global.
(thread_information_32): New struct.
(thread_information_64): New struct.
(TIB_NAME): New char array.
(MAX_TIB32, MAX_TIB64, FULL_TIB_SIZE): New constants.
(maint_display_all_tib): New static variable.
(windows_get_tlb_type): New function.
(tlb_value_read, tlb_value_write): New functions.
(tlb_value_funcs): New static struct.
(tlb_make_value): New function.
(display_one_tib): New function.
(display_tib): New function.
(show_maint_show_all_tib):New function.
(info_w32_command): Moved from windows-nat.c.
(init_w32_command_list): New function.
(_initialize_windows_tdep): New function.
New "maint set/show show-all-tib" command
New "$_tlb" internal variable.
gdbserver/ChangeLog entry:
* server.c (handle_query): Handle 'qGetTIBAddr' query.
* target.h (target_ops): New get_tib_address field.
* win32-low.h (win32_thread_info): Add thread_local_base field.
* win32-low.c (child_add_thread): Add tlb argument.
Set thread_local_base field to TLB.
(get_child_debug_event): Adapt to child_add_thread change.
(win32_get_tib_address): New function.
(win32_target_ops): Set get_tib_address field to
win32_get_tib_address.
* linux-low.c (linux_target_ops): Set get_tib_address field to NULL.
doc/ChangeLog entry:
gdb.texinfo ($_tlb): Document new automatic convinience variable.
(info w32 thread-information-block): Document new command.
(qGetTIBAddress): Document new gdbserver query.
(maint set/show show-all-tib): Document new command.
Stan Shebs [Fri, 16 Apr 2010 01:12:07 +0000 (01:12 +0000)]
2010-04-15 Stan Shebs <stan@codesourcery.com>
* frame.c: Include tracepoint.h.
(get_current_frame): Allow a trace frame to be an alternate source
of stack frame data.
* tracepoint.c (tfind_1): Don't try to get current stack frame if
it won't succeed.
* arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
for local symbol recounting if we remove a section due to ICF.
* gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
there are no regular objects in input.
Pedro Alves [Wed, 14 Apr 2010 23:20:27 +0000 (23:20 +0000)]
Avoid rereading shared libraries that haven't changed.
* solib.c (free_so_symbols): New function, from ...
(free_so): ... here. Call it.
(solib_read_symbols): Don't warn here if symbols have already been
loaded.
(solib_add): Warn here instead, if a pattern was specified.
(reload_shared_libraries_1): New.
(reload_shared_libraries): Rewrite to not fetch the library list.
Pedro Alves [Wed, 14 Apr 2010 13:49:53 +0000 (13:49 +0000)]
Group errors for many missing shared libraries.
* solist.h (struct so_list): Remove from_tty.
* solib.c (solib_bfd_open): Return NULL if we failed to open a BFD.
(solib_map_sections): Take so_list argument. Return 0 if we
failed to open a BFD. Add target sections here.
(symbol_add_stub): Delete.
(solib_read_symbols): Inline symbol_add_stub. Use current flags,
not from_tty copied from the so_list. Don't warn a second time
for a missing library.
(update_solib_list): Don't save from_tty. Use TRY_CATCH. Do not
add to the section table here. Print out a single warning for all
missing libraries.
* bsd-uthread.c (bsd_uthread_solib_loaded): Always pass 0 for
flags.
Phil Muldoon [Wed, 14 Apr 2010 12:02:46 +0000 (12:02 +0000)]
2010-04-14 Phil Muldoon <pmuldoon@redhat.com>
PR python/11381
* python/py-prettyprint.c (pretty_print_one_value): Test for
Py_None.
(print_string_repr): Test for Py_None. Set flags accordingly.
Return value depending on return type.
(print_children): Take a value indicating whether data was printed
before this function was called. Alter output accordingly.
(apply_val_pretty_printer): Capture return value from
print_string_repr and pass to print_children.
2010-04-14 Phil Muldoon <pmuldoon@redhat.com>
* gdb.python/py-prettyprint.py (NoStringContainerPrinter): New printer.
* gdb.python/py-prettyprint.c: Add justchildren struct, typedefs.
* gdb.python/py-prettyprint.exp: New test for to_string returning None.
* gdb.python/py-mi.exp: New test for to_string returning None.
2010-04-14 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Pretty Printing): Document behaviour when to_string
returns None.
* config/tc-alpha.c: Includes vms/egps.h on EVAX.
(s_alpha_comm): Used new EGPS macros from egps.h
(RGPS__V_NO_SHIFT, EGPS__V_MASK): New local macros.
(s_alpha_section_word): Add comments. Use new EGPS macros.
Adjust for modified bfd_vms_set_section_flags function.
* bfd/elflink.c (_bfd_elf_merge_symbol): Tighten up the test for early
exit due to merging the same weak symbol to test that the symbols are
actually weak.
Mark Kettenis [Tue, 13 Apr 2010 21:07:16 +0000 (21:07 +0000)]
* i386-linux-tdep.c (i386_linux_regset_sections): Remove extended
register note sections.
(i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
New variables.
(i386_linux_init_abi): Install list of supported register note
sections that matches the target description.
Mike Frysinger [Tue, 13 Apr 2010 20:58:54 +0000 (20:58 +0000)]
sim: dv-sockser: pass up connected state
A few ports rely on internal dv-sockser state in order to detect whether
a connection has been made (look for 'extern sockser_addr'). Rather than
continuing that tradition, extend the existing status function to return
the socket connection status.
Mike Frysinger [Tue, 13 Apr 2010 20:28:20 +0000 (20:28 +0000)]
sim: constify sim_write source buffer
Most the sim write functions declare their source buffer const because
they only ever read from it. The global sim_write() function does not
follow this convention though which causes some warnings when trying to
pass it const strings or buffers.
Pedro Alves [Tue, 13 Apr 2010 16:08:28 +0000 (16:08 +0000)]
* remote.c (remote_get_noisy_reply): Don't error out on empty
replies.
(remote_start_remote): Update and merge tracepoints and trace
state variables as long as the target supports tracepoints.
(remote_trace_init): Fix prototype.
(remote_download_trace_state_variable): Validate reply.
(remote_trace_set_readonly_regions): Fix prototype.
(remote_trace_start): Fix prototype. Check for empty reply.
(remote_get_trace_status): Small cleanup.
(remote_trace_stop): Fix prototype. Check for empty reply.
(remote_trace_find): Check for empty reply.
(remote_save_trace_data): Validate reply.
(remote_set_disconnected_tracing): Check for empty reply, and
validate reply.
(remote_set_circular_trace_buffer): Ditto.
Pierre Muller [Tue, 13 Apr 2010 12:11:10 +0000 (12:11 +0000)]
Suppress unused value warning during compilation.
* tui/tui-regs.c (tui_display_register): Cast wstandout and wstandend
calls to void.
* tui/tui-stack.c (tui_show_locator_content): Likewise.