aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-16Add memory tagging testcasesusers/luisgpm/aarch64-mte-v1Luis Machado5-0/+315
Add an AArch64-specific test and a more generic memory tagging test that other architectures can run. Even though architectures not supporting memory tagging can run the memory tagging tests, the runtime check will make the tests bail out early, as it would make no sense to proceed without proper support. gdb/testsuite/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * gdb.arch/aarch64-mte.c: New file. * gdb.arch/aarch64-mte.exp: New test. * gdb.base/memtag.c: New file. * gdb.base/memtag.exp: New test. * lib/gdb.exp (supports_memtag): New function.
2020-06-16Add NEWS entry.Luis Machado1-0/+31
Mention the new packets and memory tagging features. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * NEWS: Mention memory tagging changes.
2020-06-16Document new "x" and "print" memory tagging extensionsLuis Machado1-4/+32
Document the changes to the "print" and "x" commands to support memory tagging. gdb/doc/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * gdb.texinfo (Data): Document memory tagging changes to the "print" command. (Examining Memory): Document memory tagging changes to the "x" command. (Memory Tagging): Update with more information on changes to the "x" and "print" commands.
2020-06-16Extend "x" and "print" commands to support memory taggingLuis Machado2-1/+78
Extend the "x" and "print" commands to make use of memory tagging functionality, if supported by the architecture. The "print" command will point our any possible tag mismatches it finds when dealing with pointers and such a pointer is tagged. No additional modifiers are needed. The "x" command has a new 'm' modifier that will enable displaying of allocation tags alongside the data dump. It will display one allocation tag per line. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * printcmd.c (decode_format): Handle the 'm' modifier. (do_examine): Display allocation tags when required/supported. (should_validate_memtags): New function. (print_command_1): Display memory tag mismatches. * valprint.h (struct format_data) <print_tags>: New field.
2020-06-16Documentation for the new mtag commandsLuis Machado1-0/+58
Document the new "mtag" command prefix and all of its subcommands. gdb/doc/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * gdb.textinfo (Memory Tagging): New subsection. (AArch64 Memory Tagging Extension): New subsection.
2020-06-16New mtag commandsLuis Machado2-13/+320
Add new commands under the "mtag" prefix to allow users to inspect, modify and check memory tags in different ways. The available subcommands are the following: - mtag showltag <address>: Shows the logical tag for a particular address. - mtag setltag <address> <tag>: Prints the address tagged with the logical tag <tag> - mtag showatag <address>: Shows the allocation tag for a particular address. - mtag setatag <address> <length> <tags>: Sets one or more allocation tags to the specified tags. - mtag check <address>: Check if the logical tag in <address> matches its allocation tag. These commands make use of the memory tagging gdbarch methods, and are still available, but disabled, when memory tagging is not supported by the architecture. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * printcmd.c: Include gdbsupport/rsp-low.h. (mtaglist): New static global. (process_print_command_args): Factored out of print_command_1. (print_command_1): Use process_print_command_args. (cast_non_lval_void_ptr, show_memtag_unsupported, mtag_command) (mtag_showtag_command, mtag_showltag_command, mtag_showatag_command) (parse_setltag_input, mtag_setltag_command, parse_setatag_input) (mtag_setatag_command, mtag_check_command): New functions. (_initialize_printcmd): Add "mtag" prefix and subcommands. gdbsupport/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * rsp-low.cc (fromhex): Change error message text to not be RSP-specific.
2020-06-16Documentation for memory tagging remote packetsLuis Machado1-0/+84
Document the remote packet changes to support memory tagging. gdb/doc/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * gdb.texinfo (General Query Packets): Document qMemTags and QMemTags. Document the "memory-tagging" feature.
2020-06-16Unit tests for memory tagging for gdbserver.Luis Machado1-0/+88
Add some unit testing to exercise the functions handling the qMemTags and QMemTags packets as well as feature support. gdbserver/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * server.cc (test_memory_tagging_functions): New function. (captured_main): Register test_memory_tagging_functions.
2020-06-16Add gdbserver memory tagging supportLuis Machado3-0/+42
Adds the AArch64-specific memory tagging support (MTE) by implementing the required hooks and checks. gdbserver/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * Makefile.in (SFILES): Add /../gdb/nat/aarch64-mte-linux-ptrace.c. * configure.srv (aarch64*-*-linux*): Add arch/aarch64-linux.o and nat/aarch64-mte-linux-ptrace.o. * linux-aarch64-low.cc: Include nat/aarch64-mte-linux-ptrace.h. (class aarch64_target) <supports_memory_tagging> <fetch_memtags, store_memtags>: New method overrides. (aarch64_target::supports_memory_tagging) (aarch64_target::fetch_memtags) (aarch64_target::store_memtags): New methods.
2020-06-16GDBserver memory tagging remote packet supportLuis Machado6-22/+182
This patch adds the generic remote bits to gdbserver so it can check for memory tagging support and handle fetch tags and store tags requests. gdbserver/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * remote-utils.cc (decode_m_packet_params): Renamed from ... (decode_m_packet): ... this, which now calls decode_m_packet_params. (decode_M_packet): Use decode_m_packet_params. * remote-utils.h (decode_m_packet_params): New prototype. * server.cc (create_fmemtags_reply, parse_smemtags_request): New functions. (handle_general_set): Handle the QMemTags packet. (parse_fmemtags_request): New function. (handle_query): Handle the qMemTags packet and advertise memory tagging support. (captured_main): Initialize memory tagging flag. * server.h (struct client_state): Initialize memory tagging flag. * target.cc (process_stratum_target::supports_memory_tagging) (process_stratum_target::fetch_memtags) (process_stratum_target::store_memtags): New methods. * target.h: Include gdbsupport/byte-vector.h. (class process_stratum_target) <supports_memory_tagging> <fetch_memtags, store_memtags>: New class virtual methods. (target_supports_memory_tagging): Define.
2020-06-16Unit testing for GDB-side remote memory tagging handlingLuis Machado1-0/+89
Include some unit testing for the functions handling the new qMemTags and QMemTags packets. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * remote: Include gdbsupport/selftest.h. (test_memory_tagging_functions): New function. (_initialize_remote): Register test_memory_tagging_functions.
2020-06-16Add GDB-side MTE remote target supportLuis Machado1-1/+111
This patch adds memory tagging support to GDB's remote side, with packet string checks, new packet support and an implementation of the two new tags methods fetch_atags and store_atags. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * remote.c (PACKET_memory_tagging_feature): New enum. (remote_memory_tagging_p): New function. (remote_protocol_features): New "memory-tagging" entry. (remote_target::remote_query_supported): Handle memory tagging support. (remote_target::supports_memory_tagging): Implement. (create_fmemtags_request, parse_fmemtags_reply) (create_smemtags_request): New functions. (remote_target::fetch_memtags): Implement. (remote_target::store_memtags): Implement. (_initialize_remote): Add new "memory-tagging-feature" config command.
2020-06-16Report TAG violation error informationLuis Machado2-0/+60
Whenever a memory tag violation occurs, we get a SIGSEGV. Additional information can be obtained through the siginfo data structure. For AArch64 the Linux kernel may expose the fault address and tag information, if we have a synchronous event. Otherwise there is not fault address available. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * aarch64-linux-tdep.c (aarch64_linux_handle_segmentation_fault): New function. (aarch64_linux_init_abi): Register aarch64_linux_handle_segmentation_fault as segmentation fault hook. * arch/aarch64-linux.h (SEGV_MTEAERR): Define. (SEGV_MTESERR): Define.
2020-06-16Add unit testing for logical tag set/getLuis Machado1-0/+31
Add some unit testing to exercise setting/getting logical tags in the AArch64 implementation. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * aarch64-linux-tdep.c: Include gdbsupport/selftest.h. (aarch64_linux_ltag_tests): New function. (_initialize_aarch64_linux_tdep): Register aarch64_linux_ltag_tests.
2020-06-16Add gdbarch hooks to detect and return tagged addressesLuis Machado7-0/+567
This patch adds a couple gdbarch hooks: gdbarch_tagged_address_p checks if a particular address is tagged or not. gdbarch_address_tag returns the tag for a particular address, if tagged. I've used struct value as opposed to straight CORE_ADDR so other architectures can use the infrastructure without having to rely on fixed types. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * aarch64-linux-tdep.c: Include target.h, arch-utils.h, value.h and arch/aarch64-linux.h. (make_ltag_bits, make_ltag, aarch64_linux_set_ltag) (aarch64_linux_get_ltag, aarch64_linux_get_atag) (value_valid_for_memtag, aarch64_linux_tagged_address_p) (aarch64_linux_memtag_mismatch_p, aarch64_linux_set_memtags) (aarch64_linux_get_memtag, aarch64_linux_memtag_to_string): New functions. (aarch64_linux_init_abi): Initialize MTE-related gdbarch hooks. * arch-utils.c (default_memtag_to_string, +default_tagged_address_p) (default_memtag_mismatch_p, default_set_memtags) (default_get_memtag): New functions. * arch-utils.h (default_memtag_to_string, default_tagged_address_p) (default_memtag_mismatch_p, default_set_memtags) (default_get_memtag): New prototypes. * arch/aarch64-linux.h (MTE_LOGICAL_TAG_START_BIT): Define. (MTE_LOGICAL_MAX_VALUE): Define. * gdbarch.c: Regenerate. * gdbarch.h: Regenerate. * gdbarch.sh (memtag_to_string, tagged_address_p, memtag_mismatch_p) (set_memtags, get_memtag, memtag_granule_size): New gdbarch hooks. (enum memtag_type): New enum.
2020-06-16Refactor parsing of /proc/<pid>/smapsLuis Machado2-120/+240
The Linux kernel exposes the information about MTE-protected pages via the proc filesystem, more specifically through the smaps file. What we're looking for is a mapping with the 'mt' flag, which tells us that mapping was created with a PROT_MTE flag and, thus, is capable of using memory tagging. We already parse that file for other purposes (core file generation/filtering), so this patch refactors the code to make the parsing of the smaps file reusable for memory tagging. The function linux_address_in_memtag_page uses the refactored code to allow querying for memory tag support in a particular address, and it gets used in the next patch. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * linux-tdep.c (struct smaps_vmflags) <memory_tagging>: New flag bit. (struct smaps_data): New struct. (decode_vmflags): Handle the 'mt' flag. (parse_smaps_data): New function, refactored from linux_find_memory_regions_full. (linux_address_in_memtag_page): New function. (linux_find_memory_regions_full): Refactor into parse_smaps_data. * linux-tdep.h (linux_address_in_memtag_page): New prototype.
2020-06-16Add target methods to fetch/store allocation tags and control switchLuis Machado11-1/+430
This patch starts adding some of the generic pieces to accomodate memory tagging, of which ARM MTE is an implementation of. We have three new target methods: - supports_memory_tagging: Checks if the target supports memory tagging. This default to false for target that don't support memory tagging. - fetch_memtags: Fetches the allocation tags associated with a particular memory range [address, address + length). The default is to return 1 without returning any tags. This should only be called if memory tagging is supported. - store_memtags: Stores a set of allocation tags for a particular memory range [address, address + length). The default is to return 1, which indicates an error. This should only be called if memory tagging is supported. It also adds a control option for enabling/disabling memory tagging manually: set memory-tagging on/off. The default is "on", with GDB making its use conditional to the architecture supporting memory tagging. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * Makefile.in (HFILES_NO_SRCDIR): Add nat/aarch64-mte-linux-ptrace.h. * aarch64-linux-nat.c: Include nat/aarch64-mte-linux-ptrace.h. (aarch64_linux_nat_target) <supports_memory_tagging>: New method override. <fetch_memtags>: New method override. <store_memtags>: New method override. (aarch64_linux_nat_target::supports_memory_tagging): New method. (aarch64_linux_nat_target::fetch_memtags): New method. (aarch64_linux_nat_target::store_memtags): New method. * arch/aarch64-linux.c (get_tag_granules): New function. * arch/aarch64-linux.h: Include gdbsupport/common-defs.h. (MTE_GRANULE_SIZE): Define. (get_tag_granules): New prototype. * configure.nat (NATDEPFILES): Add nat/aarch64-mte-linux-ptrace.o. * nat/aarch64-mte-linux-ptrace.c: New file. * nat/aarch64-mte-linux-ptrace.h: New file. * printcmd.c (memtag): New static global. (show_memtag): New function. (_initialize_printcmd): Add set/show memory-tagging command. * remote.c (remote_target) <supports_memory_tagging>: New method override. <fetch_memtags>: New method override. <store_memtags>: New method override. (remote_target::supports_memory_tagging): New method. (remote_target::fetch_memtags): New method. (remote_target::store_memtags): New method. * target-delegates.c (dummy_target) <supports_memory_tagging>: New method override. <fetch_memtags>: New method override. <store_memtags>: New method override. (debug_target) <supports_memory_tagging>: New method override. <fetch_memtags>: New method override. <store_memtags>: New method override. (target_ops::supports_memory_tagging): New method. (target_ops::fetch_memtags): New method. (target_ops::store_memtags): New method. (dummy_target::supports_memory_tagging): New method. (dummy_target::fetch_memtags): New method. (dummy_target::store_memtags): New method. (debug_target::supports_memory_tagging): New method. (debug_target::fetch_memtags): New method. (debug_target::store_memtags): New method. * target.h (struct target_ops) <supports_memory_tagging>: New virtual method. <fetch_memtags: New virtual method. <store_memtags>: New virtual method. (target_supports_memory_tagging): Define. (target_fetch_memtags): Define. (target_store_memtags): Define.
2020-06-16Add MTE register set support for GDB and gdbserverLuis Machado7-5/+127
AArch64 MTE support in the Linux kernel exposes a couple new read-only registers through ptrace. This patch adds the required code to support them. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * aarch64-linux-nat.c (fetch_mte_from_thread): New function. (aarch64_linux_nat_target::fetch_registers): Update to call fetch_mte_from_thread. * aarch64-linux-tdep.c (aarch64_linux_iterate_over_regset_sections): Handle MTE register section. * aarch64-tdep.c (aarch64_mte_register_names): New struct. (aarch64_cannot_store_register): Handle MTE registers. (aarch64_gdbarch_init): Initialize and setup MTE registers. * aarch64-tdep.h (gdbarch_tdep) <mte_reg_base>: New field. <has_mte>: New method. * arch/aarch64-linux.h (AARCH64_LINUX_SIZEOF_MTE): Define. * nat/aarch64-linux.h (NT_ARM_MTE): Define. gdbserver/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * linux-aarch64-low.cc (aarch64_store_mteregset): New function. (aarch64_regsets): Add MTE register set entry. (aarch64_sve_regsets): Add MTE register set entry.
2020-06-16Add target description/feature for MTE registersLuis Machado13-24/+73
This patch adds a target description and feature "mte" for aarch64. It includes a couple registers: sctlr and gcr. Both 64-bit in size. The patch also adjusts the code that creates the target descriptions at runtime based on CPU feature checks. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * aarch64-linux-nat.c (aarch64_linux_nat_target::read_description): Take MTE flag into account. * aarch64-linux-tdep.c (aarch64_linux_core_read_description): Likewise. * aarch64-tdep.c (tdesc_aarch64_list): Add one more dimension for MTE. (aarch64_read_description): Add mte_p parameter and update to use it. Update the documentation. (aarch64_gdbarch_init): Update call to aarch64_read_description. * aarch64-tdep.h (aarch64_read_description): Add mte_p parameter. * arch/aarch64.c: Include ../features/aarch64-mte.c. (aarch64_create_target_description): Add mte_p parameter and update the code to use it. * arch/aarch64.h (aarch64_create_target_description): Add mte_p parameter. * features/Makefile (FEATURE_XMLFILES): Add aarch64-mte.xml. * features/aarch64-mte.c: New file, generated. * features/aarch64-mte.xml: New file. gdbserver/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * linux-aarch64-ipa.cc (get_ipa_tdesc): Update call to aarch64_linux_read_description. (initialize_low_tracepoint): Likewise. * linux-aarch64-low.cc (aarch64_target::low_arch_setup): Take MTE flag into account. * linux-aarch64-tdesc.cc (tdesc_aarch64_list): Add one more dimension for MTE. (aarch64_linux_read_description): Add mte_p parameter and update to use it. * linux-aarch64-tdesc.h (aarch64_linux_read_description): Add mte_p parameter.
2020-06-16Add MTE CPU feature check supportLuis Machado7-3/+58
This patch is a preparation for the next patches implementing MTE. It just adds a HWCAP2 constant for MTE and creates a couple new generic aarch64-linux files in the arch subdirectory. Those will be used later. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * Makefile.in (ALL_64_TARGET_OBS): Add arch/aarch64-linux.o. (HFILES_NO_SRCDIR): Add arch/aarch64-linux.h. * aarch64-linux-nat.c: Include arch/aarch64-linux.h. * aarch64-linux-tdep.c: Likewise * arch/aarch64-linux.c: New file. * arch/aarch64-linux.h: New file. * configure.tgt (aarch64*-*-linux*): Add arch/aarch64-linux.o. gdbserver/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * linux-aarch64-low.cc: Include arch/aarch64-linux.h.
2020-06-16Add new MTE PTRACE requestsLuis Machado1-0/+10
Add a couple new MTE-related PTRACE requests. PTRACE_PEEKMTETAGS fetches allocation tag information and PTRACE_POKEMTETAGS stores allocation tag information. gdb/ChangeLog: YYYY-MM-DD Luis Machado <luis.machado@linaro.org> * nat/aarch64-linux.h (PTRACE_PEEKMTETAG): Define conditionally. (PTRACE_POKEMTETAG): Likewise.
2020-06-16Use __asm__ rather than asm in ld testsuiteAlan Modra29-72/+107
* testsuite/ld-elf/pr23428.c: Define _DEFAULT_SOURCE. * testsuite/ld-elf/indirect1b.c: Replace asm with __asm__. * testsuite/ld-elf/indirect2.c: Likewise. * testsuite/ld-elf/indirect3b.c: Likewise. * testsuite/ld-elf/indirect4b.c: Likewise. * testsuite/ld-elf/pr14323-2.c: Likewise. * testsuite/ld-elf/pr18720b.c: Likewise. * testsuite/ld-elf/pr23428.c: Likewise. * testsuite/ld-elfvsb/common.c: Likewise. * testsuite/ld-elfvsb/main.c: Likewise. * testsuite/ld-elfvsb/sh1.c: Likewise. * testsuite/ld-elfvsb/test.c: Likewise. * testsuite/ld-pe/aligncomm-1.c: Likewise. * testsuite/ld-pe/aligncomm-2.c: Likewise. * testsuite/ld-pe/aligncomm-3.c: Likewise. * testsuite/ld-pe/aligncomm-4.c: Likewise. * testsuite/ld-plugin/pr23958.c: Likewise. * testsuite/ld-size/size-1b.c: Likewise. * testsuite/ld-size/size-2b.c: Likewise. * testsuite/ld-size/size-3a.c: Likewise. * testsuite/ld-size/size-3b.c: Likewise. * testsuite/ld-size/size-3c.c: Likewise. * testsuite/ld-size/size-4b.c: Likewise. * testsuite/ld-size/size-5b.c: Likewise. * testsuite/ld-size/size-6a.c: Likewise. * testsuite/ld-size/size-7a.c: Likewise. * testsuite/ld-size/size-8a.c: Likewise. * testsuite/ld-size/size-9b.c: Likewise. * testsuite/ld-size/size-10b.c: Likewise.
2020-06-16Use __asm__ rather than asm in gold testsuiteAlan Modra3-6/+10
discard_locals_test.c:28:6: error: expected declaration specifiers or ‘...’ before string constant asm (".Lshould_be_discarded:"); ^ * testsuite/discard_locals_test.c: Replace uses of asm with __asm__. * testsuite/discard_locals_relocatable_test.c: Likewise.
2020-06-16Add two missing return values in gdb.python/py-nested-maps.cusers/luisgpm/testGary Benson2-0/+8
Two functions in gdb.python/py-nested-maps.c are missing return values. This causes clang to fail to compile the file with the following error: warning: control reaches end of non-void function [-Wreturn-type] This commit fixes, by causing the two functions to return pointers to the objects they've just allocated and initialized. I didn't investigate how this test had been passing with other compilers; I'm assuming serendipity, that in each function the value to be returned was already in the register it would need to be in to be the function's return value. gdb/testsuite/ChangeLog: * gdb.python/py-nested-maps.c (create_map): Add missing return value. (create_map_map): Likewise.
2020-06-16Use CXXCOMPILE in gold/testsuite/Makefile for c++ testcasesAlan Modra3-6/+13
I was playing with passing -std=c99 to an older version of gcc by using CC="gcc-4 -std=c99", and ran into cc1plus: error: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ [-Werror] This obvious fix uses the correct compiler for a number of gold testcases. * testsuite/Makefile.am (export_dynamic_plugin.o): Use CXXCOMPILE. (plugin_test_wrap_symbols_1.o): Likewise. (plugin_test_wrap_symbols_2.o): Likewise. * testsuite/Makefile.in: Regenerate.
2020-06-16x86: drop SSE4a from SSE check againJan Beulich6-11/+15
Upon re-consideration in commit 569d50f1c611 ("x86: further refine SSE check (SSE4a, SHA, GFNI)") I went too far: Mixing of SSE and AVX insns doesn't suffer as bad a penalty on AMD CPUs as on Intel ones. SSE4a being an AMD-only extension, it shouldn't be part of the ISA extensions set for which the diagnostic may get issued. Undo that part.
2020-06-16Really remove tic30-aout supportAlan Modra21-1259/+37
bfd/ * aout-tic30.c: Delete file. * Makefile.am (BFD32_BACKENDS): Remove aout-tic30.lo. (BFD32_BACKENDS_CFILES): Remove aout-tic30.c. * config.bfd (c30-*-*aout*, tic30-*-*aout*): Remove entry. (xc16x-*-elf): Sort properly. * configure.ac: Remove tic30_aout_vec. * targets.c: Likewise. * Makefile.in: Regenerate. * configure: Regenerate. * po/SRC-POTFILES.in: Regenerate. gas/ * config/tc-tic30.h: Remove OBJ_AOUT support. * configure.tgt: Delete tic30-*-*aout* entry. ld/ * emulparams/tic30aout.sh: Delete file. * scripttempl/tic30aout.sc: Delete file. * Makefile.am: Remove etic30aout.c from ALL_EMULATION_SOURCES and delete dependency. * configure.tgt: Delete tic30-*-*aout* entry. * testsuite/ld-scripts/sane1.d: Delete tic30-*-aout mention. * testsuite/ld-scripts/segment-start.d: Likewise. * Makefile.in: Regenerate. * po/BLD-POTFILES.in: Regenerate.
2020-06-16Automatic date update in version.inGDB Administrator1-1/+1
2020-06-15xtensa: allow runtime ABI selectionMax Filippov14-12/+184
2020-06-15 Max Filippov <jcmvbkbc@gmail.com> bfd/ * elf32-xtensa.c (XSHAL_ABI, XTHAL_ABI_UNDEFINED) (XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New macros. (elf32xtensa_abi): New global variable. (xtensa_abi_choice): New function. (elf_xtensa_create_plt_entry): Use xtensa_abi_choice instead of XSHAL_ABI to select PLT code. gas/ * config/tc-xtensa.c (XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New macros. (elf32xtensa_abi): New declaration. (option_abi_windowed, option_abi_call0): New enum constants. (md_longopts): Add entries for --abi-windowed and --abi-call0. (md_parse_option): Add handlers for --abi-windowed and --abi-call0. (xtensa_add_config_info): Use xtensa_abi_choice instead of XSHAL_ABI to format ABI tag. * doc/as.texi (Target Xtensa options): Add --abi-windowed and --abi-call0 to the list of options. * doc/c-xtensa.texi: Add description for options --abi-windowed and --abi-call0. * testsuite/gas/xtensa/abi-call0.d: New test definition. * testsuite/gas/xtensa/abi-windowed.d: New test definition. * testsuite/gas/xtensa/abi.s: New test source. include/ * elf/xtensa.h (xtensa_abi_choice): New declaration. ld/ * emultempl/xtensaelf.em (XSHAL_ABI): Remove macro definition. (XTHAL_ABI_UNDEFINED, XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New macros. (elf32xtensa_abi): New declaration. (xt_config_info_unpack_and_check): Set elf32xtensa_abi if it is undefined. Use xtensa_abi_choice instead of XSHAL_ABI to test ABI tag consistency. (xtensa_add_config_info): Use xtensa_abi_choice instead of XSHAL_ABI to format ABI tag. (PARSE_AND_LIST_PROLOGUE): Define OPTION_ABI_WINDOWED, OPTION_ABI_CALL0 and declare elf32xtensa_abi. (PARSE_AND_LIST_LONGOPTS): Add entries for --abi-windowed and --abi-call0. (PARSE_AND_LIST_OPTIONS): Add help text for --abi-windowed and --abi-call0. (PARSE_AND_LIST_ARGS_CASES): Add handlers for --abi-windowed and --abi-call0. * ld.texi: Add description for options --abi-windowed and --abi-call0.
2020-06-15gold, ld: Implement -z start-stop-visibility=... option.Roland McGrath13-7/+103
gold/ Implement -z start-stop-visibility=... option. * options.h (class General_options): Handle -z start-stop-visibility=. (General_options::start_stop_visibility_enum): New public method. (General_options::set_start_stop_visibility_enum): New private method. (General_options::start_stop_visibility_enum_): New private member. * options.cc (General_options::General_options): Add initializer. (General_options::finalize): Set this->start_stop_visibility_enum_ from string value. * layout.cc (Layout::define_section_symbols): Use option setting. bfd/ * elflink.c (bfd_elf_define_start_stop): Use start_stop_visibility field of bfd_link_info. include/ * bfdlink.h (struct bfd_link_info): New field start_stop_visibility. ld/ * NEWS: Mention -z start-stop-visibility=... option for ELF. * ld.texi (Options): Document -z start-stop-visibility=... option. * ldmain.c (main): Initialize link_info.start_stop_visibility. * emultempl/elf.em (gld${EMULATION_NAME}_handle_option): Parse -z start-stop-visibility=... option.
2020-06-15Change target_read_string APITom Tromey11-91/+76
This simplifies the target_read_string API a bit. Note that some code was using safe_strerror on the error codes returned by target_read_string. It seems to me that this is incorrect (if it was ever correct, it must have been quite a long time ago). gdb/ChangeLog 2020-06-15 Tom Tromey <tromey@adacore.com> * windows-nat.c (windows_nat::handle_output_debug_string): Update. (windows_nat::handle_ms_vc_exception): Update. * target.h (target_read_string): Change API. * target.c (target_read_string): Change API. * solib-svr4.c (open_symbol_file_object, svr4_read_so_list): Update. * solib-frv.c (frv_current_sos): Update. * solib-dsbt.c (dsbt_current_sos): Update. * solib-darwin.c (darwin_current_sos): Update. * linux-thread-db.c (inferior_has_bug): Update. * expprint.c (print_subexp_standard): Update. * ada-lang.c (ada_main_name, ada_tag_name_from_tsd) (ada_exception_message_1): Update.
2020-06-15Remove a use of target_read_stringTom Tromey2-9/+7
linux-tdep.c:dump_mapping_p uses target_read_string, but in a way that does not really make sense. It's better to use target_read_memory here. gdb/ChangeLog 2020-06-15 Tom Tromey <tromey@adacore.com> * linux-tdep.c (dump_mapping_p): Use target_read_memory.
2020-06-15Rewrite target_read_stringTom Tromey3-69/+17
This rewrites target_read_string in terms of read_string. gdb/ChangeLog 2020-06-15 Tom Tromey <tromey@adacore.com> * valprint.c (read_string): Update comment. * target.c (MIN): Remove. (target_read_string): Rewrite.
2020-06-15Remove read_memory_stringTom Tromey6-54/+39
read_memory_string is redundant and only called in a couple of spots. This patch removes it in favor of target_read_string. gdb/ChangeLog 2020-06-15 Tom Tromey <tromey@adacore.com> * corefile.c (read_memory_string): Remove. * ada-valprint.c (ada_value_print_ptr): Update. * ada-lang.h (ada_tag_name): Change return type. * ada-lang.c (type_from_tag): Update. (ada_tag_name_from_tsd): Change return type. Use target_read_string. (ada_tag_name): Likewise. * gdbcore.h (read_memory_string): Don't declare.
2020-06-15gdb/testsuite: fix minor things in jit testsTankut Baris Aktemur3-3/+10
gdb/testsuite/ChangeLog: 2020-06-15 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> * gdb.base/jit-elf-so.exp: Refer to the global main_loader_basename variable. * gdb.base/jit-reader-simple.exp: Fix typo ("Built" -> "Build"), and use the already-defined 'options' variable.
2020-06-15Obsolete PowerPC PE, winnt and cygwin targetsAlan Modra2-0/+5
The PowerPC PE support is so old and bitrotted that it ought to be removed. Test results for a cross from x86_64 with no C cross compiler currently shows 109 fails. I don't think anyone cares about the target. This FIXME in bfd/peXXigen.c has been around since 1999, git commit 277d1b5e453: /* FIXME: This file has various tests of POWERPC_LE_PE. Those tests worked when the code was in peicode.h, but no longer work now that the code is in peigen.c. PowerPC NT is said to be dead. If anybody wants to revive the code, you will have to figure out how to handle those issues. */ and this one in gas/config/tc-ppc.c since 1995, git commit cd557d83d61: * FIXME: I just noticed this. This doesn't work at all really. It it * setting bits that bfd probably neither understands or uses. The * correct approach (?) will have to incorporate extra fields attached * to the section to hold the system specific stuff. (krk) * config.bfd: Obsolete powerpcle-*-pe targets.
2020-06-15Unnecessary load_lib in ld testsuiteAlan Modra7-18/+10
ld-lib.exp is loaded in config/defaults.exp * testsuite/ld-scripts/include.exp: Don't load ld-lib.exp. * testsuite/ld-scripts/phdrs3.exp: Likewise. * testsuite/ld-scripts/rgn-at.exp: Likewise. * testsuite/ld-scripts/rgn-over.exp: Likewise. * testsuite/ld-scripts/sort.exp: Likewise. * testsuite/ld-discard/discard.exp: Likewise. Use is_elf_format.
2020-06-15PR26103 testcaseAlan Modra7-9/+61
PR 26103 * testsuite/ld-linkonce/ref1.s, * testsuite/ld-linkonce/ref2.s, * testsuite/ld-linkonce/sym1.s, * testsuite/ld-linkonce/sym2.s, * testsuite/ld-linkonce/sym3.s: New test files. * testsuite/ld-linkonce/linkonce.exp: Run tests for PE too. Add pr26103 test. Remove unnecessary load_lib.
2020-06-15PR26103, Assertion failure with symbols defined in link-once sectionsAlan Modra5-7/+45
PR 26103 * elflink.c (elf_link_add_archive_symbols): Exclude undefined symbols that were defined in discarded sections. * cofflink.c (coff_link_check_archive_element): Likewise. (coff_link_add_symbols): Set indx to -3 for symbols defined in discarded sections. (_bfd_coff_write_global_sym): Don't emit such symbols. libcoff-in.h (struct coff_link_hash_entry): Update indx comment. libcoff.h: Regenerate.
2020-06-15ld-linkonce testAlan Modra4-10/+18
* testsuite/ld-linkonce/zeroeh_x.s: Rename from x.s. * testsuite/ld-linkonce/zeroeh_y.s: Rename from y.s. * testsuite/ld-linkonce/zeroehl32.d: Adjust for renaming. Support big-endian output. Run for powerpc.
2020-06-15Automatic date update in version.inGDB Administrator1-1/+1
2020-06-14Handle Windows drives in rbreak pathsHannes Domani2-0/+9
Fixes this testsuite fail on Windows: FAIL: gdb.base/fullpath-expand.exp: rbreak XXX/fullpath-expand-func.c:func If the found colon is actually part of a Windows drive, look for another. gdb/ChangeLog: 2020-06-14 Hannes Domani <ssbssa@yahoo.de> * symtab.c (rbreak_command): Ignore Windows drive colon.
2020-06-14x86: Correct xsusldtrk mnemonicH.J. Lu8-6/+22
The correct mnemonic is xsusldtrk, not xsuspldtrk. gas/ PR gas/26115 * testsuite/gas/i386/tsxldtrk.d: Replace xsuspldtrk with xsusldtrk. * testsuite/gas/i386/tsxldtrk.s: Likewise. * testsuite/gas/i386/x86-64-tsxldtrk.d: Likewise. * testsuite/gas/i386/x86-64-tsxldtrk.s: Likewise. opcodes/ PR gas/26115 * i386-dis.c (prefix_table): Replace xsuspldtrk with xsusldtrk. * i386-opc.tbl: Likewise. * i386-tbl.h: Regenerated.
2020-06-14Automatic date update in version.inGDB Administrator1-1/+1
2020-06-13Automatic date update in version.inGDB Administrator1-1/+1
2020-06-12gdb: mention removed GDBserver host support in NEWSSimon Marchi2-0/+17
gdb/ChangeLog: * NEWS: Mention removed GDBserver host support. Change-Id: Ib9e212e525d12ac7f3f9b5c056adc5bf9c4d52cd
2020-06-12gdbserver: remove support for ARM/WinCESimon Marchi9-338/+37
This port has been unmaintained for years, remove it. gdbserver/ChangeLog: * Makefile.in (SFILES): Remove win32-arm-low.cc, wincecompat.cc. * configure.srv: Remove mingw32ce cases. * server.h, win32-low.cc: Remove __MINGW32CE__-guarded code. * win32-low.h (to_back_slashes): Remove. * win32-arm-low.cc, wincecompat.cc, wincecompat.h: Remove. Change-Id: Ib75c0b55b0ab7caca38bbeff5f2fa9397a8e7e8d
2020-06-12gdbserver: remove support for TileSimon Marchi4-234/+6
This port has been unmaintained for years and the upstream Linux kernel does not support this architecture anymore, remove it. gdbserver/ChangeLog: * Makefile.in (SFILES): linux-tile-low.cc. * configure.srv: Remove tilegx case. * linux-tile-low.cc: Remove. Change-Id: I1c2910d04ddbd6013e5d228047106b41d80f9477
2020-06-12gdbserver: remove support for M32RSimon Marchi4-169/+6
This port has been unmaintained for years and the upstream Linux kernel does not support this architecture anymore, remove it. gdbserver/ChangeLog: * Makefile.in (SFILES): Remove linux-m32r-low.cc. * configure.srv: Remove m32r case. * linux-m32r-low.cc: Remove. Change-Id: I5617b2b1fd92aeec19b38e0e3c0b78adaafdb35b
2020-06-12gdbserver: remove support for CRISSimon Marchi5-653/+6
This port has been unmaintained for years and the upstream Linux kernel does not support this architecture anymore, remove it. gdbserver/ChangeLog: * Makefile.in (SFILES): Remove linux-cris-low.c. * configure.srv: Remove cris cases. * linux-cris-low.cc, linux-crisv32-low.cc: Remove. Change-Id: Ib3ff436b03373548215f15540a47f39cbec5f512