aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-06-13read/write_pieced_value: Respect value parent's offsetAndreas Arnez2-2/+10
In the case of targeting a bit-field, read_pieced_value and write_pieced_value calculate the number of bits preceding the bit-field without considering the relative offset of the value's parent. This is relevant for a structure variable like this: struct s { uint64_t foo; struct { uint32_t bar; uint32_t bf : 10; /* <-- target bit-field */ } baz; } s; In this scenario, if 'val' is a GDB value representing s.baz.bf, val->parent represents the whole s.baz structure, and the following holds: - value_offset (val) == sizeof s.baz.bar == 4 - value_offset (val->parent) == sizeof s.foo == 8 The current logic would only use value_offset(val), resulting in the wrong offset into the target value. This is fixed. gdb/ChangeLog: * dwarf2loc.c (read_pieced_value): Respect parent value's offset when targeting a bit-field. (write_pieced_value): Likewise.
2017-06-13gdb/testsuite: Add "get_endianness" convenience procAndreas Arnez14-102/+47
The test suite contains multiple instances of determining the target's endianness with GDB's "show endian" command. This patch replaces these by an invocation of a new convenience proc 'get_endianness'. gdb/testsuite/ChangeLog: * lib/gdb.exp (get_endianness): New proc. * gdb.arch/aarch64-fp.exp: Use it. * gdb.arch/altivec-regs.exp: Likewise. * gdb.arch/e500-regs.exp: Likewise. * gdb.arch/vsx-regs.exp: Likewise. * gdb.base/dump.exp: Likewise. * gdb.base/funcargs.exp: Likewise. * gdb.base/gnu_vector.exp: Likewise. * gdb.dwarf2/formdata16.exp: Likewise. * gdb.dwarf2/implptrpiece.exp: Likewise. * gdb.dwarf2/nonvar-access.exp: Likewise. * gdb.python/py-inferior.exp: Likewise. * gdb.trace/unavailable-dwarf-piece.exp: Likewise.
2017-06-13Remove addr_size field from struct piece_closureAndreas Arnez2-6/+9
The addr_size field in the piece_closure data structure is a relic from before introducing the typed DWARF stack. It is obsolete now. This patch removes it. gdb/ChangeLog: * dwarf2loc.c (struct piece_closure) <addr_size>: Remove field. (allocate_piece_closure): Drop addr_size parameter. (dwarf2_evaluate_loc_desc_full): Adjust call to allocate_piece_closure.
2017-06-13PR gdb/21226: Take DWARF stack value pieces from LSB endAndreas Arnez4-23/+56
When taking a DW_OP_piece or DW_OP_bit_piece from a DW_OP_stack_value, the existing logic always takes the piece from the lowest-addressed end, which is wrong on big-endian targets. The DWARF standard states that the "DW_OP_bit_piece operation describes a sequence of bits using the least significant bits of that value", and this also matches the current logic in GCC. For instance, the GCC guality test case pr54970.c fails on s390x because of this. This fix adjusts the piece accordingly on big-endian targets. It is assumed that: * DW_OP_piece shall take the piece from the LSB end as well; * pieces reaching outside the stack value bits are considered undefined, and a zero value can be used instead. gdb/ChangeLog: PR gdb/21226 * dwarf2loc.c (read_pieced_value): Anchor stack value pieces at the LSB end, independent of endianness. gdb/testsuite/ChangeLog: PR gdb/21226 * gdb.dwarf2/nonvar-access.exp: Add checks for verifying that stack value pieces are taken from the LSB end.
2017-06-13write_pieced_value: Fix size capping logicAndreas Arnez4-2/+17
A field f in a structure composed of DWARF pieces may be located in multiple pieces, where the first and last of those may contain bits from other fields as well. So when writing to f, the beginning of the first and the end of the last of those pieces may have to be skipped. But the logic in write_pieced_value for handling one of those pieces is flawed when the first and last piece are the same, i.e., f is contained in a single piece: < - - - - - - - - - piece_size - - - - - - - - - -> +-------------------------------------------------+ | skipped_bits | f_bits | / / / / / / / / / / | +-------------------------------------------------+ The current logic determines the size of the sub-piece to operate on by limiting the piece size to the bit size of f and then subtracting the skipped bits: min (piece_size, f_bits) - skipped_bits Instead of: min (piece_size - skipped_bits, f_bits) So the resulting sub-piece size is corrupted, leading to wrong handling of this piece in write_pieced_value. Note that the same bug was already found in read_pieced_value and fixed there (but not in write_pieced_value), see PR 15391. This patch swaps the calculations, bringing them into the same (correct) order as in read_pieced_value. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): Fix order of calculations for size capping. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-pieces.exp: Add test case for modifying a variable at nonzero offset.
2017-06-13Add test for modifiable DWARF locationsAndreas Arnez4-1/+229
This adds a test for read/write access to variables with various types of DWARF locations. It uses register- and memory locations and composite locations with register- and memory pieces. Since the new test calls gdb_test_no_output with commands that contain braces, it is necessary for string_to_regexp to quote braces as well. This was not done before. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-access.c: New file. * gdb.dwarf2/var-access.exp: New test. * lib/gdb-utils.exp (string_to_regexp): Quote braces as well.
2017-06-13Prevent a call to abort when a relocatable link encounters a relocation ↵Nick Clifton2-4/+26
against a symbol in a section removed by garbage collection. PR ld/21524 * elflink.c (elf_link_adjust_relocs): Generate an error when encountering a reloc against a symbol removed by garbage collection.
2017-06-13Move initialize_tdesc_mips* calls from mips-linux-nat.c to mips-linux-tdep.cYao Qi4-11/+30
All target descriptions except mips initialization are called in -tdep.c, instead of -nat.c, so this patch moves mips target descriptions initialization to -tdep.c. Secondly, I want to change the target descriptions from pre-generated to dynamical creation, so I want to test that these pre-generated target descriptions equal to these dynamically created ones. Move target descriptions initialization to -tdep.c files so we can test them in any hosts (if they are still -nat.c, we can only test them on mips-linux host.). gdb: 2017-06-13 Yao Qi <yao.qi@linaro.org> * mips-linux-nat.c: Move include features/mips*-linux.c to mips-linux-tdep.c. (_initialize_mips_linux_nat): Move initialize_tdesc_mips* calls to mips-linux-tdep.c. * mips-linux-tdep.c: Include features/mips*-linux.c (_initialize_mips_linux_tdep): Call initialize_tdesc_mips* functions. * mips-linux-tdep.h (tdesc_mips_linux): Declare. (tdesc_mips_dsp_linux, tdesc_mips64_linux): Declare. (tdesc_mips64_dsp_linux): Declare.
2017-06-13Automatic date update in version.inGDB Administrator1-1/+1
2017-06-12Add some 128-bit integer testsTom Tromey2-2/+33
This adds some tests for printing 128-bit integers. 2017-06-12 Tom Tromey <tom@tromey.com> * gdb.dwarf2/formdata16.exp: Add tests.
2017-06-12Remove val_print_type_code_intTom Tromey6-62/+23
Now that print_scalar_formatted is more capable, there's no need for val_print_type_code_int. This patch removes it in favor of val_print_scalar_formatted. 2017-06-12 Tom Tromey <tom@tromey.com> * valprint.h (val_print_type_code_int): Remove. * valprint.c (generic_val_print_int): Always call val_print_scalar_formatted. (val_print_type_code_int): Remove. * printcmd.c (print_scalar_formatted): Handle options->format==0. * f-valprint.c (f_val_print): Use val_print_scalar_formatted. * c-valprint.c (c_val_print_int): Use val_print_scalar_formatted. * ada-valprint.c (ada_val_print_num): Use val_print_scalar_formatted.
2017-06-12Simplify print_scalar_formattedTom Tromey4-127/+84
This unifies the two switches in print_scalar_formatted, removing some now-redundant code. Now scalar types are never converted to LONGEST, instead printing is done using print_*_chars, operating on the byte representation. ChangeLog 2017-06-12 Tom Tromey <tom@tromey.com> * printcmd.c (print_scalar_formatted): Unify the two switches. Don't convert scalars to LONGEST. 2017-06-12 Tom Tromey <tom@tromey.com> * gdb.arch/altivec-regs.exp: Expect decimal results for uint128.
2017-06-12Let print_decimal_chars handle signed valuesTom Tromey4-3/+66
This changes print_decimal_chars to handle signed values. gdb/ChangeLog 2017-06-12 Tom Tromey <tom@tromey.com> PR exp/16225: * valprint.h (print_decimal_chars): Update. * valprint.c (maybe_negate_by_bytes): New function. (print_decimal_chars): Add "is_signed" argument. * printcmd.c (print_scalar_formatted): Update.
2017-06-12Don't always zero pad in print_*_charsTom Tromey12-118/+197
This changes print_octal_chars and print_decimal_chars to never zero pad, and changes print_binary_chars and print_hex_chars to only optionally zero-pad, based on a flag. ChangeLog 2017-06-12 Tom Tromey <tom@tromey.com> PR exp/16225: * valprint.h (print_binary_chars, print_hex_chars): Update. * valprint.c (val_print_type_code_int): Update. (print_binary_chars): Add "zero_pad" argument. (emit_octal_digit): New function. (print_octal_chars): Don't zero-pad. (print_decimal_chars): Likewise. (print_hex_chars): Add "zero_pad" argument. * sh64-tdep.c (sh64_do_fp_register): Update. * regcache.c (regcache::dump): Update. * printcmd.c (print_scalar_formatted): Update. * infcmd.c (default_print_one_register_info): Update. 2017-06-12 Tom Tromey <tom@tromey.com> PR exp/16225: * gdb.reverse/i386-sse-reverse.exp: Update tests. * gdb.arch/vsx-regs.exp: Update tests. * gdb.arch/s390-vregs.exp (hex128): New proc. Update test. * gdb.arch/altivec-regs.exp: Update tests.
2017-06-12mips-tdep.c: Remove MAX_REGISTER_SIZE usagePedro Alves2-17/+32
mips_eabi_push_dummy_call is storing the address of a struct in a buffer that must have the same of the confisued/set ABI register size. Add a define for the maximum ABI size and use it to size the local buffer. Also rename the 'regsize' local to 'abi_regsize' for clarity. Tested that --enable-targets=all still builds. gdb/ChangeLog: 2017-06-12 Pedro Alves <palves@redhat.com> Alan Hayward <alan.hayward@arm.com> * mips-tdep.c (MAX_MIPS_ABI_REGSIZE): New. (mips_eabi_push_dummy_call): Rename local 'regsize' to 'abi_regsize'. Rename local array 'valbuf' to 'ref_valbuf', and use MAX_MIPS_ABI_REGSIZE instead of MAX_REGISTER_SIZE to size it. Assert that abi_regsize bytes fit in 'ref_valbuf'.
2017-06-12.gdb_index prod perf regression: mapped_symtab now vector of valuesPedro Alves2-28/+39
... instead of vector of pointers There's no real reason for having mapped_symtab::data be a vector of heap-allocated symtab_index_entries. symtab_index_entries is not that large, it's movable, and it's cheap to move. Making the vector hold values instead improves cache locality and eliminates many roundtrips to the heap. Using the same test as in the previous patch, against the same gdb inferior, timing improves ~13% further: ~6.0s => ~5.2s (average of 5 runs). Note that before the .gdb_index C++ifycation patch, we were at ~5.7s. We're now consistenly better than before. gdb/ChangeLog 2017-06-12 Pedro Alves <palves@redhat.com> * dwarf2read.c (mapped_symtab::data): Now a vector of symtab_index_entry instead of vector of std::unique_ptr<symtab_index_entry>. All users adjusted to check whether an element's name is NULL instead of checking whether the element itself is NULL. (find_slot): Change return type. Adjust. (hash_expand, , add_index_entry, uniquify_cu_indices) (write_hash_table): Adjust.
2017-06-12.gdb_index prod perf regression: Estimate size of psyms_seenPedro Alves2-1/+41
Using the same test as the previous patch, perf shows GDB spending over 7% in "free". A substantial number of those calls comes from insertions in the psyms_seen unordered_set causing lots of rehashing and recreating buckets. Fix this by computing an estimate of the size of the set upfront. Using the same test as in the previous patch, against the same gdb inferior, timing improves ~8% further: ~6.5s => ~6.0s (average of 5 runs). gdb/ChangeLog: 2017-06-12 Pedro Alves <palves@redhat.com> * dwarf2read.c (recursively_count_psymbols): New function. (write_psymtabs_to_index): Call it to compute number of psyms and pass estimate size of psyms_seen to unordered_set's ctor.
2017-06-12.gdb_index prod perf regression: find before insert in unordered_mapPedro Alves2-5/+21
"perf" shows the unordered_map::emplace call in write_hash_table a bit high up on profiles. Fix this using the find + insert idiom instead of going straight to insert. I tried doing the same to the other unordered_maps::emplace calls in the file, but saw no performance improvement, so left them be. With a '-g3 -O2' build of gdb, and: $ cat save-index.cmd set $i = 0 while $i < 100 save gdb-index . set $i = $i + 1 end $ time ./gdb -data-directory=data-directory -nx --batch -q -x save-index.cmd ./gdb.pristine I get an improvement of ~7%: ~7.0s => ~6.5s (average of 5 runs). gdb/ChangeLog: 2017-06-12 Pedro Alves <palves@redhat.com> * dwarf2read.c (write_hash_table): Check if key already exists before emplacing.
2017-06-12Code cleanup: dwarf2read.c: Add data_buf::append_uintPedro Alves2-29/+37
This avoids having to specify the integer size twice in the same line. gdb/ChangeLog: 2017-06-12 Pedro Alves <palves@redhat.com> * dwarf2read.c (data_buf::append_space): Rename to... (data_buf::grow): ... this, and make private. Adjust all callers. (data_buf::append_uint): New method. (add_address_entry, write_one_signatured_type) (write_psymtabs_to_index): Use it.
2017-06-12Code cleanup: dwarf2read.c: Eliminate ::file_writePedro Alves2-20/+8
There's no real need for all this indirection. gdb/ChangeLog: 2017-06-12 Pedro Alves <palves@redhat.com> * dwarf2read.c (file_write(FILE *, const void *, size_t)): Delete. (file_write (FILE *, const std::vector<Elem>&)): Delete. (data_buf::file_write): Call ::fwrite directly.
2017-06-12Code cleanup: dwarf2read.c:uniquify_cu_indices: Use std::uniquePedro Alves2-17/+9
gdb/ChangeLog: 2017-06-12 Pedro Alves <palves@redhat.com> * dwarf2read.c (uniquify_cu_indices): Use std::unique and std::vector::erase.
2017-06-12Code cleanup: C++ify .gdb_index producerJan Kratochvil2-434/+308
gdb/ChangeLog 2017-06-12 Jan Kratochvil <jan.kratochvil@redhat.com> Code cleanup: C++ify .gdb_index producer. * dwarf2read.c: Include <unordered_set> and <unordered_map>. (MAYBE_SWAP) [WORDS_BIGENDIAN]: Cast to offset_type. (struct strtab_entry, hash_strtab_entry, eq_strtab_entry) (create_strtab, add_string): Remove. (file_write, data_buf): New. (struct symtab_index_entry): Use std::vector for cu_indices. (struct mapped_symtab): Use std::vector for data. (hash_symtab_entry, eq_symtab_entry, delete_symtab_entry) (create_symbol_hash_table, create_mapped_symtab, cleanup_mapped_symtab): Remove. (find_slot): Change return type. Update it to the new data structures. (hash_expand, add_index_entry): Update it to the new data structures. (offset_type_compare): Remove. (uniquify_cu_indices): Update it to the new data structures. (c_str_view, c_str_view_hasher, vector_hasher): New. (add_indices_to_cpool): Remove. (write_hash_table): Update it to the new data structures. (struct psymtab_cu_index_map, hash_psymtab_cu_index) (eq_psymtab_cu_index): Remove. (psym_index_map): New typedef. (struct addrmap_index_data): Change addr_obstack pointer to data_buf reference and std::unordered_map for cu_index_htab. (add_address_entry, add_address_entry_worker, write_address_map) (write_psymbols): Update it to the new data structures. (write_obstack): Remove. (struct signatured_type_index_data): Change types_list to a data_buf reference and psyms_seen to a std::unordered_set reference. (write_one_signatured_type, recursively_write_psymbols) (write_psymtabs_to_index): Update it to the new data structures.
2017-06-12ELF: Pass bfd_link_info to merge_gnu_propertiesH.J. Lu5-11/+28
Pass struct bfd_link_info * to merge_gnu_properties to give backend control of how GNU properties are merged based on linker command line options. * elf-bfd.h (elf_backend_data): Add struct bfd_link_info * to merge_gnu_properties. * elf-properties.c (elf_merge_gnu_properties): Add struct bfd_link_info * and pass it to merge_gnu_properties. (elf_merge_gnu_property_list): Add struct bfd_link_info * and pass it to elf_merge_gnu_properties. (_bfd_elf_link_setup_gnu_properties): Pass info to elf_merge_gnu_property_list. * elf32-i386.c (elf_i386_merge_gnu_properties): Add struct bfd_link_info *. * elf64-x86-64.c (elf_x86_64_merge_gnu_properties): Likewise.
2017-06-12S/390: Return with an error for broken tls rewritesAndreas Krebbel2-10/+32
bfd/ChangeLog: 2017-06-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * elf32-s390.c (elf_s390_relocate_section): Return false in case the rewriting fails. * elf64-s390.c (elf_s390_relocate_section): Likewise.
2017-06-12Automatic date update in version.inGDB Administrator1-1/+1
2017-06-11Introduce "set debug separate-debug-file"Simon Marchi7-0/+59
I helped someone figure out why their separate debug info (debug link-based) was not found by gdb. It turns out that the debug file was not named properly. It made me realize that it is quite difficult to diagnose this kind of problems. This patch adds some debug output to show where GDB looks for those files, so that it should be (more) obvious to find what's wrong. Here's an example of the result, first with an example of unsuccessful lookup, and then a successful one. (gdb) set debug separate-debug-file on (gdb) file /usr/bin/gnome-calculator Reading symbols from /usr/bin/gnome-calculator... Looking for separate debug info (build-id) for /usr/bin/gnome-calculator Trying /usr/local/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Looking for separate debug info (debug link) for /usr/bin/gnome-calculator Trying /usr/bin/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Trying /usr/bin/.debug/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Trying /usr/local/lib/debug//usr/bin/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug (no debugging symbols found)...done. (gdb) set debug-file-directory /usr/lib/debug (gdb) file /usr/bin/gnome-calculator Reading symbols from /usr/bin/gnome-calculator... Looking for separate debug info by build-id for /usr/bin/gnome-calculator Trying /usr/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Reading symbols from /usr/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug...done. done. Note: here, the debug link happens to be named like the build-id, but it doesn't have to be this way. It puzzled me for a minute. gdb/ChangeLog: * NEWS (Changes since GDB 8.0): Announce {set,show} debug separate-debug-file commands. * symfile.h (separate_debug_file_debug): New global. * symfile.c (separate_debug_file_debug): New global. (separate_debug_file_exists, find_separate_debug_file): Add debug output. (_initialize_symfile): Add "set debug separate-debug-file" command. * build-id.c (build_id_to_debug_bfd, find_separate_debug_file_by_buildid): Add debug output. gdb/doc/ChangeLog: * gdb.texinfo (Optional Messages about Internal Happenings): Document {set,show} debug separate-debug-file commands.
2017-06-11PR 21564, Section start in binary output file incorrectAlan Modra2-1/+9
PR 21564 * binary.c (binary_set_section_contents): Scale lma by octets per byte to set filepos.
2017-06-11Automatic date update in version.inGDB Administrator1-1/+1
2017-06-10Automatic date update in version.inGDB Administrator1-1/+1
2017-06-10gdbarch: Remove displaced_step_free_closureSimon Marchi14-85/+19
The displaced_step_free_closure gdbarch hook allows architectures to free data they might have allocated to complete a displaced step. However, all architectures using that hook use the simple_displaced_step_free_closure provided in arch-utils.{c,h}, which does a simple xfree. We can remove it and do an xfree directly instead of calling the hook. gdb/ChangeLog: * gdbarch.sh (displaced_step_free_closure): Remove. * gdbarch.h, gdbarch.c: Re-generate. * aarch64-linux-tdep.c (aarch64_linux_init_abi): Don't set displaced_step_free_closure. * amd64-linux-tdep.c (amd64_linux_init_abi_common): Likewise. * arm-linux-tdep.c (arm_linux_init_abi): Likewise. * i386-linux-tdep.c (i386_linux_init_abi): Likewise. * rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise. * rs6000-tdep.c (rs6000_gdbarch_init): Likewise. * s390-linux-tdep.c (s390_gdbarch_init): Likewise. * arch-utils.h (simple_displaced_step_free_closure): Remove. * arch-utils.c (simple_displaced_step_free_closure): Remove. * infrun.c (displaced_step_clear): Call xfree instead of gdbarch_displaced_step_free_closure.
2017-06-09Include <signal.h> on gdbserver/fork-child.c (and fix regressions)Sergio Durigan Junior2-0/+7
Hi, This is another obvious patch that fixes a thinko from my previous startup-with-shell series. We should conditionally include <signal.h> on gdb/gdbserver/fork-child.c because gdbserver will be putting the inferior's terminal on the correct mode after the call to fork_inferior, and for that it needs to ignore SIGTTOU. This patch fixes a bunch of regressions happening on AArch64 that were reported by Yao. gdb/gdbserver/ChangeLog: 2017-06-09 Sergio Durigan Junior <sergiodj@redhat.com> * fork-child.c: Conditionally include <signal.h>.
2017-06-09x86-64: Add some x32 ELF property testsH.J. Lu10-4/+94
* testsuite/ld-x86-64/property-x86-3-x32.d: New file. * testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-4b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-3.d: Also pass -defsym __64_bit__=1 to asssembler. * testsuite/ld-x86-64/property-x86-4a.d: Likewise. * testsuite/ld-x86-64/property-x86-4b.d: Likewise. * testsuite/ld-x86-64/property-x86-3.s: Align to 4 bytes if __64_bit__ isn't defined. * testsuite/ld-x86-64/property-x86-4a.s: Likewise. * testsuite/ld-x86-64/property-x86-4b.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run property-x86-3-x32, property-x86-4a-x32 and property-x86-4b-x32.
2017-06-09Revert "[AArch64] Allow COPY relocation elimination"Jiong Wang6-92/+8
This reverts commit bc327528fd2ccdc6c29ab6ae608085dddbad5cc8. This patch can only be committed after PC-relative relocation types support on copy relocation elimination is also completed.
2017-06-09Automatic date update in version.inGDB Administrator1-1/+1
2017-06-08Fix possible bug when no args have been provided to the executableSergio Durigan Junior2-1/+6
Hi, This bug is related to: <https://sourceware.org/ml/gdb-patches/2017-06/msg00216.html> On stringify_argv, we have to check if args[0] is not NULL before stringifying anything, otherwise we might do the wrong thing when trimming the "ret" string in the end. args[0] will be NULL when no arguments are passed to the inferior that will be started. Checked in as obvious. gdb/ChangeLog: 2017-06-08 Sergio Durigan Junior <sergiodj@redhat.com> * common/common-utils.c (stringify_argv): Check for "arg[0] != NULL".
2017-06-08[ARC] Corrected conditions for dynamic sections creation.Cupertino Miranda2-9/+16
Fixed conditions to create the dynamic sections. Previously there would be times where the dynamic sections would not be created although they were actually required for linking to work. Issue found through OpenADK build, more precisely the ublicb testsuite package. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> elf32-arc.c (elf_arc_check_relocs): Fixed conditions to generate dynamic sections.
2017-06-08[ARC] Fixed condition to generate TEXTREL.Cupertino Miranda2-1/+7
TEXTREL was being generated even when relocatable .o files had the .rela.text section. Now it is limitted only to dynamic object files that still have them. Nevertheless, our target aborts in those cases due to architecture limitations where icache is not coherent with dcache, and to force this coherence expensive kernel level support would be needed. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (elf_arc_size_dynamic_sections): Changed condition to require TEXTREL.
2017-06-08[ARC] Fixed TLS for IE model.Cupertino Miranda5-4/+18
In the case of static relocation, the GOT entries are fixed at link time and are set by the linker. In order to compute the right TLS offset it is necessary to add TCB_SIZE to the offset, just in case the dynamic linker is not expected to be executed (static linked case). This problem does appear in dynamic linked applications, as the dynamic linker is adding this TCB_SIZE by operating the TCB block structure. Problem revealed in GLIBC with static linking. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> arc-got.h (relocate_fix_got_relocs_for_got_info): Added TCB_SIZE to patched section contents for TLS IE reloc. elf32-arc.c: Remove TCB_SIZE preprocessor macro. Rebase to 0006
2017-06-08[ARC] Add RELOC_FOR_GLOBAL_SYMBOL in ARC target code.Cupertino Miranda2-0/+14
This miss was identified in the context of openssh building for ARC. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> elf32-arc.c (elf_arc_relocate_section): Added "call" to RELOC_FOR_GLOBAL_SYMBOL macro.
2017-06-08[ARC] ARC_PC32 dynamic reloc incorrectly generated.Cupertino Miranda2-10/+18
Fixed issue related to the generation of ARC_PC32 dynamic relocs when symbol is dynamic but still defined in a non shared object. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> elf32-arc.c (elf_arc_relocate_section): Small refactor and condition changes.
2017-06-08[ARC] Don't convert _DYNAMIC@ to _GLOBAL_OFFSET_TABLE_Vineet Gupta3-5/+6
Historically the arc abi demanded that a GOT[0] should be referencible as [pc+_DYNAMIC@gotpc]. Hence we convert a _DYNAMIC@gotpc to a GOTPC reference to _GLOBAL_OFFSET_TABLE_. This is no longer the case and uClibc and upcomming GNU libc don't expect this to happen. gas/ChangeLog: Vineet Gupta <vgupta@synopsys.com> Cupertino Miranda <cmiranda@synopsys.com> * config/tc-arc.c (md_undefined_symbol): Changed. * config/tc-arc.h (DYNAMIC_STRUCT_NAME): Removed.
2017-06-08[ARC] Reassign the symbol got information to actual symbol when indirect.Cupertino Miranda2-0/+10
GOT information would not be reassign to symbol when it became a indect symbol. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (elf_arc_relocate_section): Fixed reassign of indirect symbols.
2017-06-08[ARC] Disable warning on absolute relocs when symbol is local.Cupertino Miranda2-1/+7
R_ARC_32 and R_ARC_32_ME cannot be generated as dynamic relocs. However, a warning message and check_relocs was aborting when this type of reloc was being resolved to a local symbol. This is wrong as local symbols are resolvable at link time. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (elf_arc_check_relocs): Added condition to disable warning and "Bad value" for local symbols ARC_32 or ARC_32_ME relocs.
2017-06-08[ARC] Avoid creating dynamic relocs when static linked is requested.Cupertino Miranda2-11/+19
bfd/Changelog: Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (ADD_RELA): Changed to only work when dynamic object is created.
2017-06-08Add MN10300_MAX_REGISTER_SIZEAlan Hayward2-2/+13
gdb/ * mn10300-tdep.c (MN10300_MAX_REGISTER_SIZE): Add. (mn10300_extract_return_value): Use MN10300_MAX_REGISTER_SIZE. (mn10300_push_dummy_call): Likewise.
2017-06-08Update ff4ca5ac6a2e8 to the correct version.Alan Hayward2-11/+6
gdb/ * mi/mi-main.c (register_changed_p): Use value_contents_eq.
2017-06-08[bfd][arm] Don't assert on suspicious build attributes in input fileRichard Earnshaw2-1/+16
It's generally a bad idea to use assertions to validate our idea of what an input file looks like. We need to be as liberal as possible in what we accept with respect to standards and conservative with what we produce. Currently, if gcc is used to produce an assembler file which contains only data, but the FPU is set to fpv4-sp-d16 and mfloat-abi=hard, then the following attributes will be set in the output: .cpu arm7tdmi .eabi_attribute 27, 1 @ Tag_ABI_HardFP_use .eabi_attribute 28, 1 @ Tag_ABI_VFP_args .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model .eabi_attribute 24, 1 @ Tag_ABI_align8_needed .eabi_attribute 25, 1 @ Tag_ABI_align8_preserved .eabi_attribute 26, 2 @ Tag_ABI_enum_size .eabi_attribute 30, 6 @ Tag_ABI_optimization_goals .eabi_attribute 34, 0 @ Tag_CPU_unaligned_access .eabi_attribute 18, 4 @ Tag_ABI_PCS_wchar_t There is then no .fpu directive to cause Tag_FP_arch to be set, because there are no functions containing code in the object file. If this object file is assembled by hand, but without -mfpu on the invocation of the assembler, then the build attributes produced will trigger an assertion during linking. Thinking about the build attributes, the combination of a single-precision only implementation of no floating-point architecture is still no floating-point architecture. Hence the assertion on the input BFD in the linker makes no real sense. We should, however, be more conservative in what we generate, so I've left the assertion on the output bfd in place; I don't think we can trigger it with this change since we never merge the problematic tags from a perversely generated input file. * elf32-arm.c (elf32_arm_merge_eabi_attributes): Remove assertion that the input bfd has Tag_FP_ARCH non-zero if Tag_ABI_HardFP_use is non-zero. Add clarifying comments.
2017-06-08Remove MAX_REGISTER_SIZE from mi/mi-main.cAlan Hayward2-13/+27
gdb/ * mi/mi-main.c (register_changed_p): Use cooked_read_value.
2017-06-08x86: Dump local IFUNC functions in the map fileH.J. Lu6-11/+43
Dump local IFUNC functions in the map file when generating IRELATIVE relocations if -Map is used. bfd/ * elf32-i386.c (elf_i386_check_relocs): Set local IFUNC symbol name. Use local IFUNC symbol name string to report unsupported non-PIC call to IFUNC function. (elf_i386_relocate_section): Dump local IFUNC name with minfo when generating R_386_IRELATIVE relocation. (elf_i386_finish_dynamic_symbol): Likewise. * elf_x86_64_check_relocs (elf_x86_64_check_relocs): Set local IFUNC symbol name. (elf_x86_64_relocate_section): Dump local IFUNC name with minfo when generating R_X86_64_IRELATIVE relocation. (elf_x86_64_finish_dynamic_symbol): Likewise. ld/ * testsuite/ld-ifunc/ifunc-1-local-x86.d: Pass "-Map tmpdir/ifunc-1-local-x86.map" to ld and check ifunc-1-local-x86.map. * testsuite/ld-ifunc/ifunc-1-x86.d: Pass "-Map tmpdir/ifunc-1-x86.map" to ld and check ifunc-1-x86.map. * testsuite/ld-ifunc/ifunc-1-local-x86.map: New file. * testsuite/ld-ifunc/ifunc-1-x86.map: Likewise.
2017-06-08clH.J. Lu2-0/+24