aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-09-03Return std::string from perror_stringTom Tromey2-21/+12
Change perror_string to return a std::string, removing a cleanup in the process. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * utils.c (perror_string): Return a std::string. (throw_perror_with_name, perror_warning_with_name): Update.
2017-09-03Use std::string and unique_xmalloc_ptr in demangle_commandTom Tromey2-23/+18
Change demangle_command to use std::string and unique_xmalloc_ptr, removing some cleanups. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * demangle.c (demangle_command): Use std::string, unique_xmalloc_ptr.
2017-09-03Use std::string in do_set_commandTom Tromey2-12/+8
Change do_set_command to use std::string, removing a cleanup and some manual resizing code. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * cli/cli-setshow.c (do_set_command): Use std::string.
2017-09-03Use unique_xmalloc_ptr in cd_commandTom Tromey2-11/+13
Change cd_command to use unique_xmalloc_ptr, removing a cleanup. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * cli/cli-cmds.c (cd_command): Use gdb::unique_xmalloc_ptr.
2017-09-03Use std::string in mi_cmd_interpreter_execTom Tromey2-8/+8
Change mi_cmd_interpreter_exec to use std::string, removing a cleanup. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * mi/mi-interp.c (mi_cmd_interpreter_exec): Use std::string.
2017-09-03Use unique_xmalloc_ptr in env_execute_cli_commandTom Tromey2-8/+9
Change env_execute_cli_command to use unique_xmalloc_ptr, removing a cleanup. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * mi/mi-cmd-env.c (env_execute_cli_command): Use gdb::unique_xmalloc_ptr.
2017-09-03Use std::string thread.cTom Tromey2-22/+17
This changes a few spots in thread.c to use std::string, removing some cleanups. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * thread.c (print_thread_info_1): Use string_printf. (thread_apply_command, thread_apply_all_command): Use std::string.
2017-09-03Return std::string from memory_error_messageTom Tromey5-22/+23
This changes memory_error_message to return a std::string and fixes up the callers. This removes some cleanups. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * valprint.c (val_print_string): Update. * gdbcore.h (memory_error_message): Return std::string. * corefile.c (memory_error_message): Return std::string. (memory_error): Update. * breakpoint.c (insert_bp_location): Update.
2017-09-03x86-64: Set tlsdesc_plt if GOT_TLS_GDESC_P is trueH.J. Lu6-1/+105
We need to set tlsdesc_plt for x86-64 if GOT_TLS_GDESC_P is true when allocating dynamic relocations so that _bfd_x86_elf_size_dynamic_sections will generate TLSDESC_PLT and TLSDESC_GOT in x86-64 output. bfd/ PR ld/22071 * elfxx-x86.c (elf_x86_allocate_dynrelocs): Set tlsdesc_plt for x86-64 if GOT_TLS_GDESC_P is true. ld/ PR ld/22071 * testsuite/ld-x86-64/pr22071.d: New file. * testsuite/ld-x86-64/pr22071.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr22071.
2017-09-03PR22067, x86 check_relocs invalid readAlan Modra2-1/+7
PR 22067 * elfxx-x86.h (elf_x86_hash_table): Check is_elf_hash_table first.
2017-09-03Make target_waitstatus_to_string return an std::stringSimon Marchi10-70/+71
A quite straightforward change. It does "fix" leaks in record-btrace.c, although since this is only used in debug printing code, it has no real world impact. gdb/ChangeLog: * target/waitstatus.h (target_waitstatus_to_string): Change return type to std::string. * target/waitstatus.c (target_waitstatus_to_string): Return std::string. * target.h (target_waitstatus_to_string): Remove declaration. * infrun.c (resume, clear_proceed_status_thread, print_target_wait_results, do_target_wait, save_waitstatus, stop_all_threads): Adjust. * record-btrace.c (record_btrace_wait): Adjust. * target-debug.h (target_debug_print_struct_target_waitstatus_p): Adjust. gdb/gdbserver/ChangeLog: * linux-low.c (linux_wait_1): Adjust. * server.c (queue_stop_reply_callback): Adjust.
2017-09-02Initialize tls_get_addr for x86-64 in one placeH.J. Lu2-2/+6
* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize tls_get_addr for x86-64 in one place.
2017-09-02Add missing ChangeLog entriesH.J. Lu1-0/+29
2017-09-02Add elf64-x86-64.lo together with elfxx-x86.lo for 64-bit BFDH.J. Lu3-4/+10
Since elfxx-x86.lo needs elf64-x86-64.lo with 64-bit BFD now, add elf64-x86-64.lo together with elfxx-x86.lo to bfd_backends for 64-bit BFD. * configure.ac (bfd_backends): Add elf64-x86-64.lo together with elfxx-x86.lo for 64-bit BFD. * configure: Regenerated.
2017-09-03Automatic date update in version.inGDB Administrator1-1/+1
2017-09-02x86: Add _bfd_x86_elf_size_dynamic_sectionsH.J. Lu4-815/+483
elf_i386_size_dynamic_sections and elf_x86_64_size_dynamic_sections are very similar, except for the followings: 1. elf_i386_size_dynamic_sections checks GOT_TLS_IE and GOT_TLS_IE_BOTH. elf_x86_64_size_dynamic_sections checks only GOT_TLS_IE. Since GOT_TLS_IE_BOTH is never true for x86-64, it is OK to check GOT_TLS_IE for both i386 and x86-64. 2, x86-64 sets tlsdesc_plt, but i386 doesn't. We set tlsdesc_plt only if target_id == X86_64_ELF_DATA. 3. x86-64 has if (s != htab->elf.srelplt) s->reloc_count = 0; and i386 has s->reloc_count = 0; i386 did have if (s != htab->srelplt) s->reloc_count = 0; in the original commit: commit 67a4f2b710581acc83afecff55424af285ecbc28 Author: Alexandre Oliva <aoliva@redhat.com> Date: Wed Jan 18 21:07:51 2006 +0000 But it was removed by commit 5ae0bfb60a576344d7f701605346282c1144499e Author: Richard Sandiford <rdsandiford@googlemail.com> Date: Tue Feb 28 07:16:12 2006 +0000 bfd/ * elf32-i386.c (elf_i386_link_hash_table): Add next_tls_desc_index. (elf_i386_link_hash_table_create): Initialize it. (elf_i386_compute_jump_table_size): Use it instead of srelplt->reloc_count. (allocate_dynrelocs): Likewise. (elf_i386_size_dynamic_sections): Likewise. (elf_i386_relocate_section): Likewise. A later commit: commit e1f987424b7b3f5ac63a2a6ae044a202a44b8ff8 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Oct 21 15:13:37 2011 +0000 Put IRELATIVE relocations after JUMP_SLOT. bfd/ 2011-10-21 H.J. Lu <hongjiu.lu@intel.com> PR ld/13302 * elf32-i386.c (elf_i386_link_hash_table): Add next_jump_slot_index and next_irelative_index. (elf_i386_link_hash_table_create): Initialize next_jump_slot_index and next_irelative_index. (elf_i386_allocate_dynrelocs): Increment reloc_count instead of next_tls_desc_index. (elf_i386_size_dynamic_sections): Set next_tls_desc_index and next_irelative_index from reloc_count. (elf_i386_finish_dynamic_symbol): Put R_386_IRELATIVE after R_386_JUMP_SLOT. changed it back to use reloc_count again. So it is correct to use if (s != htab->elf.srelplt) s->reloc_count = 0; for both i386 and x86-64 now. 4. i386 and x86-64 use different DT_XXXs. They are handled by adding them to elf_x86_link_hash_table. With these changes, we can share _bfd_x86_elf_size_dynamic_sections in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (elf_i386_convert_load): Renamed to ... (_bfd_i386_elf_convert_load): This. Remove static. (elf_i386_size_dynamic_sections): Removed. (elf_backend_size_dynamic_sections): Likewise. * elf64-x86-64.c (elf_x86_64_convert_load): Renamed to ... (_bfd_x86_64_elf_convert_load): This. Remove static. (elf_x86_64_size_dynamic_sections): Removed. (elf_backend_size_dynamic_sections): Likewise. * elfxx-x86.c (_bfd_x86_elf_allocate_dynrelocs): Renamed to ... (elf_x86_allocate_dynrelocs): This. Make it static. (_bfd_x86_elf_allocate_local_dynrelocs): Renamed to ... (elf_x86_allocate_local_dynreloc): This. Make it static. (elf_i386_is_reloc_section): New function. (elf_x86_64_is_reloc_section): Likewise. (_bfd_x86_elf_link_hash_table_create): Initialize convert_load, is_reloc_section, dt_reloc, dt_reloc_sz and dt_reloc_ent. Rearrange got_entry_size initialization. (_bfd_x86_elf_size_dynamic_sections): New function. * elfxx-x86.h (elf_x86_link_hash_table): Add convert_load, is_reloc_section, dt_reloc, dt_reloc_sz and dt_reloc_ent. (_bfd_i386_elf_convert_load): New. (_bfd_x86_64_elf_convert_load): Likewise. (_bfd_x86_elf_size_dynamic_sections): Likewise. (elf_backend_size_dynamic_sections): Likewise. (_bfd_x86_elf_allocate_dynrelocs): Removed. (_bfd_x86_elf_allocate_local_dynrelocs): Likewise.
2017-09-02x86: Rearrange fields and update commentsH.J. Lu2-8/+14
* elfxx-x86.h (elf_x86_link_hash_table): Rearrange fields and update comments.
2017-09-02i386: Update sgotplt_jump_table_size settingH.J. Lu2-1/+7
elf_i386_size_dynamic_sections has htab->next_tls_desc_index = htab->elf.srelplt->reloc_count; htab->sgotplt_jump_table_size = htab->next_tls_desc_index * 4; This patch changes it to htab->sgotplt_jump_table_size = elf_x86_compute_jump_table_size (htab) Since elf_x86_compute_jump_table_size is defined as ((htab)->elf.srelplt->reloc_count * (htab)->got_entry_size) there is no change in output. It makes elf_i386_size_dynamic_sections the same as elf_x86_64_size_dynamic_sections. * elf32-i386.c (elf_i386_size_dynamic_sections): Set sgotplt_jump_table_size with elf_x86_compute_jump_table_size.
2017-09-02x86: Define PLT_CIE_LENGTH and PLT_FDE_* in elfxx-x86.hH.J. Lu4-8/+14
Since PLT_CIE_LENGTH, PLT_FDE_LENGTH, PLT_FDE_START_OFFSET and PLT_FDE_LEN_OFFSET are identical in elf32-i386.c and elf64-x86-64.c, they can be defined in elfxx-x86.h. * elf32-i386.c (PLT_CIE_LENGTH, PLT_FDE_LENGTH, PLT_FDE_START_OFFSET, PLT_FDE_LEN_OFFSET): Moved to ... * elfxx-x86.h (PLT_CIE_LENGTH, PLT_FDE_LENGTH, PLT_FDE_START_OFFSET, PLT_FDE_LEN_OFFSET): Here. * elf64-x86-64.c (PLT_CIE_LENGTH, PLT_FDE_LENGTH, PLT_FDE_START_OFFSET, PLT_FDE_LEN_OFFSET): Removed.
2017-09-02x86: Add _bfd_x86_elf_allocate_dynrelocsH.J. Lu5-862/+502
Share _bfd_x86_elf_allocate_dynrelocs in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (elf_i386_allocate_dynrelocs): Removed. (elf_i386_allocate_local_dynrelocs): Likewise. (elf_i386_size_dynamic_sections): Replace elf_i386_allocate_dynrelocs/elf_i386_allocate_local_dynrelocs with _bfd_x86_elf_allocate_dynrelocs and _bfd_x86_elf_allocate_local_dynrelocs. * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Removed. (elf_x86_64_allocate_local_dynrelocs): Likewise. (elf_x86_64_size_dynamic_sections): Replace elf_x86_64_allocate_dynrelocs/elf_x86_64_allocate_local_dynrelocs with _bfd_x86_elf_allocate_dynrelocs and _bfd_x86_elf_allocate_local_dynrelocs. * elfxx-x86.c (_bfd_x86_elf_allocate_dynrelocs): New function. (_bfd_x86_elf_allocate_local_dynrelocs): Likewise. * elfxx-x86.h (_bfd_x86_elf_allocate_dynrelocs): New prototype. (_bfd_x86_elf_allocate_local_dynrelocs): Likewise.
2017-09-02x86: Add is_x86_elfH.J. Lu5-20/+35
Share is_x86_elf in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (is_i386_elf): Removed. (elf_i386_check_relocs): Replace is_i386_elf with is_x86_elf. (elf_i386_size_dynamic_sections): Likewise. (elf_i386_relocate_section): Likewise. * elf64-x86-64.c (is_x86_64_elf): Removed. (elf_x86_64_check_relocs): Replace is_x86_64_elf with is_x86_elf. (elf_x86_64_size_dynamic_sections): Likewise. (elf_x86_64_relocate_section): Likewise. * elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize target_id. * elfxx-x86.h (elf_x86_link_hash_table): Add target_id. (is_x86_elf): New.
2017-09-02x86: Add elf_x86_compute_jump_table_sizeH.J. Lu5-11/+29
Share elf_x86_compute_jump_table_size in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (elf_i386_compute_jump_table_size): Removed. (elf_i386_allocate_dynrelocs): Replace elf_i386_compute_jump_table_size with elf_x86_compute_jump_table_size. (elf_i386_size_dynamic_sections): Likewise. * elf64-x86-64.c (elf_x86_64_compute_jump_table_size): Removed. (elf_x86_64_allocate_dynrelocs): Replace elf_x86_64_compute_jump_table_size with elf_x86_compute_jump_table_size. (elf_x86_64_size_dynamic_sections): Likewise. * elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize got_entry_size. * elfxx-x86.h (elf_x86_link_hash_table): Add got_entry_size. (elf_x86_compute_jump_table_size): New.
2017-09-02x86: Add sizeof_reloc to elf_x86_link_hash_tableH.J. Lu3-3/+12
Initialize htab->sizeof_reloc once, instead of computing it every time. * elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize sizeof_reloc. (_bfd_x86_elf_adjust_dynamic_symbol): Use sizeof_reloc. * elfxx-x86.h (elf_x86_link_hash_table): Add sizeof_reloc.
2017-09-02i386: Check VxWorks with htab->is_vxworksH.J. Lu2-15/+17
* elf32-i386.c (elf_i386_allocate_dynrelocs): Check VxWorks with htab->is_vxworks. (elf_i386_size_dynamic_sections): Likewise. (elf_i386_relocate_section): Likewise. (elf_i386_finish_dynamic_symbol): Likewise. (elf_i386_finish_dynamic_sections): Likewise.
2017-09-02x86: Move GOT_TLS_* in elf32-i386.c to elfxx-x86.hH.J. Lu4-28/+25
elf64-x86-64.c can use GOT_TLS_* definitions in elf32-i386.c with GOT_TLS_IE_POS, GOT_TLS_IE_NEG and GOT_TLS_IE_BOTH unused. * elf32-i386.c (GOT_TLS_IE, GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH, GOT_TLS_GDESC, GOT_TLS_GD_BOTH_P, GOT_TLS_GD_P, GOT_TLS_GDESC_P, GOT_TLS_GD_ANY_P): Moved to ... * elfxx-x86.h (GOT_TLS_IE, GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH, GOT_TLS_GDESC, GOT_TLS_GD_BOTH_P, GOT_TLS_GD_P, GOT_TLS_GDESC_P, GOT_TLS_GD_ANY_P): Here. * elf64-x86-64.c (GOT_TLS_IE, GOT_TLS_GDESC, GOT_TLS_GD_BOTH_P, GOT_TLS_GD_P, GOT_TLS_GDESC_P, GOT_TLS_GD_ANY_P): Removed.
2017-09-02LTO rescan archivesAlan Modra4-7/+103
ld ought to be more clever about where it puts LTO recompiled objects. Ideally the recompiled objects ought to be ordered to the same place their IR objects were, and files extracted from archives on the second pass ought to go in the same place as they would if extracted on the first pass. This patch addresses the archive problem. Without this fix, objects extracted from archives might be placed after the crt files intended to go at the end of an executable or shared library, possibly causing exception handling failures. * ldlang.h (lang_input_statement_type): Expand comments. (LANG_FOR_EACH_INPUT_STATEMENT): Rewrite without casts. * ldlang.c (lang_for_each_input_file): Likewise. (load_symbols): Set usrdata for archives. (find_rescan_insertion): New function. (lang_process): Trim off and reinsert entries added to file chain when rescanning archives for LTO. * ldmain.c (add_archive_element): Set my_archive input_statement next pointer to last element added.
2017-09-01x86-64: Check ELF_COMMON_DEF_P for common symbolsH.J. Lu6-1/+84
bfd/ PR ld/22064 * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Check ELF_COMMON_DEF_P for common symbols. ld/ PR ld/22064 * testsuite/ld-x86-64/pr22064a.S: New file. * testsuite/ld-x86-64/pr22064b.c: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run PR ld/22064 test.
2017-09-02-Og warning fixesAlan Modra6-16/+30
Found when building with gcc 4.9.4 using -Og. bfd/ * elf-eh-frame.c (offset_adjust): Avoid false positive gcc warning. * elflink.c (bfd_elf_size_dynsym_hash_dynstr): Likewise. * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Likewise. ld/ * emultempl/msp430.em (eval_upper_either_sections): Make base_sec_name a const char*. (eval_lower_either_sections): Likewise. (msp430_elf_after_allocation): Likewise, and don't needlessly concat and free. Warning fix.
2017-09-02Automatic date update in version.inGDB Administrator1-1/+1
2017-09-01x86: Add _bfd_x86_elf_gc_mark_hookH.J. Lu5-44/+44
Since R_X86_64_GNU_VTINHERIT == R_386_GNU_VTINHERIT and R_X86_64_GNU_VTENTRY == R_386_GNU_VTENTRY, we can share _bfd_x86_elf_gc_mark_hook in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (elf_i386_gc_mark_hook): Removed. (elf_backend_gc_mark_hook): Likewise. * elf64-x86-64.c (elf_x86_64_gc_mark_hook): Likewise. (elf_backend_gc_mark_hook): Likewise. * elfxx-x86.c (_bfd_x86_elf_gc_mark_hook): New function. * elfxx-x86.h (_bfd_x86_elf_gc_mark_hook): New. (elf_backend_gc_mark_hook): Likewise.
2017-09-01x86: Add _bfd_x86_elf_adjust_dynamic_symbolH.J. Lu5-389/+228
Share _bfd_x86_elf_adjust_dynamic_symbol in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Removed. (elf_backend_adjust_dynamic_symbol): Likewise. * elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise. (elf_backend_adjust_dynamic_symbol): Likewise. * elfxx-x86.c (_bfd_x86_elf_adjust_dynamic_symbol): New function. (_bfd_x86_elf_link_setup_gnu_properties): Copy is_vxworks. * elfxx-x86.h (elf_x86_link_hash_table): Add is_vxworks. (_bfd_x86_elf_adjust_dynamic_symbol): New. (elf_backend_adjust_dynamic_symbol): Likewise.
2017-09-01Correct ChangeLog entryH.J. Lu1-1/+1
2017-09-01elfxx-x86.h: Fix a typo in commentsH.J. Lu2-1/+6
* elfxx-x86.h (elf_x86_plt_layout_table): Fix a typo in comments.
2017-09-01x86: Add _bfd_x86_elf_mkobjectH.J. Lu5-20/+27
Share _bfd_x86_elf_mkobject in elf32-i386.c and elf64-x86-64.c. * elf32-i386.c (elf_i386_mkobject): Removed. (bfd_elf32_mkobject): Likewise. * elf64-x86-64.c (elf_x86_64_mkobject): Likewise. (bfd_elf64_mkobject): Likewise. (bfd_elf32_mkobject): Likewise. * elfxx-x86.c (_bfd_x86_elf_mkobject): New function. (_bfd_x86_elf_mkobject): New. (bfd_elf64_mkobject): Likewise. (bfd_elf32_mkobject): Likewise.
2017-09-01x86: Add _bfd_x86_elf_link_setup_gnu_propertiesH.J. Lu5-717/+494
Extract the common parts of elf_i386_link_setup_gnu_properties and elf_x86_64_link_setup_gnu_properties into a new function. For x86-64, since PIC PLT layouts are the same as non-PIC PLT layouts, initialize pic_plt0_entry and pic_plt_entry fields in PLT layouts with the non-PIC PLT entries. * elf32-i386.c (elf_i386_link_setup_gnu_properties): Updated. Call _bfd_x86_elf_link_setup_gnu_properties. * elf64-x86-64.c (elf_x86_lazy_plt_layout): Initialize pic_plt0_entry and pic_plt_entry fields with the non-PIC PLT entries. (elf_x86_64_non_lazy_plt): Likewise. (elf_x86_64_lazy_bnd_plt): Likewise. (elf_x86_64_non_lazy_bnd_plt): Likewise. (elf_x86_64_lazy_ibt_plt): Likewise. (elf_x32_lazy_ibt_plt): Likewise. (elf_x86_64_non_lazy_ibt_plt): Likewise. (elf_x32_non_lazy_ibt_plt): Likewise. (elf_x86_64_nacl_plt): Likewise. (elf_x86_64_link_setup_gnu_properties): Updated. Call _bfd_x86_elf_link_setup_gnu_properties. * elfxx-x86.c: Include elf-vxworks.h". (_bfd_x86_elf_link_setup_gnu_properties): New function. * elfxx-x86.h (elf_x86_lazy_plt_layout): Remove "for i386 only" comments for pic_plt0_entry and pic_plt_entry. (elf_x86_non_lazy_plt_layout): Likewise. (elf_x86_plt_layout_table): New. (_bfd_x86_elf_link_setup_gnu_properties): Likewise.
2017-09-01Import latest fixes to libiberty from GCCH.J. Lu2-6/+5
Fix warning for simple-object-elf.c. 2017-09-01 Martin Liska <mliska@suse.cz> * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Remove duplicite declaration.
2017-09-01x86: Correct unwind information for the second PLTH.J. Lu26-51/+574
For i386, generate unwind information for the second PLT. For x32, correct alignment of .eh_frame section for the second PLT. bfd/ PR ld/22061 * elf32-i386.c (elf_i386_link_setup_gnu_properties): Create .eh_frame section for the second PLT. * elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Correct alignment of .eh_frame section for the second PLT. ld/ PR ld/22061 * testsuite/ld-i386/ibt-plt-1.d: Updated. * testsuite/ld-i386/ibt-plt-2a.d: Likewise. * testsuite/ld-i386/ibt-plt-2c.d: Likewise. * testsuite/ld-i386/ibt-plt-3a.d: Likewise. * testsuite/ld-i386/ibt-plt-3c.d: Likewise. * testsuite/ld-x86-64/ibt-plt-1-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2a-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2c-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3a-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3c-x32.d: Likewise. * testsuite/ld-i386/ibt-plt-2b.d: Pass --hash-style=sysv to ld and dump unwind information. * testsuite/ld-i386/ibt-plt-2d.d: Likewise. * testsuite/ld-i386/ibt-plt-3b.d: Likewise. * testsuite/ld-i386/ibt-plt-3d.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2b-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2b.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2d-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2d.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3b-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3b.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3d-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3d.d: Likewise.
2017-09-01Enable support for the AArch64 dot-prod instruction in the Cortex A55 and ↵Tamar Christina2-2/+7
A75 cpus. * config/tc-aarch64.c (aarch64_cpus): Enable DOTPROD for cortex-a55 and cortx-a75.
2017-09-01Prevent an address violation parsing corrupt DWARF information by fixing the ↵Nick Clifton2-3/+9
test for an overlong debug line info structure. PR 22059 * dwarf2.c (decode_line_info): Fix test for an overlong line info structure.
2017-09-01Import latest fixes to libiberty from GCC.Nick Clifton7-36/+802
PR lto/81968 * simple-object-elf.c (simple_object_elf_copy_lto_debug_section): Keep names of removed global symbols. * simple-object-xcoff.c (simple_object_xcoff_find_sections): Improve .go_export csect handling. Don't make assumptions on containing section or number of auxiliary entries. PR lto/81968 * simple-object-elf.c (simple_object_elf_copy_lto_debug_section): Adjust field with for sh_type write, set SHF_EXCLUDE only for removed sections. PR lto/81925 * simple-object-elf.c (simple_object_elf_write_shdr): Adjust type of sh_addralign and sh_entsize and properly write sh_entsize as Elf_Addr. (simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr. * simple-object-common.h (struct simple_object_functions): Add copy_lto_debug_sections hook. * simple-object.c: Include fcntl.h. (handle_lto_debug_sections): New helper function. (simple_object_copy_lto_debug_sections): New function copying early LTO debug sections to regular debug sections in a new file. (simple_object_start_write): Handle NULL segment_name. * simple-object-coff.c (simple_object_coff_functions): Adjust for not implemented copy_lto_debug_sections hook. * simple-object-mach-o.c (simple_object_mach_o_functions): Likewise. * simple-object-xcoff.c (simple_object_xcoff_functions): Likewise. * simple-object-elf.c (SHT_NULL, SHT_SYMTAB, SHT_RELA, SHT_REL, SHT_GROUP): Add various sectopn header types. (SHF_EXCLUDE): Add flag. (Elf32_External_Sym, Elf64_External_Sym): Add symbol struct. (ELF_ST_BIND, ELF_ST_TYPE, ELF_ST_INFO): Add accessors. (STT_OBJECT, STT_FUNC, STT_TLS, STT_GNU_IFUNC): Add Symbol types. (STV_DEFAULT): Add symbol visibility. (SHN_COMMON): Add special section index name. (struct simple_object_elf_write): New. (simple_object_elf_start_write): Adjust for new private data. (simple_object_elf_write_shdr): Pass in values for all fields we write. (simple_object_elf_write_to_file): Adjust. Copy from recorded section headers if requested. (simple_object_elf_release_write): Release private data. (simple_object_elf_copy_lto_debug_sections): Copy and rename sections as denoted by PFN and all their dependences, symbols and relocations to the empty destination file. (simple_object_elf_functions): Adjust for copy_lto_debug_sections hook. * simple-object-xcoff.c (simple_object_xcoff_find_sections): Search symbol table for .go_export symbol and apply pfn if found.
2017-09-01Fix buffer overrun when parsing an ELF attribute string that is not NUL ↵Nick Clifton2-1/+9
terminated. PR 22058 * elf-attrs.c (_bfd_elf_parse_attributes): Ensure that the attribute buffer is NUL terminated.
2017-09-01PR gdb/22046: Fix T-stopped detach regression on old Linux kernelsJan Kratochvil2-3/+9
On <=RHEL6 hosts Fedora/RHEL GDB started to 'kill -STOP' all processes it detached. Even those not originally T-stopped. This is a Fedora-specific patch which is based on upstream GDB's PROC_STATE_STOPPED state. I believe (I did not verify) this patch did regress it: commit d617208bb06bd461b52ce041d89f7127e3044762 Author: Pedro Alves <palves@redhat.com> Date: Mon Jul 25 12:42:17 2016 +0100 linux-procfs: Introduce enum proc_state As originally there was strstr() but now there is strcmp() and so the missing trailing '\n' no longer matches. The Bug was found by Michal Kolar. Reproducibility: $ gdb -p $PID (gdb) quit $ ... Actual results: === RHEL6.9 x86_64 # scl enable devtoolset-7 bash RHEL6.9 x86_64 # which gdb /opt/rh/devtoolset-7/root/usr/bin/gdb RHEL6.9 x86_64 # ./testcase.sh 24737 pts/0 S+ 0:00 /bin/sleep 4 24737 pts/0 T+ 0:00 /bin/sleep 4 RHEL6.9 x86_64 # === Expected results: === RHEL6.9 x86_64 # which gdb /usr/bin/gdb RHEL6.9 x86_64 # ./testcase.sh 24708 pts/0 S+ 0:00 /bin/sleep 4 24708 pts/0 S+ 0:00 /bin/sleep 4 ./testcase.sh: line 20: kill: (24708) - No such process RHEL6.9 x86_64 # === gdb/ChangeLog 2017-09-01 Jan Kratochvil <jan.kratochvil@redhat.com> PR gdb/22046 * nat/linux-procfs.c (parse_proc_status_state): Fix PROC_STATE_STOPPED detection.
2017-09-01Automatic date update in version.inGDB Administrator1-1/+1
2017-08-31Implement the ability to set/unset environment variables to GDBserver when ↵Sergio Durigan Junior15-65/+984
starting the inferior This patch implements the ability to set/unset environment variables on the remote target, mimicking what GDB already offers to the user. There are two features present here: user-set and user-unset environment variables. User-set environment variables are only the variables that are explicitly set by the user, using the 'set environment' command. This means that variables that were already present in the environment when starting GDB/GDBserver are not transmitted/considered by this feature. User-unset environment variables are variables that are explicitly unset by the user, using the 'unset environment' command. The idea behind this patch is to store user-set and user-unset environment variables in two separate sets, both part of gdb_environ. Then, when extended_remote_create_inferior is preparing to start the inferior, it will iterate over the two sets and set/unset variables accordingly. Three new packets are introduced: - QEnvironmentHexEncoded, which is used to set environment variables, and contains an hex-encoded string in the format "VAR=VALUE" (VALUE can be empty if the user set a variable with a null value, by doing 'set environment VAR='). - QEnvironmentUnset, which is used to unset environment variables, and contains an hex-encoded string in the format "VAR". - QEnvironmentReset, which is always the first packet to be transmitted, and is used to reset the environment, i.e., discard any changes made by the user on previous runs. The QEnvironmentHexEncoded packet is inspired on LLDB's extensions to the RSP. Details about it can be seen here: <https://raw.githubusercontent.com/llvm-mirror/lldb/master/docs/lldb-gdb-remote.txt> I decided not to implement the QEnvironment packet because it is considered deprecated by LLDB. This packet, on LLDB, serves the same purpose of QEnvironmentHexEncoded, but sends the information using a plain text, non-hex-encoded string. The other two packets are new. This patch also includes updates to the documentation, testsuite, and unit tests, without introducing regressions. gdb/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * NEWS (Changes since GDB 8.0): Add entry mentioning new support for setting/unsetting environment variables on the remote target. (New remote packets): Add entries for QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset. * common/environ.c (gdb_environ::operator=): Extend method to handle m_user_set_env_list and m_user_unset_env_list. (gdb_environ::clear): Likewise. (match_var_in_string): Change type of first parameter from 'char *' to 'const char *'. (gdb_environ::set): Extend method to handle m_user_set_env_list and m_user_unset_env_list. (gdb_environ::unset): Likewise. (gdb_environ::clear_user_set_env): New method. (gdb_environ::user_set_envp): Likewise. (gdb_environ::user_unset_envp): Likewise. * common/environ.h (gdb_environ): Handle m_user_set_env_list and m_user_unset_env_list on move constructor/assignment. (unset): Add new default parameter 'update_unset_list = true'. (clear_user_set_env): New method. (user_set_envp): Likewise. (user_unset_envp): Likewise. (m_user_set_env_list): New std::set. (m_user_unset_env_list): Likewise. * common/rsp-low.c (hex2str): New function. (bin2hex): New overload for bin2hex function. * common/rsp-low.c (hex2str): New prototype. (str2hex): New overload prototype. * remote.c: Include "environ.h". Add QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset. (remote_protocol_features): Add QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset packets. (send_environment_packet): New function. (extended_remote_environment_support): Likewise. (extended_remote_create_inferior): Call extended_remote_environment_support. (_initialize_remote): Add QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset packet configs. * unittests/environ-selftests.c (gdb_selftest_env_var): New variable. (test_vector_initialization): New function. (test_init_from_host_environ): Likewise. (test_reinit_from_host_environ): Likewise. (test_set_A_unset_B_unset_A_cannot_find_A_can_find_B): Likewise. (test_unset_set_empty_vector): Likewise. (test_vector_clear): Likewise. (test_std_move): Likewise. (test_move_constructor): (test_self_move): Likewise. (test_set_unset_reset): Likewise. (run_tests): Rewrite in terms of the functions above. gdb/gdbserver/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * server.c (handle_general_set): Handle QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset packets. (handle_query): Inform remote that QEnvironmentHexEncoded, QEnvironmentUnset and QEnvironmentReset are supported. gdb/doc/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.texinfo (set environment): Add @anchor. Explain that environment variables set by the user are sent to GDBserver. (unset environment): Likewise, but for unsetting variables. (Connecting) <Remote Packet>: Add "environment-hex-encoded", "QEnvironmentHexEncoded", "environment-unset", "QEnvironmentUnset", "environment-reset" and "QEnvironmentReset" to the table. (Remote Protocol) <QEnvironmentHexEncoded, QEnvironmentUnset, QEnvironmentReset>: New item, explaining the packet. gdb/testsuite/ChangeLog: 2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com> * gdb.base/share-env-with-gdbserver.c: New file. * gdb.base/share-env-with-gdbserver.exp: Likewise.
2017-08-31Fix buffer read overrun by ensuring that DWARF sections containing strings ↵Nick Clifton2-0/+29
always end in a NUL byte. PR 22047 * dwarf2.c (read_section): If necessary add a terminating NUL byte to dwarf string sections.
2017-08-31Add updated French translations for opcodes and gprofNick Clifton4-507/+884
2017-08-31Add a test for PR ld/22048H.J. Lu5-0/+46
PR ld/22048 * testsuite/ld-x86-64/pr22048.d: New file. * testsuite/ld-x86-64/pr22048a.s: Likewise. * testsuite/ld-x86-64/pr22048b.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr22048.
2017-08-31Regen SRC-POTFILES.inAlan Modra2-0/+6
* po/SRC-POTFILES.in: Regenerate.
2017-08-31Remove .eh_frame zero terminatorsAlan Modra6-55/+52
The machinery to do this was there, but not enabled if the terminator was the only thing in the section. bfd/ * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Don't exit early for a section containing just a terminator. Allow multiple terminators at end of section. * elflink.c (bfd_elf_discard_info): Iterate over .eh_frame sections when not adding alignment. Assert on terminator in the middle of FDEs. ld/ * testsuite/ld-elf/eh3.d: Update. * testsuite/ld-elf/eh4.d: Update.
2017-08-31Unbreak gdb build on 32-bit host with ADI supportWeimin Pan2-11/+33
The problem of failing to build with arm-linux-gnueabihf-g++-4.8 was that type CORE_ADDR is of "unsigned long" on a 64-bit machine so it's OK to use %lx but is of type "unsigned long long" on a 32 bit system. Fixed the problem in three places - (1) use a temp variable of type CORE_ADDR as argument 3 when calling target_auxv_search() then assign its value to "blksize" and "nbits" in 2 calls; (2) redo adi_normalize_address() using masks and xor operators to calculate normalized address; (3) call paddress() to print CORE_ADDR in either printf_filtered() or error(). Thank you, Pedro, for all your suggestions. gdb/ChangeLog: 2017-08-31 Weimin Pan <weimin.pan@oracle.com> * sparc64-tdep.c (adi_stat_t): Fix comment formatting. (adi_available): Use a temp variable of type CORE_ADDR as argument 3 when calling target_auxv_search. (adi_normalize_address): Use masks and xor operators to calculate normalized address. (adi_read_versions, adi_write_versions, adi_print_versions) (do_examine, do_assign): Use paddress.