aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-01-02Add support for the GBZ80, Z180, and eZ80 variants of the Z80 architecure. ↵Sergey Belyashov132-11328/+24328
Add an ELF based target for these as well. PR 25224 bfd * Makefile.am: Add z80-elf target support. * configure.ac: Likewise. * targets.c: Likewise. * config.bfd: Add z80-elf target support and new arches: ez80 and z180. * elf32-z80.c: New file. * archures.c: Add new z80 architectures: eZ80 and Z180. * coffcode.h: Likewise. * cpu-z80.c: Likewise. * bfd-in2.h: Likewise plus additional Z80 relocations. * coff-z80.c: Add new relocations for Z80 target and local label check. gas * config/tc-z80.c: Add new architectures: Z180 and eZ80. Add support for assembler code generated by SDCC. Add new relocation types. Add z80-elf target support. * config/tc-z80.h: Add z80-elf target support. Enable dollar local labels. Local labels starts from ".L". * testsuite/gas/all/fwdexp.d: Fix failure due to symbol conflict. * testsuite/gas/all/fwdexp.s: Likewise. * testsuite/gas/z80/suffix.d: Fix failure on ELF target. * testsuite/gas/z80/z80.exp: Add new tests * testsuite/gas/z80/dollar.d: New file. * testsuite/gas/z80/dollar.s: New file. * testsuite/gas/z80/ez80_adl_all.d: New file. * testsuite/gas/z80/ez80_adl_all.s: New file. * testsuite/gas/z80/ez80_adl_suf.d: New file. * testsuite/gas/z80/ez80_isuf.s: New file. * testsuite/gas/z80/ez80_z80_all.d: New file. * testsuite/gas/z80/ez80_z80_all.s: New file. * testsuite/gas/z80/ez80_z80_suf.d: New file. * testsuite/gas/z80/r800_extra.d: New file. * testsuite/gas/z80/r800_extra.s: New file. * testsuite/gas/z80/r800_ii8.d: New file. * testsuite/gas/z80/r800_z80_doc.d: New file. * testsuite/gas/z80/z180.d: New file. * testsuite/gas/z80/z180.s: New file. * testsuite/gas/z80/z180_z80_doc.d: New file. * testsuite/gas/z80/z80_doc.d: New file. * testsuite/gas/z80/z80_doc.s: New file. * testsuite/gas/z80/z80_ii8.d: New file. * testsuite/gas/z80/z80_ii8.s: New file. * testsuite/gas/z80/z80_in_f_c.d: New file. * testsuite/gas/z80/z80_in_f_c.s: New file. * testsuite/gas/z80/z80_op_ii_ld.d: New file. * testsuite/gas/z80/z80_op_ii_ld.s: New file. * testsuite/gas/z80/z80_out_c_0.d: New file. * testsuite/gas/z80/z80_out_c_0.s: New file. * testsuite/gas/z80/z80_reloc.d: New file. * testsuite/gas/z80/z80_reloc.s: New file. * testsuite/gas/z80/z80_sli.d: New file. * testsuite/gas/z80/z80_sli.s: New file. ld * Makefile.am: Add new target z80-elf * configure.tgt: Likewise. * emultempl/z80.em: Add support for eZ80 and Z180 architectures. * emulparams/elf32z80.sh: New file. * emultempl/z80elf.em: Likewise. * testsuite/ld-z80/arch_ez80_adl.d: Likewise. * testsuite/ld-z80/arch_ez80_z80.d: Likewise. * testsuite/ld-z80/arch_r800.d: Likewise. * testsuite/ld-z80/arch_z180.d: Likewise. * testsuite/ld-z80/arch_z80.d: Likewise. * testsuite/ld-z80/comb_arch_ez80_z80.d: Likewise. * testsuite/ld-z80/comb_arch_z180.d: Likewise. * testsuite/ld-z80/labels.s: Likewise. * testsuite/ld-z80/relocs.s: Likewise. * testsuite/ld-z80/relocs_b_ez80.d: Likewise. * testsuite/ld-z80/relocs_b_z80.d: Likewise. * testsuite/ld-z80/relocs_f_z80.d: Likewise. * testsuite/ld-z80/z80.exp: Likewise. opcodes * z80-dis.c: Add support for eZ80 and Z80 instructions.
2020-01-02AArch64: Set the correct ELF class for AArch64 stubs (PR/25210)Tamar Christina6-1/+75
This fixes PR 25210 by specifying the the correct ELF class for AArch64 stubs. After doing this the stub section starts behaving like a normal object file loaded from disk. That is SEC_LINKER_CREATED causes us to have to write the section manually. This flag was added as a fix for PR 24753. I believe that fix to still be correct as linker created sections don't have a size on disk and it fixes the Arm bootstrap regression. But in this case specifying the correct section class also makes the stub section not be considered by compress.c. So I'm partially revert this change so that we don't have to manage the section manually as implied by SEC_LINKER_CREATED. bfd/ChangeLog: PR 25210 PR 24753 * elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Set ELF class. ld/ChangeLog: PR 25210 PR 24753 * emultempl/aarch64elf.em (elf${ELFSIZE}_aarch64_add_stub_section): Remove SEC_LINKER_CREATED. * testsuite/ld-aarch64/aarch64-elf.exp: Add erratum835769-843419. * testsuite/ld-aarch64/erratum835769-843419.d: New test.
2020-01-02[ARM][gas] fix build breakage with gcc-10 by using correct enum typeSzabolcs Nagy2-1/+6
Fixes ../../gas/config/tc-arm.c: In function 'parse_reg_list': ../../gas/config/tc-arm.c:1946:35: error: implicit conversion from 'enum reg_list_els' to 'enum arm_reg_type' [-Werror=enum-conversion] 1946 | reg = arm_reg_parse (&str, REGLIST_RN); | ^~~~~~~~~~ gas/ChangeLog: * config/tc-arm.c (parse_reg_list): Use REG_TYPE_RN instead of REGLIST_RN.
2020-01-02Enable building the s12z target on Solaris hosts where REG_Y is defined in ↵Nick Clifton2-10/+18
system header files. * opcode/s12z.h: Undef REG_Y.
2020-01-02Automatic date update in version.inGDB Administrator1-1/+1
2020-01-01Fix install-strip for cross-compilationHannes Domani4-4/+12
The variable INSTALL_PROGRAM_ENV sets up STRIPPROG for the cross-compiler. If this is not done, the host 'strip' is used, and fails: /bin/sh /c/src/repos/binutils-gdb.git/install-sh -c -s gdb.exe \ /gdb/gdb64-git/bin/$transformed_name.exe strip.exe:C:/gdb/gdb64-git/bin/_inst.33599_: file format not recognized With this change, it's fine: STRIPPROG='x86_64-w64-mingw32-strip' \ /bin/sh /c/src/repos/binutils-gdb.git/install-sh -c -s gdb.exe \ /gdb/gdb64-git/bin/$transformed_name.exe gdb/ChangeLog: 2020-01-01 Hannes Domani <ssbssa@yahoo.de> * Makefile.in: Use INSTALL_PROGRAM_ENV. gdb/gdbserver/ChangeLog: 2020-01-01 Hannes Domani <ssbssa@yahoo.de> * Makefile.in: Use INSTALL_PROGRAM_ENV.
2020-01-01Add myself to gdb/MAINTAINERSHannes Domani2-0/+5
gdb/ChangeLog: 2020-01-01 Hannes Domani <ssbssa@yahoo.de> * MAINTAINERS (Write After Approval): Add myself.
2020-01-01Re: Update year range in copyright notice of binutils filesAlan Modra10-0/+40
Add the ChangeLog entry.
2020-01-01Update year range in copyright notice of binutils filesAlan Modra2586-2668/+2668
2020-01-01ChangeLog rotationAlan Modra18-16070/+16196
2020-01-01Update copyright year in gdbarch.sh doc/gdb.texinfo and doc/refcard.texJoel Brobecker5-5/+13
These are files that need to be updated by hand, because the copyright.py script isn't able to handle them automatically. gdb/ChangeLog: * gdbarch.sh: Update copyright year range of generated files. gdb/doc/ChangeLog: * gdb.texinfo, refcard.tex: Update copyright year range.
2020-01-01Update copyright year range in all GDB files.Joel Brobecker5957-5956/+5960
gdb/ChangeLog: Update copyright year range in all GDB files.
2020-01-01gdb/copyright.py: Convert to Python 3Joel Brobecker2-16/+24
gdb/ChangeLog: * copyright.py: Convert to Python 3.
2020-01-01gdb/copyright.py: Adapt after move of gnulib from gdb to toplevelJoel Brobecker2-7/+13
gdb/ChangeLog: * copyright.py: Adapt after move of gnulib directory from gdb directory to toplevel directory.
2020-01-01gdb/copyright.py: Exit if run from the wrong directoryJoel Brobecker2-0/+7
We printed an error, but kept going anyway... ;-) gdb/ChangeLog: * copyright.py (main): Exit if run from the wrong directory.
2020-01-01update copyright year in version output of gdb, gdbserver and gdbreplayJoel Brobecker5-3/+12
gdb/ChangeLog: * top.c (print_gdb_version): Change copyright year to 2020. gdb/gdbserver/ChangeLog: * server.c (gdbserver_version): Change copyright year to 2020. * gdbreplay.c (gdbreplay_version): Likewise.
2020-01-01Rotate gdb/ChangeLog (start of New Year procedure)Joel Brobecker3-17386/+17400
gdb/ChangeLog: * config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2019
2020-01-01Automatic date update in version.inGDB Administrator1-1/+1
2019-12-31asan: alpha-vms: Heap-buffer-overflowAlan Modra2-51/+53
This fixes yet more errors in the alpha-vms buffer size checks. * vms-alpha.c (_bfd_vms_slurp_eisd): Don't overflow when checking offset. Don't overflow when checking rec_size, and do allow rec_size to the end of the buffer. Ensure eisd->type can be accessed, not just the first 32 bytes. Don't call _bfd_vms_save_counted_string with zero length remaining. Fail on empty string section name. (_bfd_vms_slurp_egsd): Formatting. Catch more reads past end of record size. Correct remaining length calculation. Fail on empty string section name. Consolidate error paths.
2019-12-31Automatic date update in version.inGDB Administrator1-1/+1
2019-12-30Make some TUI globals "static"Tom Tromey2-10/+20
This changes a few TUI globals to be "static". Tested by rebuilding. gdb/ChangeLog 2019-12-30 Tom Tromey <tom@tromey.com> * tui/tui-win.c (tui_border_mode_translate) (tui_border_kind_translate_vline, tui_border_kind_translate_hline) (tui_border_kind_translate_ulcorner) (tui_border_kind_translate_urcorner) (tui_border_kind_translate_llcorner) (tui_border_kind_translate_lrcorner, tui_active_border_mode) (tui_border_mode, tui_border_kind): Now static. Change-Id: Ibb49a0df195dfe780a5ba1f90e9125ab5f6b7ce1
2019-12-30Use "bool" in more spots in TUITom Tromey7-23/+33
This changes a few spots in the TUI to use "bool" rather than "int". Tested on x86-64 Fedora 28. gdb/ChangeLog 2019-12-30 Tom Tromey <tom@tromey.com> * tui/tui-interp.c (tui_start_enabled): Now bool. (_initialize_tui_interp): Update. * tui/tui-hooks.c (tui_refreshing_registers): Now bool. (tui_register_changed) (tui_refresh_frame_and_register_information): Update. * tui/tui-win.c (tui_update_variables): Return bool. * tui/tui-win.h (tui_update_variables): Return bool. * tui/tui.c (tui_get_command_dimension): Return bool. * tui/tui.h (tui_get_command_dimension): Return bool. Change-Id: I55b7f2d62d2ef88da3587dc914ada9f463ad8d2b
2019-12-30vms-alpha.c object_p memory leaksAlan Modra2-12/+28
* vms-alpha.c (alpha_vms_free_private): New function, extracted.. (vms_close_and_cleanup): ..from here. (alpha_vms_object_p): Call alpha_vms_free_private on failure.
2019-12-30coff object_p memory leaksAlan Modra2-0/+7
* coffgen.c (coff_real_object_p): Free malloc'd memory on failure.
2019-12-30archive.c bfd_zallocAlan Modra2-25/+32
Quite a few bfd_zalloc calls are wasting time clearing memory, and should be bfd_alloc instead. * archive.c (do_slurp_bsd_armap): Use bfd_alloc rather than bfd_zalloc when memory is all written after the call. (do_slurp_coff_armap): Likewise. Set bfd_error on ridiculously large allocations that overflow bfd_size_type. Use just one bfd_release on error exit. (_bfd_slurp_extended_name_table): Use bfd_alloc for extended_names, clear last byte rather than the entire array. Use bfd_alloc for string table. Rearrange and simplify code copying file names.
2019-12-30Automatic date update in version.inGDB Administrator1-1/+1
2019-12-30Re: Revise sleb128 and uleb128 readerAlan Modra2-21/+28
A missing part of git commit cd30bcef4a685. * od-macho.c: Include elfcomm.h. (dump_dyld_info_rebase, dump_dyld_info_bind): Fix read_leb128 args. (dump_dyld_info_export_1, dump_segment_split_info): Likewise.
2019-12-30Re: Usage of unitialized heap in tic4x_print_condAlan Modra2-1/+6
PR 25319 * tic4x-dis.c (tic4x_print_cond): Correct order of xcalloc args.
2019-12-29Fix setting breakpoints or stepping on line 65535Bernd Edlinger5-6/+57
This removes code that was present from the very first git revisison 7b4ac7e1ed2c4616bce56d1760807798be87ac9e from 1988. It was in the gdb/dbxread.c at the time (and makes more sense for dbx line info format since line numbers are 16-bit entities in that debug format and debugging files with more than 65535 lines would not work anyway) but moved from there to gdb/buildsym.c which is used for dwarf line info as well, and excluding an arbitrary line number does certainly not make sense nowadays. Add a test case for line 65535 gdb: 2019-12-29 Bernd Edlinger <bernd.edlinger@hotmail.de> * buildsym.c (buildsym_compunit::record_line): Do no longer ignore line 65535. gdb/testsuite: 2019-12-29 Bernd Edlinger <bernd.edlinger@hotmail.de> * gdb.base/line65535.exp: New file. * gdb.base/line65535.c: New file.
2019-12-29ubsan: sparc: left shift cannot be represented in type 'int'Alan Modra2-9/+12
* sparc-dis.c (SEX): Don't use left and right shift to sign extend. (compare_opcodes): Avoid signed shift left overflow. (print_insn_sparc): Likewise.
2019-12-29Usage of unitialized heap in tic4x_print_condAlan Modra2-1/+6
PR 25319 * tic4x-dis.c (tic4x_print_cond): Init all of condtable.
2019-12-29ubsan: alpha-vms: shift exponent is too largeAlan Modra2-9/+14
* vms-alpha.c (_bfd_vms_slurp_egsd): Make base_addr a bfd_vma. Limit alignment power. Correct and simplify alignment expression. (evax_bfd_print_relocation_records): Avoid signed shift left.
2019-12-29asan: alpha-vms: memory leaksAlan Modra4-50/+99
* vms-misc.c (_bfd_vms_save_sized_string): Add abfd param, make size a size_t. Use bfd_alloc rather than bfd_malloc. (_bfd_vms_save_counted_string): Similarly. * vms.h (_bfd_vms_save_sized_string): Update prototype. (_bfd_vms_save_counted_string): Likewise. * vms-alpha.c (_bfd_vms_slurp_ehdr): Adjust _bfd_vms_save_counted_string and bfd_vms_save_sized_string calls. (_bfd_vms_slurp_egsd, parse_module): Likewise. (_bfd_vms_slurp_eisd): Likewise. Check return status. (alpha_vms_bfd_link_hash_table_free): New function. (alpha_vms_bfd_link_hash_table_create): Arrange to call it. (vms_close_and_cleanup): Free more memory. Don't release tdata.
2019-12-29coff_close_and_cleanupAlan Modra5-1/+27
Fixes leaks in _bfd_coff_get_external_symbols and _bfd_coff_read_string_table. * coffcode.h (coff_close_and_cleanup): Redefine to.. * coffgen.c (_bfd_coff_close_and_cleanup): ..this. New function. * libcoff-in.h (_bfd_coff_close_and_cleanup): Declare. * libcoff.h: Regenerate.
2019-12-29PR15350, Fix compressed debug sections for PE targetsAlan Modra2-43/+48
PR 15350 * bfd.c (bfd_update_compression_header): Write zlib header for formats other than ELF too.
2019-12-29Automatic date update in version.inGDB Administrator1-1/+1
2019-12-27[PATCH] Adjust test gdb.ada/ptype_tagged_param.exp for when GNAT runtime ↵Simon Marchi4-4/+71
does not have debug info This test verifies that GDB correctly identifies the run-time type of "s" as being the type "Circle". However, that can only be done correctly if the GNAT runtime has been compiled and shipped with debug information, so that GDB can poke in its internal data structures. Currently the test fails when when running against a GNAT runtime without debug info. This is the case, for example, on Arch Linux using the distribution package. This patch adds a helper in lib/ada.exp to check whether the GNAT runtime has debug info or not. It then uses it in gdb.ada/ptype_tagged_param.exp to expect a different result, depending on whether we have debug info or not in the runtime. At first, I made it so we would XFAIL the test, in the absence of debug info, but then I thought that we might as well test for the output we expect in the absence of debug info instead. gdb/testsuite/ChangeLog: * lib/ada.exp (gnat_runtime_has_debug_info): New proc. * lib/gnat_debug_info_test.adb: New file. * gdb.ada/ptype_tagged_param.exp: Use gnat_runtime_has_debug_info, expect a different output if runtime does not have debug info.
2019-12-28Automatic date update in version.inGDB Administrator1-1/+1
2019-12-27Remove dead code from TUITom Tromey3-58/+6
I found some dead code in the TUI -- some using #if 0, and some commented-out code. There's no reason to keep this, so this patch removes it. gdb/ChangeLog 2019-12-27 Tom Tromey <tom@tromey.com> * tui/tui-source.c (tui_source_window::do_scroll_vertical): Remove commented-out code. * tui/tui.c: Remove #if 0 code. Change-Id: Ie00933b2ba498417ce22e5da3f62f5a40c234f33
2019-12-27Reorder an "if" in print_disassemblyTom Tromey2-7/+7
I noticed that print_disassembly has two #if blocks for TUI code, where one would do. This patch rearranges the code slightly to remove a #if. gdb/ChangeLog 2019-12-27 Tom Tromey <tom@tromey.com> * cli/cli-cmds.c (print_disassembly): Reorder "if". Change-Id: I36f3f682f5685b3d9b148da5aed26eb3cc7d598e
2019-12-27Change tui_active to boolTom Tromey3-7/+16
This changes tui_active and tui_finish_init to have type "bool". gdb/ChangeLog 2019-12-27 Tom Tromey <tom@tromey.com> * tui/tui.c (tui_active): Now bool. (tui_finish_init): Likewise. (tui_enable): Update. (tui_disable): Update. (tui_is_window_visible): Update. * tui/tui.h (tui_active): Now bool. Change-Id: Ia159ae9beb041137e34956b77f5bcf4e83eaf2b9
2019-12-27Remove tui_gen_win_info::viewport_heightTom Tromey6-17/+12
tui_gen_win_info::viewport_height is only used in a couple of spots, and is redundant with "height". This patch removes viewport_height. gdb/ChangeLog 2019-12-27 Tom Tromey <tom@tromey.com> * tui/tui-source.c (tui_source_window::maybe_update): Update. * tui/tui-regs.c (tui_data_window::display_registers_from): Update. * tui/tui-layout.c (tui_gen_win_info::resize): Update. * tui/tui-data.h (struct tui_gen_win_info) <viewport_height>: Remove. * tui/tui-command.c (tui_cmd_window::resize): Update. Change-Id: I020e026fbe289adda8e2fdfebca91bdbdbc312e8
2019-12-27x86: adjust ignored prefix warning for branchesJan Beulich5-14/+27
There's no reason to not also issue them in Intel syntax mode, and it can be quite helpful to mention the actual insn (after all there can be multiple on a single line).
2019-12-27x86-64: correct / adjust prefix emissionJan Beulich10-63/+72
First and foremost REX must come last. Next JumpInterSegment branches can't possibly have a REX prefix, as they're consistently CpuNo64. And finally make BND prefix handling in output_branch() consistent with that of other prefixes in the same function, and make its placement among prefixes consistent with output_jump() (which, oddly enough, still isn't the supposedly canonical order specified by the *_PREFIX definitions).
2019-12-27x86-64: fix Intel64 handling of branch with data16 prefixJan Beulich8-27/+85
The expectation of x86-64-branch-3 for "call" / "jmp" with an obvious direct destination to translate to an indirect _far_ branch is plain wrong. The operand size prefix should have no effect at all on the interpretation of the operand. The main underlying issue here is that the Intel64 templates of the direct branches don't include Disp16, yet various assumptions exist that it would always be there when there's also Disp32/Disp32S, toggled by the operand size prefix (which is being ignored by direct branches in Intel64 mode). Along these lines it was also wrong to base the displacement width decision solely on the operand size prefix: REX.W cancels this effect and hence needs taking into consideration, too. A disassembler change is needed here as well: XBEGIN was wrongly treated the same as direct CALL/JMP, which isn't the case - the operand size prefix does affect displacement size there, it's merely ignored when it comes to updating [ER]IP.
2019-12-27x86: consolidate Disp<NN> handling a littleJan Beulich8-167/+180
In memory operand addressing, which forms of displacement are permitted besides Disp8 is pretty clearly limited - outside of 64-bit mode, Disp16 or Disp32 only, depending on address size (MPX being special in not allowing Disp16), - in 64-bit mode, Disp32s or Disp64 without address size override, and solely Disp32 with one. Adjust assembler and i386-gen to match this, observing that templates already get adjusted before trying to match them against input depending on the presence of an address size prefix. This adjustment logic gets extended to all cases, as certain DispNN values should also be dropped when there's no such prefix. In fact behavior of the assembler, perhaps besides the exact diagnostics wording, should not differ between there being templates applicable to 64-bit and non-64-bit at the same time, or there being fully separate sets of templates, with their DispNN settings already reduced accordingly. This adjustment logic further gets guarded such that there wouldn't be and Disp<N> conversion based on address size prefix when this prefix doesn't control the width of the displacement (on branches other than absolute ones). These adjustments then also allow folding two MOV templates, which had been split between 64-bit and non-64-bits variants so far. Once in this area also - drop the bogus DispNN from JumpByte templates, leaving just the correct Disp8 there (compensated by i386_finalize_displacement() now setting Disp8 on their operands), - add the missing Disp32S to XBEGIN. Note that the changes make it necessary to temporarily mark a test as XFAIL; this will get taken care of by a subsequent patch. The failing parts are entirely bogus and will get replaced.
2019-12-27Make symbol_set_names a member functionChristian Biesinger14-81/+106
This also renames it to make it clearer that this is not a cheap function (to compute_and_set_names). Also renames name to m_name to make the implementation of the renamed function more readable. Most of the places that access sym->m_name directly were also changed to call linkage_name () instead, to make it clearer which name they are accessing. gdb/ChangeLog: 2019-12-26 Christian Biesinger <cbiesinger@google.com> * ada-lang.c (ada_decode_symbol): Update. * buildsym.c (add_symbol_to_list): Update. * coffread.c (process_coff_symbol): Update. * ctfread.c (ctf_add_enum_member_cb): Update. (new_symbol): Update. (ctf_add_var_cb): Update. * dwarf2read.c (fixup_go_packaging): Update. (dwarf2_compute_name): Update. (new_symbol): Update. * jit.c (finalize_symtab): Update. * language.c (language_alloc_type_symbol): Update. * mdebugread.c (new_symbol): Update. * minsyms.c (minimal_symbol_reader::record_full): Update. (minimal_symbol_reader::install): Update. * psymtab.c (print_partial_symbols): Update. (psymbol_hash): Update. (psymbol_compare): Update. (add_psymbol_to_bcache): Update. (maintenance_check_psymtabs): Update. * stabsread.c (define_symbol): Update. * symtab.c (symbol_set_names): Rename to... (general_symbol_info::compute_and_set_names): ...this. (general_symbol_info::natural_name): Update. (general_symbol_info::search_name): Update. (fixup_section): Update. * symtab.h (struct general_symbol_info) <name>: Rename to... <m_name>: ...this. <compute_and_set_names>: Rename from... (symbol_set_names): ...this. (SYMBOL_SET_NAMES): Remove. (struct symbol) <ctor>: Update. Change-Id: I8da1f10cab4e0b89f19d5750fa4e6e2ac8d2b24f
2019-12-27Automatic date update in version.inGDB Administrator1-1/+1
2019-12-26Add a NEWS entry for multithreaded symbol loadingChristian Biesinger2-0/+9
Now that we enabled it by default, this change adds a NEWS entry for it. gdb/ChangeLog: 2019-12-26 Christian Biesinger <cbiesinger@google.com> * NEWS: Mention that multithreaded symbol loading is now on by default. Change-Id: Ic344596a3b1b6e612a0071a50df49588b833c15d
2019-12-26Avoid ubsan bug complaining about &p->fieldAlan Modra9-25/+44
I reckon it's quite OK to write &p->field in C when p might be NULL, and lots of old C programmers probably agree with me. However, ubsan disagrees and so do some people I respect. I suspect C++ influence is to blame for the ubsan behaviour. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92634. So far no one has educated me as to why I'm wrong to claim that there isn't anything in the C standard to say that p->field is always (*p).field. Note 79 doesn't quite do that because it doesn't cover null pointers. If there was such an equivalence then you could claim &p->field has a null pointer reference when p is NULL, even though no C compiler would ever dereference p. Anyway, to silence ubsan I'm going to apply the following though I prefer to avoid casts when possible. And I'm using (void *) deliberately because this is C, not C++! * ldlang.c (lang_output_section_find_by_flags): Don't use &p->field when p might be NULL. * ldelf.c (output_rel_find, ldelf_place_orphan): Likewise. (insert_os_after, lang_insert_orphan, lookup_name): Likewise. (strip_excluded_output_sections, lang_clear_os_map): Likewise. (lang_check, lang_for_each_input_file): Likewise. (lang_reset_memory_regions, find_replacements_insert_point): Likewise. (find_rescan_insertion, lang_propagate_lma_regions): Likewise. (lang_record_phdrs): Likewise. * emultempl/alphaelf.em (alpha_after_open): Likewise. * emultempl/mmo.em (mmo_place_orphan): Likewise. * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise. * emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise. * emultempl/ppc32elf.em (ppc_after_check_relocs): Likewise. * emultempl/spuelf.em (spu_before_allocation): Likewise. (embedded_spu_file): Likewise.